1、【单片机知识】第5章-MCS-51单片机内部定时器第第5章章 MCS-51单片机内部单片机内部定时器定时器/计数器计数器 5.1 定时器定时器/计数器概述计数器概述 定时器定时器/计数器计数器实际上是实际上是加加1计数器计数器,当它当它对外部事件对外部事件进行进行计数计数时,由于频率时,由于频率不固定,此时称之为不固定,此时称之为计数器计数器;当它;当它对内对内部部固定频率的机器周期固定频率的机器周期进行计数进行计数时称之时称之为为定时器定时器。振荡器和时序振荡器和时序OSC程序存储器程序存储器4KB ROM数据存储器数据存储器4KB RAM64KB总线总线扩展控制器扩展控制器可编程可编程I/
2、O可编程全双工可编程全双工串行口串行口8051CPU216位位定时器定时器/计数器计数器外时钟源外时钟源内中断内中断外中断外中断控制控制并行口并行口串行通信串行通信外部事件计数外部事件计数 1 MCS-51单片机总体构框图 T0(或或T1)在作在作定时器定时器使用时,输入的时使用时,输入的时钟脉冲由晶振的输出经钟脉冲由晶振的输出经12分频后得到的。分频后得到的。T0(或或T1)在作在作计数器计数器使用时,输入的时使用时,输入的时钟脉冲由外部输入端钟脉冲由外部输入端P3.4(T0)和和P3.5(T1)提供。提供。定时器定时器/计数器的基本结构如图所示。计数器的基本结构如图所示。当加法计数器的初值
3、被设置后,用指令当加法计数器的初值被设置后,用指令改变特殊功能寄存器改变特殊功能寄存器TMOD和和TCON的的内容,就会在下一条指令的第一个机器内容,就会在下一条指令的第一个机器周期的周期的S1P1时刻按照设定方式自动进行时刻按照设定方式自动进行工作。工作。初值的设置方法:初值的设置方法:设计数器计数的最大值为设计数器计数的最大值为M,计数值为,计数值为N,初值为初值为X,则,则X的计算方法为:的计算方法为:计数器计数器工作方式时:工作方式时:X=M-N 定时器定时器工作方式时:工作方式时:X=M-定时时间定时时间/T T=12/晶振频率晶振频率 5.2 定时器定时器/计数器的控制字计数器的控
4、制字 定时器定时器/计数器有计数器有4种工作模式种工作模式,由,由TMOD设置设置并由并由TCON控制控制。定时器定时器/计数器的计数器的工作模式寄存器工作模式寄存器TMOD:特殊功能寄存器特殊功能寄存器TMOD的地址为的地址为89H,它不能位寻址,在设置时一次,它不能位寻址,在设置时一次写入。写入。TMOD各位的含义D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0定时器定时器1(T1)定时器定时器0(T0)门控信号门控信号位位定定/计数方式选计数方式选择位:择位:C/T0,为定,为定时方式时方式C/T1,为计,为计数方式数方式模式选择位:模式选择位:M1 M0 模
5、式模式 0 0 0 0 1 1 1 0 2 1 1 3 (T1无模式无模式3)定时器控制寄存器定时器控制寄存器TCON:定时器控制寄存器定时器控制寄存器TCON(地址为(地址为88H)除可字节寻址外,各位还可以位寻址。除可字节寻址外,各位还可以位寻址。D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0IE1IT1IE0IT0与中断有关,见第与中断有关,见第4章章T0,T1的的运行控制运行控制位,通过软件位,通过软件置置1后定时器后定时器/计数器才计数器才能正常工作。能正常工作。GATE=0时,则只要时,则只要TR0(或或TR1)置置1,T0(或或T1)就被选通,与就被选通,与INT
6、0和和INT1的电平的电平状态无关。状态无关。GATE=1时,不仅要时,不仅要TR0(或或TR1)置置1,还,还必须必须INT0和和INT1的电平为高,的电平为高,T0(或或T1)才才能被选通。能被选通。5.3 定时器定时器/计数器工作模式计数器工作模式 51系列单片机的定时器系列单片机的定时器/计数器计数器T0和和T1对对M1和和M0位的设置对应于四种工作模位的设置对应于四种工作模式,即式,即模式模式0、模式模式1、模式模式2、模式模式3。在。在模式模式0、模式、模式1和模式和模式2时,时,T0和和T1的工作的工作情况相同。情况相同。工作模式工作模式0 模式模式0是选择是选择16位定时位定时
7、/计数器(计数器(T0或或T1)的的高高8位位和和低低5位位组成的一个组成的一个13位位定时器定时器/计数器。计数器。C/T=0时,为定时工作方式。时,为定时工作方式。定时时间定时时间为:为:t=(213-T0初值初值)振荡周期振荡周期12 C/T=1时,为计数工作方式,计数最大长度为时,为计数工作方式,计数最大长度为 2138192个外部脉冲。个外部脉冲。例:例:设定时设定时/计数器计数器0工作于模式工作于模式0,定时时间为,定时时间为1ms,时钟频率为时钟频率为12MHZ,试确定初值。,试确定初值。解:设初值为解:设初值为X,则,则 110-3=(213-X)1/1210-612 X=71
8、92 化为二进制:化为二进制:X=1110000011000B 高高8位化为位化为16进制进制=E0H 低低5位化为位化为16进制进制=18HTH0=0E0HTL0=18H根据上例编写程序,利用定时器根据上例编写程序,利用定时器/计数器每隔计数器每隔1ms控制产生宽度为一个机器周期的负脉冲,并由控制产生宽度为一个机器周期的负脉冲,并由P1.0口输出。口输出。解:解:1、计算初值得、计算初值得1110000011000B 2、初值装入初值装入TH0=0E0H,TL0=18H 3、写模式控制、写模式控制TMOD:M1M0=00,GATE=0,C/T=0,因此,因此 TMOD=00H 4、编程、编程
9、 ORG 0000H AJMP MAIN ;上电,转主程序;上电,转主程序 ORG 000BH ;T0的中断入口地址的中断入口地址 AJMP T0INT ;转中断服务程序;转中断服务程序 ORG 0100H MAIN:SETB P1.0 MOV TH0,#0E0H ;装入定时器初值;装入定时器初值 MOV TL0,#18H MOV TMOD,#00H ;设置为模式;设置为模式0 MOV IE,#82H ;EA=1,ET0=1,允许允许T0中断中断 SETB TR0 ;启动;启动T0LOOP:SJMP LOOP ;等待中断;等待中断 ORG 0200HT0INT:CLR P1.0 SETB P1
10、.0 ;输出;输出1周期负脉冲周期负脉冲 MOV TH0,#0E0H ;重新装入定时器初值;重新装入定时器初值 MOV TL0,#18H RETI ;中断返回;中断返回例:例:设时钟频率为设时钟频率为6MHZ,试利用,试利用T1,采用模式,采用模式0产生产生10ms的定时,并使的定时,并使P1.7输出周期为输出周期为20ms的方的方波。波。解:解:1、计算初值得、计算初值得110001111000B 2、初值装入初值装入TH1=63H,TL1=18H 3、写模式控制、写模式控制TMOD:M1M0=00,GATE=0,C/T=0,因此,因此 TMOD=00H 4、编程、编程20ms10ms OR
11、G 0000H LJMP MAIN ;上电,转主程序;上电,转主程序 ORG 001BH ;T1的中断入口地址的中断入口地址 AJMP T1INT ;转中断服务程序;转中断服务程序MAIN:MOV TH1,#63H ;装入定时器初值;装入定时器初值 MOV TL1,#18H MOV TMOD,#00H ;设置为模式;设置为模式0 SETB EA ;CPU开中断开中断 SETB ET1 ;允许允许T1中断中断 SETB TR1 ;启动;启动T1LOOP:SJMP LOOP ;等待中断;等待中断T1INT:CPL P1.7 ;P1.7口取反,输出口取反,输出 MOV TH1,#63H ;重新装入定
12、时器初值;重新装入定时器初值 MOV TL1,#18H RETI ;中断返回;中断返回 工作模式工作模式1 该模式对应的是一个该模式对应的是一个16位位的定时器的定时器/计数计数器。器。其结构与操作与模式其结构与操作与模式0几乎相同,定几乎相同,定时时间为:时时间为:t=(216-T0初值初值)振荡周期振荡周期12 计数工作方式时,计数最大长度为:计数工作方式时,计数最大长度为:21665536个外部脉冲。个外部脉冲。例:例:设时钟频率为设时钟频率为6MHZ,试利用,试利用T0,采用模式,采用模式1产生产生10ms的定时,并使的定时,并使P1.7输出周期为输出周期为20ms的方的方波。波。解:
13、解:1、计算初值得、计算初值得X=65036=1111111000010110B 2、初值装入初值装入TH0=0FEH,TL0=16H 3、写模式控制、写模式控制TMOD:M1M0=01,GATE=0,C/T=0,因此,因此 TMOD=01H 4、编程、编程20ms10ms ORG 0000H LJMP MAIN ;上电,转主程序;上电,转主程序 ORG 000BH ;T0的中断入口地址的中断入口地址 AJMP T0INT ;转中断服务程序;转中断服务程序MAIN:MOV TH0,#0FEH ;装入定时器初值;装入定时器初值 MOV TL0,#16H MOV TMOD,#01H ;设置为模式;
14、设置为模式1 SETB EA ;CPU开中断开中断 SETB ET0 ;允许允许T0中断中断 SETB TR0 ;启动;启动T0LOOP:SJMP LOOP ;等待中断;等待中断T0INT:CPL P1.7 ;P1.7口取反,输出口取反,输出 MOV TH0,#0FEH ;重新装入定时器初值;重新装入定时器初值 MOV TL0,#16H RETI ;中断返回;中断返回用查询方式对上例进行编程。用查询方式对上例进行编程。ORG 0100H MOV TH0,#0FEH ;装入定时器初值;装入定时器初值 MOV TL0,#16H MOV TMOD,#01H ;设置为模式;设置为模式1 SETB TR
15、0 ;启动;启动T0LOOP:JNB TF0,$;时间未到,等待时间未到,等待 MOV TH0,#0FEH ;重新装入定时器初值;重新装入定时器初值 MOV TL0,#16H CPL P1.7 ;P1.7口取反,输出口取反,输出 SJMP LOOP ;返回;返回 END 工作模式工作模式2 模式模式2把把TL0(或(或TL1)设置成一个可以自动重装载的)设置成一个可以自动重装载的8位位定时器定时器/计数器计数器。定时时间为:。定时时间为:t=(28-T0初值初值)振荡周期振荡周期12 计数工作方式时,计数最大长度为:计数工作方式时,计数最大长度为:28256个外部脉冲。个外部脉冲。例:用定时器
16、T1的模式2对外部信号计数,要求每计满100次,将P1.0端取反。解:解:1、计算计数器初值、计算计数器初值 XM-N=28-100=156=9CH 2、初值装入初值装入TH1=9CH,TL1=9CH 3、写模式控制、写模式控制TMOD:M1M0=10,GATE=0,C/T=1,因此,因此 TMOD=01100000B=60H 4、编程、编程 ORG 0000H LJMP MAIN ;上电,转主程序;上电,转主程序 ORG 001BH ;T1的中断入口地址的中断入口地址 AJMP T1INT ;转中断服务程序;转中断服务程序MAIN:MOV TH1,#9CH ;装入计数器初值;装入计数器初值
17、MOV TL1,#9CH MOV TMOD,#60H ;设置为计数器,工作为模式;设置为计数器,工作为模式1 SETB EA ;CPU开中断开中断 SETB ET1 ;允许允许T1中断中断 SETB TR1 ;启动;启动T1LOOP:SJMP LOOP ;等待中断;等待中断T1INT:CPL P1.0 ;P1.0口取反,输出口取反,输出 RETI ;中断返回;中断返回 工作模式工作模式3 工作模式工作模式3对对T0和和T1大不相同。大不相同。若将若将T0设置为设置为模式模式3,TL0和和TH0被分成被分成为为两个两个相互相互独立独立的的8位计数器位计数器。5.4 定时器定时器/计数器应用实例计
18、数器应用实例 利用定时器利用定时器0产生产生25Hz的方波,由的方波,由P1.0输出。输出。假设假设CPU不做其它工作,则可采用查询方式进不做其它工作,则可采用查询方式进行控制,设晶振频率为行控制,设晶振频率为12MHz。25Hz方波,周期为方波,周期为1/2540ms,可以采用定,可以采用定时器定时时器定时20ms,每隔,每隔20ms改变一下改变一下P1.0的电平,的电平,即可得到即可得到25Hz的方波信号。的方波信号。比较一下该采用哪种模式:比较一下该采用哪种模式:模式模式0:最长定时时间为:最长定时时间为t=213110-6=8.192ms模式模式1:最长定时时间为:最长定时时间为t=216110-6=65.536ms模式模式2:最长定时时间为:最长定时时间为t=28110-6=0.256ms 根据上面分析,采用模式根据上面分析,采用模式1设初值为设初值为X,则有:,则有:t=(216-X)110-6=2010-3 求得求得X=45536=B1E0H 程序如下:程序如下:ORG 0100H MOV TMOD,#01H MOV TH0,#0B1H MOV TL0,#0E0H SETB TR0LOOP:JNB TF0,$;$为当前指令指针地址为当前指令指针地址 CLR TF0 MOV TH0,#0B1H MOV TL0,#0E0H CPL P1.0 SJMP LOOP END
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。