《高级电工-单片机》07-10.ppt_第1页
《高级电工-单片机》07-10.ppt_第2页
《高级电工-单片机》07-10.ppt_第3页
《高级电工-单片机》07-10.ppt_第4页
《高级电工-单片机》07-10.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机 原理与实用技术,主讲教师:,黄 鹏,为高级电工班的学员提供优秀的教学资源!,为高级电工班的学员提供优秀的教学资源!,7.1 定时计数器结构与控制,可以利用延时程序来实现,称软件定时。,但延时程序运行时占用了CPU,使该时间内单片机系统无法进行其他工作,这样不但大大降低了工作效率,并且有时也是难以进行的。,定时与延时,7.1 定时计数器结构与控制,定时计数器进行定时计数工作时无须CPU的参与而独立进行,这样就解放了CPU,提高了工作效率和系统功能,也简化了系统的设计。,定时与计数,7.1 定时计数器结构与控制,图7-1 定时器计数器硬件结构框图,7.1 定时计数器结构与控制 7.1.1

2、结构及工作原理,1.计数功能,当CT=1时,计数器功能; 计数器与单片机外输入信号引脚T0或T1(即P3.4、P3.5)接通,此时,计数器对由T0或T1引脚输入的外部脉冲信号进行计数(下降沿触发),定时计数器以计数方式工作。,7.1 定时计数器结构与控制 7.1.1 结构及工作原理,定时功能和计数功能的机理是一样的,都是计数操作。对于定时功能,计数信号来自单片机内部,其周期是定值并且是预先知道的,所以根据计数器累计的脉冲个数,即可计算出时间。,2.定时功能,7.1 定时计数器结构与控制 7.1.1 结构及工作原理,某单片机采用12 MHz晶振器,则计数频率为1 MHz,即计数器每加1,为1微秒

3、。若计数器的内容增加1000,延时时间则为1毫秒。,2.定时功能,举例,7.1 定时计数器结构与控制 7.1.2 控制寄存器,每个定时计数器各有一个16位计数器T0、T1。 T0由TL0(低8位)和TH0(高8位)组成,地址分别为8AH、8CH, T1由TL1和TH1组成,地址为8BH、8DH。,1.定时/计数器T0、T1,7.1 定时计数器结构与控制 7.1.2 控制寄存器,在定时计数工作之前用户预置一个初值,工作时在脉冲触发下进行加1计数,当计数器达到最大值即“满”时,溢出,突变为O,并同时向CPU发出中断申请。预置的初值不同,定时的时间长度便不同。,定时/计数器如何发出中断请求?,1.定

4、时/计数器T0、T1,7.1 定时计数器结构与控制 7.1.2 控制寄存器,计数器如何发出中断请求?,2.定时器的控制寄存器(TCOM),工作方式控制字(TCOM),7.1 定时计数器结构与控制 7.1.2 控制寄存器,当计数器计满溢出(计数器内容跃变为00H)时,该位由硬件自动置1。,2.定时器的控制寄存器(TCOM),7.1 定时计数器结构与控制 7.1.2 控制寄存器,若此时对应的定时计数器中断开放(EA=1,ET=1),则定时计数器工作在中断方式下,TF位作为中断标志发出中断请求, 条件满足时引发中断,CPU转向000BH(T0)或001BH(T1)的定时中断入口地址执行定时中断处理程

5、序,同时自动将TF清零。,TF0、TF1为计数溢出标志位,TF0、TF1为计数溢出标志位,2.定时器的控制寄存器(TCOM),7.1 定时计数器结构与控制 7.1.2 控制寄存器,若此时相应的定时中断未开放,工作在查询方式下,此位作为状态位供查询。应注意查询有效(为1)后,应用软件方法及时将该位清零。,7.1 定时计数器结构与控制 7.1.2 控制寄存器,计数器如何发出中断请求?,TF0、TF1为计数溢出标志位,TR0、TR1为定时/计数运行标志位,2.定时器的控制寄存器(TCOM),当工作方式控制寄存器TMOD中 GATE=0时: TR0(TR1)=0,定时计数器0(1)停止工作; TR0(

6、TR1)=1,定时计数器0(1)开始工作。,7.1 定时计数器结构与控制 7.1.2 控制寄存器,TF0、TF1为计数溢出标志位,TR0、TR1为定时/计数运行标志位,2.定时器的控制寄存器(TCOM),7.1 定时计数器结构与控制,GATE为门控制信号位。,3.工作方式控制寄存器(TMOD),7.1 定时计数器结构与控制,GATE为门控制信号位。,3.工作方式控制寄存器(TMOD),M1M0为工作方式选择位。 当 M1M0=00 时,工作方式0; 当 M1M0=01 时,工作方式1; 当 M1M0=10 时,工作方式2; 当 M1M0=11 时,工作方式3。,图72 13位计数器,7.1 定

7、时计数器结构与控制,当GATE=0时,定时器由TCON中的TR位启动或停止定时计数; 当GATE=1时,定时器由TR和外中断请求信号共同控制启动或停止。,3.工作方式控制寄存器(TMOD),GATE为门控制信号位,7.2定时/计数器4种工作方式,M1M0为工作方式选择位。 当 M1M0=00时,工作方式0; 当 M1M0=01时,工作方式1; 当 M1M0=10时,工作方式2; 当 M1M0=11时,工作方式3。,T0共有4种工作方式,T1只有前3种工作方式,M1M0为工作方式选择位。 当 M1M0=00时,工作方式0; 当 M1M0=01时,工作方式1; 当 M1M0=10时,工作方式2;

8、当 M1M0=11时,工作方式3。,7.2定时/计数器4种工作方式,图7-2 13位计数器,7.2.1 工作方式O(13位计数定时),若为计数工作,则计数值的范围为:18192(213)。 若为定时工作,定时时间计算公式为: (213-T0初值)晶振周期12=(213-T0初值)12/fosc=(213-T0初值)机器周期 fosc为晶振频率。设fosc=12 MHz, 则延时范围为:18192s。,当M1M0=00时,工作方式0,工作过程为:,7.2定时/计数器4种工作方式,图7-3 16位计数器,7.2.2 工作方式1(16位计数定时),工作过程与方式0完全一样。MCS-51单片机之所以重

9、复设置几乎完全一样的方式0和方式1,是出于与MCS-48单片机兼容的考虑,因为MCS-48的定时/计数器就是13位计数结构。,当M1M0=01时,工作方式1,工作过程为:,7.2定时/计数器4种工作方式,图7-3 16位计数器,7.2.2 工作方式1(16位计数定时),若为计数工作时,计数范围为:165536(216)。 若为定时工作时,定时时间计算公式为: (216-T0初值)晶振周期12=(216-T0初值)12fosc =(216-T0初值)机器周期 若fosc=12 MHz,延时范围为:165536(216)s。,当M1M0=01时,工作方式1,工作过程为:,7.2定时/计数器4种工作

10、方式,7.2.2 工作方式1(16位计数定时),例71某单片机晶振频率fosc=12 MHz,使用定时器产生周期为 1ms 的等宽方波,由P1.0端输出。 使用定时器1,以工作方式0,采用查询方式; 使用定时器0,以工作方式1,采用中断方式。 解 (1)使用定时器1,工作方式0,查询方式 计算计数初值TH1、TL1 要产生1 ms的等宽方波,只要使用P1.0端交替输出宽度各为500s的高、低电平即可。定时时间为500s,设计数初值为X,由式(71)可得(8192-500=7692) 解得X=7692,转化为二进制为:1111000001100取高8位放入TH1,低5位放人TL1,则TH1=0F

11、OH,TL1=0CH。,当M1M0=01时,工作方式1,7.2定时/计数器4种工作方式,7.2.2 工作方式1(16位计数定时),工作方式控制寄存器初始化 定时器1定时功能,C/T=0;无INT0控制,GATE=0;工作方式为0,M1M0=00, 定时器0不用,有关位均设为0。因此,工作方式控制寄存器的内容为00H。 TR及IE的使用 因为查询方式,要关闭中断,IE为0。 启动计数时,TR1要置1。,当M1M0=01时,工作方式1,例71,7.2定时/计数器4种工作方式,7.2.2 工作方式1(16位计数定时),程序设计(查询方式) MOV T0MD,#00H ;设置T1为工作方式0 MOV

12、TH1,#0FOH ;设置计数初值 MOV TL1, #0CH MOV IE,#00H ;禁止中断 SETB TR1 ;启动定时 LOOP: JNB TF1,LOOP ;查询计数溢出 CPL P1.0 ;输出取反 MOV TH1,#0FOH ;重新设置计数初值 MOV TL1,#0CH CLR TF1 ;清除计数溢出标志位 AJMP LOOP,当M1M0=01时,工作方式1,例71,7.2定时/计数器4种工作方式,7.2.2 工作方式1(16位计数定时),(2)使用定时器0,工作方式1,中断方式: 计算计数初值,由式(72)得: 所以TH0=0FEH,TL0=0CH。 TMOD寄存器初始化:

13、(TMOD)=01H IE及IR的使用:采用中断方式,要使EA=1及ET0=1开放中断。由TR0=1启动定时。,当M1M0=01时,工作方式1,例71,7.2定时/计数器4种工作方式,7.2.2 工作方式1(16位计数定时),主程序: MOV TMOD,#01H ;定时器0工作方式1 MOV TH0,#0FEH ;设置计数初值 MOV TL0, #0CH SETB EA ;开放中断 SETB ET0 ;开放定时0中断 SETB TR0 ;定时开始 SJMP $ ;等待中断 中断服务程序: ORG 000BH ;T0中断源入口地址 CPL P1.0 ;输出取反 MOV TH0,#0FEH ;重新

14、设置计数初值 MOV TL0,#0CH RETI,当M1M0=01时,工作方式1,例71,程序设计如下:,7.2定时/计数器4种工作方式,7.2.2 工作方式1(16位计数定时),当M1M0=01时,工作方式1,例71,中断入口地址说明,7.2定时/计数器4种工作方式,7.2.2 工作方式1(16位计数定时),使用定时计数器延时,只要将定时计数器初始化后,即由硬件自动完成延时工作,程序中无循环延时的指令; 在查询方式中,CPU要不断查询溢出标志位TF的状态,占用了CPU,致使CPU效率不高。在中断方式中,定时器的定时CPU不予理睬,只要把程序之中的SJMP $循环语句用实现其他功能的程序段代替

15、,单片机就可同时进行其他工作; 定时计数器定时工作时,一般无须INT参与控制,GATE设置为0,仅由TR启动定时器工作; 该例中,由于新一次计数要重新设置计数初值等,造成定时停顿,使定时时间增加了若干微秒。,当M1M0=01时,工作方式1,说明:,7.2定时/计数器4种工作方式,7.2.2 工作方式1(16位计数定时),当M1M0=01时,工作方式1,例72,利用定时器测定外部脉冲的频率。,7.2定时/计数器4种工作方式,7.2.2 工作方式1(16位计数定时),当M1M0=01时,工作方式1,例72,利用定时器测定外部脉冲的频率。,7.2定时/计数器4种工作方式,7.2.2 工作方式1(16

16、位计数定时),当M1M0=01时,工作方式1,例72,利用定时器测定外部脉冲的频率。,高频脉冲频率测定的程序如下: 0RG 0000H SJMP MAIN ORG 001BH ;T1中断源入口地址 CLR TR0 MOV IE,#00H MOV BUF,TL0 ;将频率(单位为 ;kHz)存入缓冲单元 RETI,7.2定时/计数器4种工作方式 7.2.2 工作方式1,例72 利用定时器测定外部脉冲的频率。,0RG 0030H MAIN:MOV TMOD,#15H ;T0为计数方式 ;T1为定时方式 MOV TL0,#00 MOV TL1,#0CH ;设fosc,=6 MHz的定时1 ms初值

17、MOV TH1,#0FEH MOV IE,#88H ;开定时1中断允许 MOV TCON,#50H ;启动计数 SJMP:$,7.2定时/计数器4种工作方式 7.2.2 工作方式1,例72 利用定时器测定外部脉冲的频率。,低频脉冲的频率测定的程序如下: 0RG 0000H AJMP MAIN 0RG 0003H CLR TR0 MOV IE,#00H MOV BUF,TL0 RETI,7.2定时/计数器4种工作方式 7.2.2 工作方式1,例72 利用定时器测定外部脉冲的频率。,低频脉冲的频率测定的主程序: 0RG 0030H MAIN:MOV TMOD,#0DH ;GATE=1,外部计数,

18、;工作方式1 MOV TL0,#00 SETB IT0 MOV IE,#81H ;开外中断O SETB TR0 ;启动计数 SJHP $,7.2定时/计数器4种工作方式 7.2.2 工作方式1,例72 利用定时器测定外部脉冲的频率。,由例71、例72体会GATE、INT、TR的控制逻辑及应用场合; 体会例72中两定时计数器配合工作的应用; 体会例72中定时计数器与中断配合工作应用; 因定时计数工作由硬件完成,程序十分简单。,说明:,7.2定时/计数器4种工作方式 7.2.2 工作方式1,例73利用T0门控位GATE测试INT0引脚上出现的正脉冲的宽度。 设fosc=6 MHz,脉冲宽度小于10

19、0 ms。,解分析: 因要测INT0引脚上的信号,故必使GATE=1,并先将TR0置1,将定时计数的启动任务交由INT0完成。 一旦INT0引脚出现高电平即计数开始。 设置INT0为脉冲中断触发方式,则当脉冲高电平结束下降到低电平时,触发中断,计数结束。 此时由计数器的值即可得输出脉冲高电平宽度。,例73,7.2定时/计数器4种工作方式 7.2.2 工作方式1,例73利用T0门控位GATE测试INT0引脚上出现的正脉冲的宽度。 设fosc=6 MHz,脉冲宽度小于100 ms。,例73,设特定定时计数器的初值为O,程序如下: 0RG 0000H SJMP MAIN 0RG 0003H SJMP

20、 INT,0RG 0030H MAIN:SETB IT0 MOV TMOD,#09H ;T0定时方式1,内部计数,GATE置1 MOV TL0,#00H ;置T0初值为0 MOV TH0,#00H SETB TR0 MOV IE,#81H SJMP $,7.2定时/计数器4种工作方式 7.2.2 工作方式1,例73,0RG 0060H INT:CLR TR0 ;停止T0计数 MOV R0,#20H MOV A,TL0 ;将计数值乘以2得脉冲高电平宽度 CLR C ;计时=计数机器周期 RLC A ;fosc=6MHz,机器周期为2S MOVX R0,A MOV A,TH0 ;输出到外部20H,

21、21H,22H端口 RLC A INC R0 MOVX R0,A CLR A RLC A INC R0 MOVX R0,A RETI END,7.2定时/计数器4种工作方式 7.2.2 工作方式1,例73利用T0门控位GATE测试INT0引脚上出现的正脉冲的宽度。 设fosc=6 MHz,脉冲宽度小于100 ms。,此例中,被测脉冲INT0信号连接引脚,即为启动定时计数信号; 此例中定时计数器为计数工作方式,最终测定的物理量是时间,但不是事先设定的时间(不是定时); 注意脉冲宽度与工作方式的匹配,若为工作方式0,则较难实现测试任务。,说明:,7.2定时/计数器4种工作方式,7.2.3 工作方式

22、2 (自动加载8位计数定时),以TL0为8位计数器,以TH0为预置寄存器。 初始化时把计数初值同时分别装入TL0和TH0中,计数溢出时,单片机自动将TH0内值加载到TL0中进行下一轮定时过程,而不必用软件人为地重新设置初值。方式2工作过程如下: TL0从初始值开始加1计数; 当TL0计满溢出时,向TF0进位,发出中断申请; 单片机自动将TH0中数值加载到TL0中; 重复从重新开始。,说明:,图76自动加载8位计数定时,7.2定时/计数器4种工作方式,7.2.3 工作方式2 (自动加载8位计数定时),自动重复加载初值,即方便使用,也使定时更为精确。但因为是8位计数,计数最大值为256,故定时时间

23、较短。,设计数初值为X,则定时时间为:(28-X)机器周期,例74使用定时器0以工作方式2,由P1.6输出周期为100s连续等宽方波。已知晶振频率为12MHz。 解计算计数初值 等宽方波周期100s,定时时间应为50s,设计数初值为X,7.2定时/计数器4种工作方式,7.2.3 工作方式2 (自动加载8位计数定时),7.2定时/计数器4种工作方式,7.2.3 工作方式2 (自动加载8位计数定时),中断服务子程序设计如下: ORG 000BH CPL P1.6 RETI,ORG 1000H MAIN:MOV TMOD,#02H MOV TH0,#0CEH MOV TL0,#0CEH SETB E

24、A SETB ET0 SETB TR0 SJMP $,主程序设计如右:,例75将定时器0改用于外部中断。 解若定时器0在方式2下工作,初值为0FFH的话,且设置为外部计数方式,T0端接外部中断源,当外中断源发出有效信号时,即可使计数器溢出产生中断,具体方法如下: 将扩展的外部中断请求信号接T0端; 置定时计数器0为工作方式2; 将TH0及TL0初值均设为0FFH; 将扩展的外中断服务程序写入定时/计数器0中断入口地址000BH起的RAM单元中。,7.2定时/计数器4种工作方式,7.2.3 工作方式2 (自动加载8位计数定时),7.2定时/计数器4种工作方式,7.2.3 工作方式2 (自动加载8

25、位计数定时),MOV TMOD,#06H MOV TH0,#0FFH MOV TL0,#OFFH SETB EA SETB ET0 SETB TR0,初始化程序设计如右:,方式3只适应于定时计数器0。如果强制将定时计数器1设置为方式3(M1M0=11),则将与TR1=0效果相同,即关闭了定时/计数器1。 定时计数器0在工作方式3下时,被拆为两个独立的8位计数器TL0和TH0,其中TL0功能与方式0或1完全相同,既可作计数使用,也可作定时使用。,7.2定时/计数器4种工作方式,7.2.4 工作方式3(双8位计数定时),7.2定时/计数器4种工作方式,7.2.4 工作方式3(双8位计数定时),图7

26、7 双8位计数定时,独立的8位计数器TL0,TL0功能与方式0或1完全相同,既可作计数使用,也可作定时使用。,7.2定时/计数器4种工作方式,7.2.4 工作方式3(双8位计数定时),图77 双8位计数定时,由于TL0独占了定时计数器0的各控制位,TH0只能作为简单的定时器使用,不能对外部脉冲计数,且只好借用定时计数器1的控制位TR1和TF1,即定时的启动和停止由 TR1控制,而计数溢出则使TF1置位。如图77(b)所示。,当定时计数器0在工作方式3下时,定时/计数器1仍可置为方式0、1或2,但由于TR1、 TF1及中断源被定时计数器0占用,此时定时计数器1仅由CT切换定时或计数功能。当计数溢

27、出时,不能产生中断,只能将输出送往串行口,这种情况下,定时计数器1一般用做串行口波特率发生器使用。,7.2定时/计数器4种工作方式,7.2.4 工作方式3(双8位计数定时),使用定时计数器实现以下功能 代替软件延时程序,解放CPU。 输出各种方波。 检测统计外部脉冲数。 检测外部脉冲宽度。,7.3 定时计数器应用实例,7.3 定时计数器应用实例,图78发动机转速检测电路,例76,例76 试用MCS-51单片机处理转速传感器信号,得到发动机转速。,同发动机旋转的飞轮,激光发射,圆孔 (直径很小),输出低电平,解分析:若测定转速传感器输出脉冲的周期就可以计算出其转速,忽略圆孔所占圆周长度,以高电平

28、时间代替脉冲周期。为测定高电平宽度,可将转速传感器输出端与INT0相连。这样,该问题就转化为例73。 【设】晶振频率为6 MHz,指令周期为2s。发动机转速一般在每分钟10006000转之间,每转时间在O.010.06 s之间,计数器计数不超过16位。,7.3 定时计数器应用实例,例76,7.3 定时计数器应用实例,MOV TMOD,#0DH ;设置定时器T0计数方式 ;工作方式为1,并开启GATE MOV TH0,#00 ;TH0、TL0清0 MOV TL0,#00 MOV IE,#81H ;开放外中断O MOV TCON,#11H ;定义外中断0为脉冲触发方式, ;开放TR0,由INT0信

29、号控制定 ;时器其他功能程序段,主程序设计如下:,例76,由INT0中断时TH0 、TL0的值可计算出发动机旋转一周所需要的时间,从而计算出发动机每分钟的转速。 计算过程由INT0中断服务程序完成。中断服务程序从略。 说明:本例也可通过统计单位时间内脉冲的个数得到发动机转过的周数,进而计算出发动机的平均转速。,7.3 定时计数器应用实例,例76,试用定时计数器完成例53中的问题。 解分析:电路如图58所示。设fosc=6MHz 由例53可知,音符1、2、3、4、5、6对应方波电流的半周期分别为:952s,847s,758s714s、637s、568s。由定时器0选用工作方式1,则对应的计数初值

30、分别为:0FE24H、0FE59H、0FE85H、0FE9BH、0FECAH、0FEFAHo 每拍0.8秒可用定时器1控制,因定时器1在工作方式1下最长延长时间为0.13秒。所以可使定时器定时0.1秒,以8个循环实现0.8秒的控制。 定时器1的计数初值为:3CB0H。,7.3 定时计数器应用实例,例77,7.3 定时计数器应用实例,例77,程序如下: ORG 0000H SJMP MAIN 0RG 000BH CPL P1.0 ;输出与音符对应的方波 MOV TH0,#0FEH MOV TL0,A RETI ORG 001BH MOV TH1,#3CH MOV TL1,#0B0H INC R7 ;定时0.1秒 RETI,7.3 定时计数器应用实例,例77,ORG 0050H MAIN:MOV TMOD, #11H ;初始化部分 MOV DPTR,#TAB MOV TH1,#3CH MOV TL1,#OB0H MOV IE,#8AH MOV TCON,#50H

温馨提示

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

评论

0/150

提交评论