ch6_定时器及应用_第1页
ch6_定时器及应用_第2页
ch6_定时器及应用_第3页
ch6_定时器及应用_第4页
ch6_定时器及应用_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章 定时器及应用,定时/计数器是一种应用非常广泛的硬件逻辑电路,它有两种不同的工作方式-“定时”、“计数”。,6.1 定时器概述,1、定时:产生一个标准的时间间隔(对等间隔脉冲计数)。 如20mS,100mS或1000mS等。单片机使用这种方式可以产生一个符合某一要求的脉冲方波(如下图)。,2、计数:对外部的事件(脉冲)进行统计。 很明显外部事件的发生是随机的,单片机不可能预知外部事件何时发生,但能对间隔可能不相等的脉冲进行统计计数。当达到所要求的计数值时,单片机进行相应的操作。,定时/计数器的基本模型,TF,计数脉冲 CP,溢出标志,8位的加1计数器,8051定时/计数器结构,8051定时/计数器的工作原理 (1):何时控制启动计数器? 思考: (2):如何控制是定时还是计数? (3):如何控制定时/计数的长短?,由启动控制开关TR来控制计数器是否计数: 当TR=0时:计数器计数脉冲被断开,所以停止工作; 当TR=1时:计数器的计数脉冲输入端与信号源接通, 计数器开始计数(工作)。 定时、计数方式由C/T控制。 当C/T=1时:多路器选择的是系统时钟(fosc/12), 即定时方式; 当C/T=1时:多路器选择的是外部(T0或T1引脚)输入, 即计数方式。 定时/计数的长短由初值寄存器中的计数初值来设定。,作定时器用: 每个机器周期计数器加1,计数速率是fosc/12. 作计数器用:用2个机器周期识别一个脉冲下降沿,故最快计数速率是fosc/24.,定时/计数器的四种工作模式,模式0 :13位计数器模式 模式1 :16位计数器模式 模式2 :8位自动重装初值模式 模式3 :拆分/组合扩展8位模式,1、模式0:13位计数器模式 13位计数器在某一个初值的基础上加1计数,当计数器计满为全“1”,再来一个计数脉冲时,就产生一个“溢出中断信号”TF1=1。,GATE=0时,TR1=1开始定时/计数; GATE=1时(门控方式), TR=1且INT1=1时,开始工作.此种方式主要用于测量加在INT1脚上一个正脉冲的脉宽。,2、模式1 :既16位计数器模式(以T1为例),由TL1做计数器,TH1做初值寄存器, 工作前TL1,TH1分别预置相同的初值。 TL1计数时, 当产生溢出的同时, 将TH1中的初值自动重装TL1。TL1继续计数,此模式主要用于做串行口波特率发生器。,3、模式2 : 8位自动重装初值模式,在这种模式中,单片机将T0和T1重新进行“拆分、组合”,将T0变为由TH0,TL0组成的两个独立的8位定时/计数器。 将T1设定在模式3则相当于停止工作。,在模式3时的模式中定时器T0的结构图,4、模式3 拆分/组合扩展模式,模式3下T0(TH0,TL0)及T1的各自特点: 1、 TH0计数脉冲来自内部fosc,所以它只能处于”定时”方式; 2、TH0分别借用了定时器T1的TR1和TF1为自己服务,使TH0能象TL0那样用TR1启动定时,并用TF1来作为TH0的溢出中断的标志; 3、 此时,由于T1缺少了启动控制信号TR1和溢出中断标志TR1,那么在模式3时,T1是如何启动和工作? 没有溢出中断标志TF1,则T1就不用中断方式工作(实际上连查询也不行);没有启动控制信号TR1,可以让它在模式3之前就开始工作,并且让它事先设定为自动重装模式. 4、 模式3就是将单片机原有的T0,T1两个计数器变成三个独立的计数器,其中T1要事先设定为模式2(串行口的波特率发生器)并启动起来。 注:8051系统只有T1能作串行口的波特率发生器。,模式3时T0,T1的电路结构,定时/计数器4种模式比较,6.2 定时器的控制,6.2.1 工作模式寄存器TMOD,6.2.2控制寄存器TCON,6.3 定时器四种模式应用,6.3.1模式0应用,模式0定时时间计算公式:,例1:设定时器T0选择工作模式0,定时时间为1ms,fosc=6MHz,试确定T0初值,计算最大定时时间. 解:X=8192-500=7692=1111000001100B (TH0)=0F0H,(TL0)=0CH 最大定时T=16.384ms 例2:设T0工作在模式0,定时时间为1ms,fosc=6MHz.在P1.0引脚输出2ms方波,编写其定时功能程序 解:(1)分析: (2)选择工作方式:计算T0初值X (3)程序: a.采用中断方式 b.采用查询方式,ORG 0000H AJMP MAIN ORG 000BH AJMP ITOP ORG 0100H MAIN: MOV SP,#60H ACALL PTOMD HERE: AJMP HERE PTOMD: MOV TMOD,#00H MOV TL0,#0CH MOV TH0,#F0H SETB TR0 SETB ET0 SETB EA RET,;中断服务程序 ORG 0120H ITOP: MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 RETI,查询方式: ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#00H MOV TL0,#0CH MOV TH0,#0F0H SETB TR0 LOOP: JBC TF0,NEXT SJMP LOOP NEXT: MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 SJMP LOOP,6.3.2 模式1应用,模式1定时时间计算公式:,例3:用定时器T1产生一个50hz的方波,由P1.1输出,程序使用查询方式,fosc=12MHz. 解:(1)求定时器初值:T=1/50=0.02s,T1定时10ms,初值X=D8F0h (2)程序: MOV TMOD,#10H SETB TR1 LOOP: MOV TH1,#0D8H MOV TL1,#0F0H JNB TF1,$ CLR TF1, CPL P1.1 SJMP LOOP,6.3.3 模式2应用,模式2定时时间公式:,例4:当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500us的同步脉冲。 解: (1) 模式选择: 先设T0为模式2,外部计数方式(TMOD:06H) 当P3.4负跳变时,T0计数器加1溢出,改为T0为500us定时工作方式(TMOD:02H) (2) 初值计算: 外部计数方式: X+1=28,X=0ffh 定时方式:X=(28-250)=6h (3) 程序:,START: MOV TMOD,#06H MOV TH0,#0FFH MOV TL0,#0FFH SETB TR0 LOOP1: JBC TF0,PTFO1 SJMP LOOP1 PTFO1: CLR TR0 MOV TMOD,#02H MOV TL0,#06H MOV TH0,#06H CLR P1.0 SETB TR0 LOOP2: JBC TF0,PTFO2 SJMP LOOP2 PTFO2: SETB P1.0 CLR TR0 SJMP START,例5: 利用T1的模式2对外部信号计数,要求每计满100次,将P1.0端取反.,解: (1)模式选择: 模式2,计数方式 (2)计算T1的初值:156(9CH) (3)程序 MAIN:MOV TMOD,#60H MOV TL1,#9CH MOV TH1,#9CH MOV IE,#88H SETB TR1 HERE:SJMP HERE ORG 001BH CPL P1.0 RETI,6.3.4 模式3应用 例6: 某用户系统中已使用了两个外部中断源,并置定时器T1工作在模式2,作为波特率发生器,现要求再增加一个外部中断源,并由P1.0输出一个5khz的方波,fosc=12Mhz。,根据输出信号频率= 5khz,则周期=200us. 由此得: 定时时间=100us.,(3)程序: MOV TMOD,#27H MOV TL0,#0FFH MOV TH0,#156 MOV TH1,#data MOV TL1,#data MOV TCON,#55H MOV IE,#9FH TL0INT: MOV TL0,#0FFH RETI TH0INT: MOV TH0,#156 CPL P1.0 RETI,解: (1)模式选择: 将T0工作在模式3计数方式,把T0的引脚作为附加的外部中断端,TL0作计数用,TH0作定时用。 (2)初值计算: TL0=ffh TH0 =256-100*12/12=156,6.3.5 综合应用举例,例7:设时钟频率为6Mhz,试编写利用T0产生的1s定时的程序 例8:设计实时时钟程序,7解:(1)定时器T0工作模式的确定 模式0最长可定时16.384ms 模式1最长可定时131.072ms 模式2最长可定时512us 题中要求定时1s,可选模式1,每间隔100ms中断1次,中断10次为1s (2)求计算值X (216-X)12/6106=10010-3s X=15 536 =3CB0H 因此(TL0)=0B0H;(TH0)=3CH (3)程序,ORG 0000H LJMP MAIN ORG 000BH AJMP SERVE ORG 2000H MAIN: MOV SP,#60H MOV B,#0AH MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 SETB ET0 SETB EA SJMP $,SERVE:MOV TL0,#0B0H MOV TH0,#3CH DJNZ B,LOOP CLR TR0 LOOP: RETI END,8解:(1) 实现时钟计时的基本方法 a、计算计数初值,时钟计时的最小单元是秒,可以方式1,定时时间为100ms,计数溢出10次得到时钟计时最小单位1秒 b、采用中断方式进行溢出次数的累计 c、从秒到分和从分到时的计时是通过累加和数值比较实现 (2)程序,ORG 0000H AJMP MAIN ORG 001BH AJMP SERVE MAIN: MOV TMOD,#10H MOV 20H,#0AH CLR A MOV 30H,A ; 时单元清0 MOV 31H,A ;分单元清0 MOV 32H,A ;秒单元清0 SETB ET1 SETB EA MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 SJMP $,SERVE: PUSH PSW PUSH ACC MOV TH1,#3CH MOV TL1,#0B0H DJNZ 20H,RETUNT MOV 20H,#0AH MOV A,#01H ADD A,32

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论