收藏 分销(赏)

第6章--AT89C51的定时器计数器.ppt

上传人:a199****6536 文档编号:1668390 上传时间:2024-05-07 格式:PPT 页数:46 大小:560KB
下载 相关 举报
第6章--AT89C51的定时器计数器.ppt_第1页
第1页 / 共46页
第6章--AT89C51的定时器计数器.ppt_第2页
第2页 / 共46页
第6章--AT89C51的定时器计数器.ppt_第3页
第3页 / 共46页
第6章--AT89C51的定时器计数器.ppt_第4页
第4页 / 共46页
第6章--AT89C51的定时器计数器.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

1、第第6 6章章 AT89C51AT89C51的定时器的定时器/计数器计数器 6.1 6.1 定时器定时器/计数器的结构计数器的结构两个可编程的定时器两个可编程的定时器/计数器计数器T1T1、T0T0。结构如图结构如图6-16-1所示所示 2 2种工作模式:种工作模式:(1 1)计数器工作模式)计数器工作模式(2 2)定时器工作模式)定时器工作模式4 4种工作方式种工作方式(方式方式0-0-方式方式3)3)。TMODTMOD:选择定时器选择定时器/计数器计数器T0T0、T1T1的工作模式和工作的工作模式和工作 方式。方式。TCONTCON:控制控制T0T0、T1T1的启动和停止计数,同时包含了的

2、启动和停止计数,同时包含了 T0T0、T1T1的状态。的状态。单片机复位时,两个寄存器都清单片机复位时,两个寄存器都清0 0。6.1.1 6.1.1 工作方式控制寄存器工作方式控制寄存器TMODTMOD 图图6-16-1图图6-26-28 8位分为两组,高位分为两组,高4 4位控制位控制T1T1,低低4 4位控制位控制T0T0。(1 1)GATEGATE门控位门控位 0 0:仅以:仅以TRTRX X(X=0,1X=0,1)来启动定时器来启动定时器/计数器运行。计数器运行。1 1:用引脚用引脚INT0INT0*(或或INT1INT1*)上的高电平和上的高电平和TRXTRX两个条两个条 件来控制定

3、时器件来控制定时器/计数器的运行。计数器的运行。(2 2)M1M1、M0M0工作方式选择位工作方式选择位 表表6-1 6-1 M1M1、M0M0工作方式选择工作方式选择 M1 M0 M1 M0 工工 作作 方方 式式 0 0 0 0 方式方式0 0,1313位定时器位定时器/计数器。计数器。0 1 0 1方式方式1 1,1616位定时器位定时器/计数器。计数器。1 0 1 0 方式方式2 2,8 8位常数自动重新装载位常数自动重新装载 1 1 1 1 方式方式3 3,仅适用于,仅适用于T0T0,T0T0分成两个分成两个8 8 位计数器,位计数器,T1T1停止计数。停止计数。(3)(3)C/TC

4、/T*计数器模式和定时器模式选择位计数器模式和定时器模式选择位0 0:定时器模式。:定时器模式。1 1:计数器模式。计数器模式。6.1.2 6.1.2 定时器定时器/计数器控制寄存器计数器控制寄存器TCONTCON字节地址为字节地址为88H88H,可位寻址,位地址为,可位寻址,位地址为88H88H8FH8FH。TCONTCON的格式的格式如图如图6-36-3所示。所示。图图6-36-3低低4 4位与外部中断有关,已介绍。高位与外部中断有关,已介绍。高4 4位的功能如下:位的功能如下:(1)TF1(1)TF1、TF0TF0计数溢出标志位计数溢出标志位 (2)TR1(2)TR1、TR0TR0计数运

5、行控制位计数运行控制位 1 1:启动定时器:启动定时器/计数器工作的必要条件。计数器工作的必要条件。0 0:停止定时器:停止定时器/计数器工作计数器工作6.2 6.2 定时器定时器/计数器的计数器的4 4种工作方式种工作方式 6.2.1 6.2.1 方式方式0 0 M1M1、M0M0为为00 00,定时器,定时器/计数器的框图:计数器的框图:图图6-46-4为为1313位的计数器位的计数器 ,C/TC/T*位决定工作模式:位决定工作模式:0 0:开关打在上面,为定时器工作模式;:开关打在上面,为定时器工作模式;1 1:开关打在下面,为计数器工作模式,计数脉冲为:开关打在下面,为计数器工作模式,

6、计数脉冲为P3.4P3.4、P3.5P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,计数引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加器加1 1。GATEGATE位:决定定时器位:决定定时器/计数器的运行取决于计数器的运行取决于TRxTRx一个条件还是一个条件还是TRxTRx和和INTxINTx*引脚两个条件。引脚两个条件。(1 1)0 0:A A点(见图点(见图6-26-2)是否计数)是否计数,仅取决于仅取决于TRxTRx的状态。的状态。(2 2)1 1:B B点点电电位位由由INTXINTX*的的输输入入电电平平和和TRXTRX的的状状态态这这两两个个条条件件来来确定。是否计数是

7、由确定。是否计数是由TRxTRx和和INTxINTx*二个条件来控制的。二个条件来控制的。6.2.2 6.2.2 方式方式1 1 M1 M1、M0M0=01=01,1616位的计数器。位的计数器。6.2.3 6.2.3 方式方式2 2 计数满后自动装入计数初值。计数满后自动装入计数初值。M1M1、M0=M0=10 10,等效框图如下:,等效框图如下:图图6-56-5TLXTLX作作为为常常数数缓缓冲冲器器,当当TLXTLX计计数数溢溢出出时时,在在置置“1 1”溢溢出出标标志志TFXTFX的的同同时时,还还自自动动的的将将THXTHX中中的的初初值值送送至至TLXTLX,使使TLXTLX从从初

8、初值值开始重新计数。开始重新计数。定时器定时器/计数器的方式计数器的方式2 2工作过程如图工作过程如图6-6-7(7(X=0,1)X=0,1)。图图6-66-6省去用户软件中重装初值的程序,来精确定时。省去用户软件中重装初值的程序,来精确定时。6.2.4 6.2.4 方式方式3 3 增加一个附加的增加一个附加的8 8位定时器位定时器/计数器,从而具有计数器,从而具有3 3个定时器个定时器/计数计数器。器。图图6-76-7只适用于定时器只适用于定时器/计数器计数器T0T0。T1T1不能工作在方式不能工作在方式3 3。T1T1方式方式3 3时相当于时相当于TR1=0TR1=0,停止计数(此时停止计

9、数(此时T1T1可用来作串行口可用来作串行口波特率产生器)。波特率产生器)。1 1工作方式工作方式3 3下的下的T0T0T0T0分为两个独立的分为两个独立的8 8位计数器位计数器:TL0TL0和和TH0 TH0。TL0TL0使用使用T0T0的状态的状态控制位控制位C/TC/T*、GATEGATE、TR0TR0、,、,而而TH0TH0被固定为一个被固定为一个8 8位定时器位定时器(不能作外部计数模式),并使用定时器(不能作外部计数模式),并使用定时器T1T1的状态控制位的状态控制位TR1TR1和和TF1TF1,同时占用定时器同时占用定时器T1T1的中断请求源的中断请求源TF1TF1。各引脚与各引

10、脚与T0T0的逻辑关系如图的逻辑关系如图6-86-8所示:所示:图图6-86-8(a a)图图6-86-8(b b)2 2T0T0工作在方式工作在方式3 3下下T1T1的各种工作方式的各种工作方式 当当T1T1用作串行口的波特率发生器时,用作串行口的波特率发生器时,T0T0才工作在方式才工作在方式3 3。T0T0为方式为方式3 3时,时,T1T1可定为方式可定为方式0 0、方式、方式1 1和方式和方式2 2,用来作为串,用来作为串行口的波特率发生器,或不需要中断的场合。行口的波特率发生器,或不需要中断的场合。(1 1)T1T1工作在方式工作在方式0 0 图图6-96-9(2 2)T1T1工作在

11、方式工作在方式1 1(3 3)T1T1工作在方式工作在方式2 2 图图6-106-10图图6-116-11(4 4)T1T1工作在方式工作在方式3 3。T1T1的控制字中的控制字中M1M1、M0M0=1111时,时,T1T1停止计数。停止计数。在在T0T0为方式为方式3 3时,时,T1T1运行的控制条件只有两个,即运行的控制条件只有两个,即C/TC/T*和和M1M1、M0M0。C/TC/T*选择定时器模式或计数器模式,选择定时器模式或计数器模式,M1M1、M0M0选择选择T1T1运行的工运行的工作方式。作方式。6.3 6.3 计数器模式对输入信号的要求计数器模式对输入信号的要求 外部计数脉冲的

12、最高频率为系统振荡器频率的外部计数脉冲的最高频率为系统振荡器频率的1/241/24,例如选,例如选用用1212MHzMHz频率的晶体,则可输入频率的晶体,则可输入500500KHzKHz的外部脉冲。的外部脉冲。输入信号的高、低电平至少要保持一个机器周期。如图输入信号的高、低电平至少要保持一个机器周期。如图6-16-12 2所示,图中所示,图中TcyTcy为机器周期。为机器周期。图图6-126-126.4 6.4 定时器定时器/计数器的编程和应用计数器的编程和应用 4 4种工作方式中,方式种工作方式中,方式0 0与方式与方式1 1基本相同,由于方式基本相同,由于方式0 0是为兼容是为兼容MCS-

13、48MCS-48而设,初值计算复杂,在实际应用中,一般不用方式而设,初值计算复杂,在实际应用中,一般不用方式0 0,而采用方式,而采用方式1 1。6.4.1 6.4.1 方式方式1 1应用应用 例例6-1 6-1 假设系统时钟频率采用假设系统时钟频率采用6 6MHzMHz,要在要在P1.0P1.0上输出一个周期上输出一个周期为为2 2msms的方波,如图的方波,如图6-136-13所示。所示。图图6-136-13方波的周期用方波的周期用T0T0来确定,让来确定,让T0T0每隔每隔1 1msms计数溢出计数溢出1 1次次(每每1 1msms产生产生一次中断一次中断),CPUCPU响应中断后,在中

14、断服务程序中对响应中断后,在中断服务程序中对P1.0P1.0取反。取反。(1)(1)计算初值计算初值X X 设初值为设初值为X X,则有则有:(2(21616-X)X)2 21010-6-6=1=11010-3-3 2 21616-X=500 X=65036-X=500 X=65036 X X化为化为1616进制,即进制,即X=FE0CH=1111111000001100BX=FE0CH=1111111000001100B。所以,所以,T0T0的初值为:的初值为:TH0=0FEH TL0=0CHTH0=0FEH TL0=0CH (2)(2)初始化程序设计初始化程序设计 对寄存器对寄存器IPIP

15、、IEIE、TCONTCON、TMODTMOD的相应位进行正确设置,将计数的相应位进行正确设置,将计数初值送入定时器中。初值送入定时器中。(3)(3)程序设计程序设计 中断服务程序除产生方波外,还要注意将计数初值重新装入定中断服务程序除产生方波外,还要注意将计数初值重新装入定时器中,为下一次中断作准备。时器中,为下一次中断作准备。参考程序:参考程序:ORG 0000HORG 0000HRESET:AJMP MAIN RESET:AJMP MAIN ;转主程序转主程序 ORG 000BH ORG 000BH ;T0T0的中断入口的中断入口 AJMP IT0P AJMP IT0P ;转转T0T0中

16、断处理程序中断处理程序IT0PIT0P ORG 0100H ORG 0100HMAIN:MOV SP,#60H MAIN:MOV SP,#60H ;设堆栈指针设堆栈指针 MOV TMOD,#01HMOV TMOD,#01H ;设置设置T0T0为方式为方式1 1 ACALL PT0M0ACALL PT0M0;调用子程序调用子程序PT0M0PT0M0HERE:AJMP HEREHERE:AJMP HERE ;自身跳转自身跳转PT0M0:MOV TL0,#0CHPT0M0:MOV TL0,#0CH;T0T0中断服务程序,中断服务程序,T0T0重新置初值重新置初值 MOV TH0,#0FEH MOV

17、TH0,#0FEH SETB TR0 SETB TR0 ;启动启动T0T0 SETB ET0 SETB ET0 ;允许允许T0T0中断中断 SETB EA SETB EA ;CPUCPU开中断开中断 RETRETITOP:MOV TL0,#0CH ITOP:MOV TL0,#0CH ;T0T0中断服务子程序,中断服务子程序,T0T0置初值置初值 MOV TH0,#0FEHMOV TH0,#0FEH CPL P1.0 CPL P1.0 ;P1.0P1.0的状态取反的状态取反 RETIRETI查询方式的参考程序查询方式的参考程序:MOV TMOD,#01H MOV TMOD,#01H ;设置设置T

18、0T0为方式为方式1 1 SETB TR0 SETB TR0 ;接通接通T0T0LOOP:MOV TH0,#0FEH LOOP:MOV TH0,#0FEH ;T0T0置初值置初值 MOV TL0,#0CH MOV TL0,#0CHLOOP1LOOP1:JNB TF0,LOOP1 JNB TF0,LOOP1 ;查询查询TF0TF0标志标志 CLR TR0 CLR TR0 ;T0T0溢出,关闭溢出,关闭T0T0 CPL P1.0 CPL P1.0 ;P1.0P1.0的状态求反的状态求反 SJMP LOOP SJMP LOOP例例6-2 6-2 假假设设系系统统时时钟钟为为6 6MHzMHz,编编写

19、写定定时时器器T0T0产产生生1 1秒秒定定时时的的程程序。序。(1 1)T0T0工作方式的确定工作方式的确定定时时间较长,采用哪一种工作方式?定时时间较长,采用哪一种工作方式?由各种工作方式的特性,可计算出:由各种工作方式的特性,可计算出:方式方式0 0最长可定时最长可定时16.38416.384msms;方式方式1 1最长可定时最长可定时131.072131.072ms;ms;方式方式2 2最长可定时最长可定时512512 s s。选方式选方式1 1,每隔,每隔100100msms中断一次,中断中断一次,中断1010次为次为1 1s s。(2 2)计算计数初值)计算计数初值 因为:因为:(

20、2(21616-X)X)2 21010-6-6=10=10-1-1 所以:所以:X=15536=3CB0HX=15536=3CB0H 因此:因此:TH0=3CHTH0=3CH,TL0=B0H TL0=B0H(3 3)1010次计数的实现次计数的实现 采用循环程序法。采用循环程序法。(4 4)程序设计)程序设计 参考程序参考程序:ORG 0000HORG 0000HRESETRESET:LJMP MAIN LJMP MAIN ;上电,转主程序入口上电,转主程序入口MAINMAIN ORG 000BH ORG 000BH ;T0T0的中断入口的中断入口 LJMP IT0PLJMP IT0P;转转T

21、0T0中断处理程序中断处理程序IT0PIT0P ORG 1000H ORG 1000H MAIN MAIN:MOV SP,#60H MOV SP,#60H ;设堆栈指针设堆栈指针 MOV B,#0AH MOV B,#0AH ;设循环次数设循环次数1010次次 MOV TMOD,#01H MOV TMOD,#01H ;设设T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;给给T0T0设初值设初值 MOV TH0,#3CHMOV TH0,#3CH SETB TR0 SETB TR0 ;启动启动T0T0 SETB ET0 SETB ET0 ;允许允许T0T

22、0中断中断 SETB EA SETB EA ;CPUCPU开放中断开放中断 HERE HERE:SJMP HERE SJMP HERE ;等待中断等待中断 ITOPITOP:MOV TL0,#0B0H MOV TL0,#0B0H;T0T0中断子程序,重装初值中断子程序,重装初值 MOV TH0,#3CH MOV TH0,#3CH ;DJNZ B DJNZ B,LOOPLOOP CLR TR0 CLR TR0 ;1s1s定时时间到,停止定时时间到,停止T0T0工作工作 LOOP LOOP:RETI RETI 6.4.2 6.4.2 方式方式2 2的应用的应用省去程序中重装初值的指令,并可产生相当

23、精确的定时时间。省去程序中重装初值的指令,并可产生相当精确的定时时间。例例6-3 6-3 当当T0T0(P3.4P3.4)引引脚脚上上发发生生负负跳跳变变时时,从从P1.0P1.0引引脚脚上上输输出出一一个周期为个周期为1 1msms的方波的方波,如图如图6-136-13所示。(假设时钟为所示。(假设时钟为6 6MHzMHz)(1 1)工作方式选择)工作方式选择T0T0为方式为方式1 1计数,初值计数,初值 0 0FFFFHFFFFH,即外部计数输入端即外部计数输入端T0T0(P3.4P3.4)发生一次负跳变时,发生一次负跳变时,T0T0加加1 1且溢出,溢出标志且溢出,溢出标志TF0TF0置

24、置“1 1”,发,发中断请求。在进入中断请求。在进入T0T0中断程序后,把中断程序后,把F0F0标志置标志置“1 1”,说明,说明T0T0脚已接收了负跳变信号。脚已接收了负跳变信号。图图6-146-14T1T1定义为方式定义为方式2 2定时。在定时。在T0T0脚发生一次负跳变后,启动脚发生一次负跳变后,启动T1T1每每500500 s s产生一次中断,在中断服务程序中对产生一次中断,在中断服务程序中对P1.0P1.0求反,使求反,使P1.0P1.0产生周期产生周期1 1msms的方波。的方波。(2 2)计算)计算T1T1初值初值设设T1T1的初值为的初值为X X:则则 (2 (28 8-X)X

25、)2 21010-6-6=5=51010-4-4 X=2 X=28 8-250=6=06H-250=6=06H(3 3)程序设计程序设计 ORG 0000H ORG 0000H RESET:LJMP MAIN RESET:LJMP MAIN ;复位入口转主程序复位入口转主程序 ORG 000BHORG 000BH JMP IT0P JMP IT0P ;转转T0T0中断服务程序中断服务程序 ORG 001BH ORG 001BH LJMP IT1P LJMP IT1P ;转转T1T1中断服务程序中断服务程序 ORG 0100HORG 0100HMAIN:MOV SP,#60HMAIN:MOV S

26、P,#60H ACALL PT0M2 ACALL PT0M2;调用对;调用对T0T0,T1T1初始化子程序初始化子程序LOOP:MOV C,F0 LOOP:MOV C,F0 ;T0T0产生过中断了吗,产生过产生过中断了吗,产生过 ;中断,则;中断,则F0=1F0=1 JNC LOOP JNC LOOP;T0T0没有产生过中断,则跳到没有产生过中断,则跳到 ;LOOPLOOP,等待等待T0T0中断中断 SETB TR1 SETB TR1 ;启动启动T1T1 SETB ET1 SETB ET1 ;允许允许T1T1中断中断HERE:AJMP HEREHERE:AJMP HERE PT0M2:MOV

27、TMOD,#26H PT0M2:MOV TMOD,#26H;初始化,初始化,T1T1为方式为方式2 2定定 ;时,;时,T0T0为方式为方式1 1计数计数 MOV TL0,#0FFH MOV TL0,#0FFH;T0T0置初值置初值 MOV TH0,#0FFHMOV TH0,#0FFH SETB TR0 SETB TR0 ;启动启动T0T0 SETB ET0 SETB ET0 ;允许允许T0T0中断中断 MOV TL1,#06H MOV TL1,#06H ;T1T1置初值置初值 MOV TH1,#06HMOV TH1,#06H CLR F0 CLR F0;把把T0T0已发生中断标志已发生中断标

28、志F0F0清清0 0 SETB EASETB EA RETRET IT0P:CLR TR0 IT0P:CLR TR0;T0T0中断服务程序,停止中断服务程序,停止T0T0计数计数 SETB F0 SETB F0;建立产生中断标志建立产生中断标志 RETIRETIIT1P:IT1P:CPL P1.0CPL P1.0;T1T1中断服务,中断服务,P1.0P1.0位取反位取反 RETIRETI在在T1T1定时中断服务程序定时中断服务程序IT1PIT1P中,省去了中,省去了T1T1中断服务程序中重新中断服务程序中重新装入初值装入初值0606H H的指令。的指令。例例6-4 6-4 利用利用T1T1的方

29、式的方式2 2对外部信号计数,要求每计满对外部信号计数,要求每计满100100个数,个数,将将P1.0P1.0取反。取反。本例是方式本例是方式2 2计数模式的应用。计数模式的应用。(1 1)选择工作方式)选择工作方式 外部信号由外部信号由T1(P3.5)T1(P3.5)脚输入脚输入,每发生一次负跳变计数器加每发生一次负跳变计数器加1 1,每输入每输入100100个脉冲,计数器产生溢出中断,在中断服务程序个脉冲,计数器产生溢出中断,在中断服务程序中将中将P1.0P1.0取反一次。取反一次。T1 T1 方式方式2 2的控制字为的控制字为TMOD=60HTMOD=60H。不使用不使用T0T0时,时,

30、TMODTMOD的低的低4 4位可位可任取,但不能使任取,但不能使T0T0进入方式进入方式3 3,这里取全,这里取全0 0。(2 2)计算)计算T1T1的初值的初值X=2X=28 8-100=156=9CH-100=156=9CH 因此,因此,TL1TL1的初值为的初值为9 9CHCH,重装初值寄存器重装初值寄存器TH1=9CHTH1=9CH(3 3)程序设计程序设计 ORG 0000HORG 0000HLJMP MAINLJMP MAINORG 001BHORG 001BH;T1T1中断服务程序入口中断服务程序入口 CPL P1.0CPL P1.0;P1.0P1.0位取反位取反 RETIRE

31、TI ORG 0100HORG 0100H MAIN:MAIN:MOV TMOD,#60H MOV TMOD,#60H;设设T1T1为方式为方式2 2计数计数 MOV TL0,#9CH MOV TL0,#9CH ;T0T0置初值置初值 MOV TH0,#9CH MOV TH0,#9CH SETB TR1SETB TR1 ;启动启动T1T1 HERE:HERE:AJMP HEREAJMP HERE6.4.3 6.4.3 方式方式3 3的应用的应用T0 T0 方式方式3 3时,时,TL0TL0和和TH0TH0被分成两个独立的被分成两个独立的8 8位定时器位定时器/计数器。计数器。其中,其中,TL0

32、TL0:8 8位定时器位定时器/计数器;计数器;TH0 TH0:8 8位定时器。位定时器。当当T1T1作串行口波特率发生器时,作串行口波特率发生器时,T0T0才设置为方式才设置为方式3 3。例例6-5 6-5 假设某假设某89C5189C51应用系统的两个外中断源已被占用,设置应用系统的两个外中断源已被占用,设置T1T1工作在方式工作在方式2 2,作波特率发生器用。现要求增加一个外部中断,作波特率发生器用。现要求增加一个外部中断源,并控制源,并控制P1.0P1.0引脚输出一个引脚输出一个5 5kHzkHz的方波。设系统时钟为的方波。设系统时钟为6 6MHzMHz。图图6-156-15(1 1)

33、选择工作方式)选择工作方式TL0TL0为为方方式式3 3计计数数,把把T0T0引引脚脚(P3.4P3.4)作作附附加加的的外外中中断断输输入入端端,TL0TL0初初值值设设为为0 0FFHFFH,当当检检测测到到T0T0引引脚脚电电平平出出现现负负跳跳变变时时,TL0TL0溢出,申请中断,这相当于跳沿触发的外部中断源。溢出,申请中断,这相当于跳沿触发的外部中断源。TH0TH0为为8 8位位方方式式3 3定定时时,控控制制P1.0P1.0输输出出5 5kHzkHz的的方方波波信信号号。如如图图6-156-15所示。所示。(2 2)初值计算初值计算TL0TL0的初值设为的初值设为0 0FFHFFH

34、。5kHz 5kHz的方波的周期为的方波的周期为200200 s s,TH0TH0的定时时间为的定时时间为100100 s s。TH0TH0初值初值X X计算如下:计算如下:(2(28 8-X)X)2 21010-6-6=1=11010-4-4 X=2 X=28 8-100=156=9CH-100=156=9CH(3 3)程序设计程序设计 ORGORG 0000H 0000H LJMP MAIN LJMP MAIN ORG 000BH ORG 000BH;T0T0中断入口中断入口 LJMP TL0INTLJMP TL0INT;跳跳T0(TL0)T0(TL0)中断服务程序中断服务程序 ORG 0

35、01BH ORG 001BH ;在在T0T0方式方式3 3时,时,TH0TH0占用占用T1T1的中断的中断 LJMP TH0INT LJMP TH0INT;跳跳TH0TH0中断服务程序中断服务程序 ORG 0100H ORG 0100HMAINMAIN:MOV TMOD,#27H MOV TMOD,#27H;TL0TL0方式方式3 3计数计数,TH0,TH0定时,定时,T1T1方式方式2 2;定时(波特率发生器);定时(波特率发生器)MOV TL0,#0FFH MOV TL0,#0FFH ;置置TL0TL0初值初值 MOV TH0,#9CH MOV TH0,#9CH;置;置TH0TH0初值初值

36、 MOV TL1,#dataL MOV TL1,#dataL;datadata为波特率常数为波特率常数 MOV TH1,#dataH MOV TH1,#dataH MOV TCON,#55H MOV TCON,#55H;允许允许T0T0中断中断 MOV IE,#9FHMOV IE,#9FH;启动启动T1T1 中断处理中断处理TL0INTTL0INT:MOV TL0,#0FFH MOV TL0,#0FFH ;TL0TL0中断服务程序,中断服务程序,;TL0TL0重新装入初值重新装入初值 中断处理中断处理 TH0INTTH0INT:MOV TH0,#9CHMOV TH0,#9CH ;TH0TH0中

37、断服务程序,中断服务程序,TH0TH0重重;新装入初值;新装入初值 CPL P1.0CPL P1.0 ;P1.0P1.0位取反输出位取反输出 RETI RETI 6.4.4 6.4.4 门控制位门控制位GATEGATE的应用的应用测量脉冲宽度测量脉冲宽度GATE1GATE1可使定时器可使定时器/计数器计数器T1T1的启动计数受的启动计数受INT1INT1*的控制,可测量的控制,可测量引脚引脚INT1INT1*(P3.3P3.3)上正脉冲的宽度(机器周期数)。上正脉冲的宽度(机器周期数)。图图6-166-16参考程序:参考程序:ORG 0000HORG 0000HRESET:AJMP MAIN

38、RESET:AJMP MAIN ;复位入口转主程序复位入口转主程序 ORG 0100HORG 0100H MAIN:MOV SP,#60H MAIN:MOV SP,#60H MOV TMOD,#90H MOV TMOD,#90H ;90H90H为为T1T1方式方式1 1定时控制字定时控制字 MOV TL1,#00HMOV TL1,#00H MOV TH1,#00H MOV TH1,#00HLOOP0:JB P3.3,LOOP0LOOP0:JB P3.3,LOOP0;INT1INT1*高高,则循环则循环 SETB TR1SETB TR1;如如INT1INT1*为低,启动为低,启动T1T1LOOP

39、1:JNB P3.3,LOOP1LOOP1:JNB P3.3,LOOP1;INT1INT1*低,则循环低,则循环LOOP2:JB P3.3,LOOP2 LOOP2:JB P3.3,LOOP2;INT1INT1*高高,T1,T1计数则循环计数则循环 CLR TR1CLR TR1;INT1INT1*低,停止低,停止T1T1计数计数 MOV A,TL1MOV A,TL1;T1T1计数值送计数值送A A将将A A中的中的T1T1计数计数值送显示缓冲区值送显示缓冲区转换成显示的代码转换成显示的代码 LOOP3:LOOP3:LCALL DIR LCALL DIR ;调调用用显显示示子子程程序序DIRDIR

40、;显示;显示T1T1计数值计数值 AJMP LOOP3 AJMP LOOP3 ;执执行行程程序序,使使INT1INT1*引引脚脚上上出出现现的的正正脉脉冲冲宽宽度度以以机机器器周周期期数数的的形形式显示在显示器上。式显示在显示器上。6.4.5 6.4.5 实时时钟的设计实时时钟的设计 1 1实时时钟实现的基本思想实时时钟实现的基本思想 如何获得如何获得1 1秒的定时,可把定时时间定为秒的定时,可把定时时间定为100100msms,采用中断方式采用中断方式进行溢出次数的累计,计满进行溢出次数的累计,计满1010次,即得到秒计时。次,即得到秒计时。片内片内RAMRAM中规定中规定3 3个单元作为秒

41、、分、时单元,具体安排如下:个单元作为秒、分、时单元,具体安排如下:42 42H H:“秒秒”单元单元 ;4141H H:“分分”单元;单元;4040H H:“时时”单元单元从秒到分,从分到时是通过软件累加并进行比较的方法来实现从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。的。2 2程序设计程序设计 (1 1)主程序的设计)主程序的设计流程如图流程如图6-176-17所示。所示。(2 2)中断服务程序的设计)中断服务程序的设计中断服务程序主要功能是实现秒、中断服务程序主要功能是实现秒、分、时的计时处理。参考程序略。分、时的计时处理。参考程序略。图图6-176-17图图6-186-1

42、8ORGORG1000H1000H AJMPAJMPMAINMAIN;上电上电,跳向主程序跳向主程序 ORG ORG 000BH000BH;T0;T0的中断入口的中断入口 AJMP AJMP IT0PIT0PMAIN:MAIN:MOV MOV TMOD,#01HTMOD,#01H;设设T0T0为方式为方式1 1 MOV MOV 20H,#0AH 20H,#0AH;装入中断次数装入中断次数 CLR CLR A A MOV MOV 40H,A40H,A;“时时”单元清单元清“0 0”MOV MOV 41H,A41H,A;“分分”单元清单元清“0 0”MOV MOV 42H,A42H,A;“秒秒”单

43、元清单元清“0 0”SETB ET0SETB ET0;允许允许T0T0申请中断申请中断SETB EASETB EA;总中断允许总中断允许 MOV MOV TH0,#3CHTH0,#3CH;给给T0T0装入计数初值装入计数初值MOV MOV TL0,#0B0HTL0,#0B0H SETB TR0SETB TR0;启动启动T0T0HERE:SJMP HEREHERE:SJMP HERE;等待中断(也可调用显示子程序)等待中断(也可调用显示子程序)IT0P:IT0P:PUSH PSWPUSH PSW;T0;T0中断服务子程序入口中断服务子程序入口,保护现场保护现场 PUSH AccPUSH Acc

44、MOV MOV TH0,#3CHTH0,#3CH;重新装入初值重新装入初值 MOV MOV TL0,#0B0HTL0,#0B0H DJNZ 20H,RETURNDJNZ 20H,RETURN;1;1秒未到秒未到,返回返回 MOV MOV 20H,#0AH 20H,#0AH;重置中断次数重置中断次数 MOV MOV A,#01HA,#01H;“秒秒”单元增单元增1 1 ADD ADD A,42HA,42H DA DA A A;“秒秒”单元十进制调整单元十进制调整 MOV MOV 42H,A42H,A;“秒秒”BCDBCD码存回码存回“秒秒”单元单元 CJNE A,#60,RETURNCJNE A

45、,#60,RETURN;是否到是否到6060秒秒,未到则返回未到则返回 MOV MOV 42H,#00H42H,#00H;计满计满6060秒秒,“秒秒”单元清单元清“0 0”MOV MOV A,#01HA,#01H;“分分”单元增单元增1 1ADD ADD A,41HA,41H DA DA A A;“分分”单元十进制调整单元十进制调整 MOV MOV 41H,A41H,A;“分分”的的BCDBCD码存回码存回“分分”单元单元 CJNE A,#60,RETURNCJNE A,#60,RETURN;是否到是否到6060分分,未到则返回未到则返回 MOV MOV 41H,#00H41H,#00H;计

46、满计满6060分分,“分分”单元清单元清“0 0”MOV MOV A,#01HA,#01H;“时时”单元增单元增1 1 ADD ADD A,40HA,40H DA DA A A;“时时”单元十进制调整单元十进制调整 MOV MOV 40H,A40H,A CJNE CJNE A,#24,RETURN A,#24,RETURN ;是否到是否到2424小时小时,未到则返回未到则返回 MOV MOV 40H,#00H40H,#00H;到到2424小时小时,“时时”单元清单元清“0 0”RETURN:POP AccRETURN:POP Acc;恢复现场恢复现场 POP POP PSWPSW RETIRE

47、TI;中断返回中断返回 END END 6.4.6 6.4.6 定时器定时器/计数器作为外部中断源的使用方法计数器作为外部中断源的使用方法定时器定时器/计数器选择为计数器模式时,定时器计数器选择为计数器模式时,定时器/计数器计数器T0T0(或(或T1T1)设置为方式)设置为方式2 2(自动恢复常数方式)计数工作模式,计数(自动恢复常数方式)计数工作模式,计数器器TH0TH0、TL0TL0初值均为初值均为0FFH0FFH,并允许,并允许T0T0中断,总中断开放。中断,总中断开放。当当T0T0引脚上发生负跳变时,引脚上发生负跳变时,T0T0(或(或T1T1)计数器溢出,)计数器溢出,TF0TF0(

48、或(或TF1TF1)置)置“1 1”,发出中断请求。利用这一特性,可以把,发出中断请求。利用这一特性,可以把T0T0(或(或T1T1)引脚作为外部中断请求输入引脚,而溢出标志)引脚作为外部中断请求输入引脚,而溢出标志TF0TF0(或(或TF1TF1)可作为外部中断请求标志。)可作为外部中断请求标志。初始化程序:初始化程序:ORGORG0000H0000HAJMPAJMPIINIIINI;跳到初始化程序跳到初始化程序IINI:IINI:MOV MOV TMOD,#06HTMOD,#06H;设置设置T0T0为方式为方式2 2MOV TL0,#0FFHMOV TL0,#0FFH;给计数器设置初值给计

49、数器设置初值MOV TH0,#0FFHMOV TH0,#0FFH SETB ET0SETB ET0;允许允许T0T0中断中断 SETB EASETB EA;开中断开中断 SETBSETBTR0TR0;启动启动T0,T0,开始计数开始计数 当连在当连在P3.4P3.4(T0T0引脚)的外部中断请求输入线上的电平发生负引脚)的外部中断请求输入线上的电平发生负跳变时,跳变时,TL0TL0加加1 1,产生溢出,产生溢出,TF0TF0置置“1 1”,向,向CPUCPU发出中断请发出中断请求,同时求,同时TH0TH0的内容的内容0FFH0FFH送送TL0TL0,即,即TL0TL0恢复初值恢复初值0FFH0FFH。这样,这样,P3.4P3.4脚相当于一个跳沿触发的外部中断请求源输入端。脚相当于一个跳沿触发的外部中断请求源输入端。对对P3.5P3.5也可做类似的处理。也可做类似的处理。

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服