资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,精选,*,第六章 定时器及应用,6.1 定时器概述,6.2 定时器的控制,6.3 定时器的四种模式及应用,1,精选,6.1 定时器概述,6.1.1 89C51定时器结构,6.1.2 89C51定时器功能,2,精选,6.1.1 89C51定时器结构,有两个16位的定时器/计数器:定时器0(T0)定时器1(T1)。,都是16位加1计数器。,T0由两个8位特殊功能寄存器TH0和TL0构成;,T1由TH1和TL1构成。,如图,3,精选,6.1.1 89C51定时器结构,4,精选,6.1.2 89C51定时器功能,每个定时器都可由软件设置为,定时工作方式,或计数工作方式。,定时器工作不占用CPU时间,除非定时器/计数器溢出,才能中断CPU的当前操作。,每个定时器/计数器有四种工作模式。模式0-3,5,精选,定时工作方式简介:,定时脉冲为单片机片内振荡器输出经,12,分频后的脉冲,,即每个机器周期使定时器(,T0,或,T1,)的 数值加,1,直至计满溢出。,当采用12MHz晶振时,一个机器周期为1s,计数频率为1MHz。,6,精选,计数工作方式简介:,通过引脚,P3.4,(,T0,)和,P3.5,(,T1,)对外部脉冲信号计数。,当输入脉冲信号产生由,1,至,0,的,下降沿,时定时器的值加,1,。,CPU,检测一个,1,至,0,的跳变需要两个机器周期,故最高计数频率为振荡频率的,1/24,。,为了确保某个电平在变化之前被采样一次,要求电平保持时间至少是一个完整的机器周期。,图,7,精选,6.2 定时器的控制,6.2.1 工作模式寄存器 TMOD,6.2.2 控制器寄存器 TCON,8,精选,6.2.1 工作模式寄存器 TMOD,TMOD用于控制T0和T1的工作模式。,TMOD不能位寻址,只能用字节设置定时器的工作模式,低半字节设置T0,高半字节设置T1。,系统复位时,TMOD的所有位被清0。,TMOD各位的定义格式如图所示:,9,精选,GATE,C/T,M1,M0,GATE,M1,C/T,M0,定时器T1,定时器T0,TMOD,(89H),D7 D6 D5 D4 D3 D2 D1 D0,图,工作模式寄存器TMOD的位定义,10,精选,TMOD各位的功能,M1和M0操作模式控制位。,两位可形成四种编码,对应于四种模式。见 表6-1。,11,精选,表6-1 M1,M0控制的四种工作模式,12,精选,C/T计数器/定时器方式选择位。,C/T=0,,设置为,定时方式,。定时器计数8051片内脉冲,即对机器周期计数。,C/T=1,,设置为,计数方式,。计数器的输入来自T0(P3.4),或T1(P3.5)端的外部脉冲。,TMOD各位的功能,13,精选,GATE门控位。,GATE=0,,,只要用软件使TR0(或TR1)置1就可以启动定时器,而不管INT0(或INT1)的电平是高还是低。,GATE=1,,,只有INT0(或INT1)引脚为高电平且由软件使TR0(或TR1)置1时,才能启动定时器工作。,TMOD各位的功能,14,精选,6.2.2 控制器寄存器 TCON,TCON可位寻址,。,系统复位时,TCON的所有位被清0。,TCON各位的定义格式如图所示。,15,精选,TF1,TR1,TF0,TR0,IE1,IE0,IT1,IT0,TCON,(88H),8FH 8EH 8DH 8CH 8BH 8AH 89H 88H,图,控制寄存器TCON的位定义,16,精选,TCON各位的功能,TF1(TCON.7)T1溢出标志位。,当,T1溢出,时,由硬件自动使中断触发器,TF1置1,,并CPU申请中断。,当,CPU响应中断进入中断服务程序后,,TF1由被硬件,自动清0,。TF1也可以用,软件清0,。,TF0(TCON.5)T0溢出标志位。,其功能和操作情况同TF1。,17,精选,TR1(TCON.6)T1运行控制位。,可通过软件置1(,TR1=1,)或清0(,TR1=0,)来,启动,或,关闭,T1。,在程序中用指令“,SETB TR1,”使,TR1位置1,,定时器T1便开始计数。,TR0(TCON.4)T0运行控制位。,其功能和操作情况同TR1。,TCON各位的功能,18,精选,IE1,IT1,IE0,IT0(TCON.3TCON.0),外部中断INT1,INT0请求及请求方式控制位。前一章已经讲过。,TCON各位的功能,19,精选,6.3 定时器的四种模式及应用,6.3.1,模式,0,及其应用,6.3.2,模式,1,及其应用,6.3.3,模式,2,及其应用,6.3.4,模式,3,及其应用,6.3.5,综合应用举例,20,精选,6.3.1 模式 0 及其应用,一、模式,0,工作特点,二、模式,0,的逻辑电路结构,三、模式,0,的应用举例,21,精选,一、模式 0 工作特点,T0、T1为3位计数器。,TH0的8位和TL0的低5位,TH的8位和TL1的低5位,以下以0说明:,TH0,TL0,D7,D6,D5,D4,D3,D2,D1,D0,D7,D6,D5,D4,D3,D2,D1,D0,D12,D11,D10,D9,D8,D7,D6,D5,/,/,/,D4,D3,D2,D1,D0,22,精选,TH0溢出时,向中断标志TF0进位(硬件置位TF0),并申请中断。,T0是否溢出可查询TF0是否被置位,以产生T0中断。,定时时间为:,t=(2,13,T0初值)振荡周期12,23,精选,二、模式 0 的逻辑电路结构,如图,24,精选,二、模式 0 的逻辑电路结构,25,精选,二、模式 0 的逻辑电路结构,C/T=0,时,:,控制开关接通振荡器,12,分频输出端,,T0,对机器周期计数。,这是定时工作方式。,其定时时间,为:,t,=(2,13,-T0,初值,),振荡周期,12,C/T=l,时,:,控制开关使引脚,T0(P3.4),与,13,位计数器相连,外部计数脉冲由引脚,T0(P3.4),输入,,当外部信号电平发生由,1,到,0,跳变时,计数器加,1,。,这时,,T0,成为外部事件计数器,。这就是计数工作方式。,26,精选,二、模式 0 的逻辑电路结构,GATE=O,时,,或门输出,A,点电位保持为,1,“,或,”,门被封锁。,于是,引脚,INTO,输入信号无效。,这时,,“,或,”,门输出的,l,打开,“,与,”,门。,B,点电位取决于,TRO,的状态,,于是,由,TRO,一位就可控制计数开关,K,,开启或关断,TO,。,若软件使,TRO,置,1,便接通计数开关,K,,启动,TO,在原上加,1,计数,直至溢出。,溢出时,,13,位寄存器清,O,TF0,置位,并申请中断,,TO,从,0,重新开始计数。,若,TRO=0,,则关断计数开关,K,,停止计数,。,27,精选,二、模式 0 的逻辑电路结构,GATE=l,时,A,点电位取决于,INT0(P3.2),引脚的输入电平。,仅当,INT0,输入高电平,且,TR0=1,时,,B,点才是高电平,计数开关,K,闭合,,T0,开始计数。,当,INT0,由,1,变,0,时,,T0,停止计数。这一特性可以用来测量在,INT0,端出现的正脉冲的宽度。,28,精选,三、模式 0 的应用举例,例6-1:设定时器T0选择工作模式0,定时时间为1ms,fosc=6MHz。试确定T0初值,计算最大定时时间T。,29,精选,解:,模式0,13位计数器。,(1),试确定T0初值,X,(2,13,X)1/6 10,-6,12=110,-3,s,X=7692D=1 1110 0000 1100B1E0CH,T0的低5位:01100B=0CH即,(TL0)=0CH,T0的高8位:11110000B=F0H即,(TH0)=F0H,(2),计算最大定时时间T,T0的最大定时时间对应于13位计数器T0的各位全为1,即(TL0)=1FH,(TH0)=FFH.,T=(2,13,-0)1/6 10,-6,12=16.384ms,30,精选,例6-2:上例中,定时时间1ms,编程。在P1.0的引脚上产生输出周期为2ms的方波。,设T0工作在模式0,定时时间为1ms,定时时间到,P1.0取反。,31,精选,解:,(1)计算T0初值X,计算步骤见例6-1。,结果:(TH0)=0F0H,(TL0)=0CH。,32,精选,例6-2,(2)程序清单:,初始化引导程序,ORG 0000H,RESET:AJMP MAIN ;跳过中断服务程序区,ORG 000BH ;中断服务程序入口,AJMP ITOP,33,精选,例6-2,主程序:,ORG 0100H,MAIN:MOV SP,#60H;设堆栈指针,ACALL PTOMD,HERE:AJMP HERE ;等待,PTOMD:MOV TMOD,#00H;选择工作模式,MOV TL0,#0CH;送初值,MOV TH0,#0F0H,SETB TR0 ;启动定时,SETB ET0 ;T0开中断,SETB EA ;CPU开中断,RET,34,精选,例6-2,中断服务程序,ORG 0120H,ITOP:MOV TL0,#0CH ;重新装如初值,MOV TH0,#0F0H,CPL P1.0 ;P1.0,取反,RETI,35,精选,例6-3,利用T0的工作模式0产生1ms定时,在P1.0引脚输出周期为2ms的方波。设单片机晶振频率fosc=12MHz。编程实现其功能。,36,精选,例6-3,解:,要在P1.0引脚输出周期为2ms的方波,只要使P1.0每隔1ms,取反一次即可。,(1)选择工作模式,T0,的模式字为TMOD=00H,即,M1M0=00,C/T=0,GATE=0,其余位为0。,37,精选,(2)计算1ms,定时时T0的初值,(2,13,X)1/12 10,-6,12=110,-3,s,X=7193D=11100000 11000B,T0的低5位:11000B=18H即,(TL0)=18H,T0的高8位:11100000B=E0H即,(TH0)=E0H,例6-3,38,精选,例6-3,(3)采用查询,方式的程序,清单,MOV TMOD,#00H ;设置T0为模式0,MOV TL0,#18H ;送初值,MOV TH0,#0E0H,SETB TR0 ;启动定时,LOOP:JBC TF0,NEXT ;查询定时时间到否,SJMP LOOP,NEXT:MOV TL0,#18H ;重装计数初值,MOV TH0,#0E0H,CPL P1.0 ;取反,SJMP LOOP ;重复循环,39,精选,例6-3,(4)采用定时器溢出中断方式的程序,主程序,ORG 0000H,RESET:AJMP MAIN ;跳过中断服务程序区,ORG 0030H,MAIN:MOV TMOD,#00H ;设置T0为模式0,MOV TL0,#18H ;送初值,MOV TH0,#0E0H,SETB EA ;CPU开中断,SETB ET0 ;T0中断允许,SETB TR0 ;启动定时,HERE:SJMP HERE ;等待中断,虚拟主程序,40,精选,例6-3,中断服务程序,ORG 000BH,AJMP CTC0,ORG 0120H,CTC0:MOV TL0,#18H ;重新装如初值,MOV TH0,#0E0H,CPL P1.0 ;P1.0,取反,RETI,41,精选,6.3.2 模式 1 及其应用,一、模式 1 工作特点,二、模式 1 的逻辑电路结构,三、模式1 的应用举例,42,精选,一、模式 1 工作特点,该模式对应的是一个,16位的定时器/计数器,。,用于定时工作方式时,定时时间为:,t=(2,16,初值)振荡周期12,用于计数工作方式时,计数长度最大为:,2,16,=65536(个外部脉冲),43,精选,二、模式 1 的逻辑电路结构,图6-8,44,精选,二、模式 1 的逻辑电路结构,45,精选,三、模式 1 的应用举例,例6-4:用定时器T1产生一个50Hz的方波,由 P1.1,输出,使用程序查询方式,fosc=12MHz。,46,精选,(例6-4),解:,方波周期T=1/50=0.02s=20ms,用T1定时10ms,计数初值X为:,10 1000us=(2,16,-X)(1/12)12us,X=2,16,12101000/12,=6553610000=55536=D8F0H,47,精选,(例6-4),源程序清单:,MOV TMOD,#10H ;设置T1为模式1,SETB TR1 ;启动定时,LOOP:MOV TL1,#0D8H ;送初值,MOV TH1,#0F0H,JNB TF1,$,;查询定时时间到否,CLR TF1 ;,产生溢出,清标志位,CPL P1.1 ;取反,SJMP LOOP ;重复循环,48,精选,6.3.3 模式 2 及其应用,一、模式 2 工作特点,二、模式 2 的逻辑电路结构,三、模式 2 的应用举例,49,精选,一、模式 2 工作特点,把TL0(TL1)配置成一个可以自动重装载的8位定时器/计数器,在程序初始化时,TL0和TH0由软件赋予相同的初值。,用于定时工作方式时,定时时间为:,t=(2,8,TH0初值)振荡周期12,用于计数工作方式时,计数长度最大为:,2,8,=256(个外部脉冲),50,精选,一、模式 2 工作特点,该模式可省去软件中重装常数的语句,并可产生相当精确的定时时间,适合于作串行口波特率发生器。,TL0计数溢出时,不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重新装载到TL0中。,TL0用作8位计数器,TH0用以保存初值。,51,精选,二、模式 2 的逻辑电路结构,如图,52,精选,三、模式 2 的应用举例,例6-5:当P3.4引脚上的电平发生负跳变时,从P1.0,输出一个500s的同步脉冲。请编程序实现该功能。查询方式,fosc=6MHz。,53,精选,(例6-5),解:,(1)模式选择,选T0为模式2,外部事件计数方式。,当P3.4引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1;,然后改变T0为500s定时工作方式,并使P1.0,输出由1变为0。T0定时到产生溢出,使P1.0输出恢复高电平,T0又恢复外部事件计数方式。,如图,所示。,54,精选,(例6-5),(2)计算初值,T0工作在外部事件计数方式,,当计数到,2,8,时,计数器就会溢出。设计数初值为X,当再出现一次外部事件时,计数器溢出。,则:X+1=2,8,X=2,8,1=11111111B=0FFH,T0工作在定时工作方式,,晶振频率为6MHz,500s相当于250个机器周期。因此,初值X为,(2,8,X)2s=500s,X=6=06H,55,精选,(例6-5,),(3)程序清单,START:MOV TMOD,#06H;置T0为模式2,计数方式,MOV TL0,#0FFH ;T0计数器初值,MOV TH0,#0FFH,SETB TR0 ;启动T0计数,LOOP1:JBC TF0,,PTFO1,;查询T0溢出标志,,;TF0=1时转,且清TF0=0,SJMP LOOP1 ;,PTFO1:,CLR TR0 ;停止计数,MOV TMOD,#02H ;置T0为模式2,定时方式,MOV TL0,#06H ;送初值,定时500s,MOV TH0,#06H,56,精选,(例6-5),CLR P1.0 ;P1.0清0,SETB TR0 ;启动定时500s,LOOP2:JBC TF0,PTFO2,;查询T0溢出标志,,;TF0=1时转,且清TF0=0,;(第一个500s到否?),SJMP LOOP2,PTFO2:,SETB P1.0 ;P1.0置1,CLR TR0 ;停止计数,SJMP START,57,精选,例6-6:利用定时器T1的模式2对外部信号计数。要求每计满100次,将 P1.0端取反。,58,精选,(例6-6),解:,(1)选择模式,外部信号由T1(P3.5)引脚输入,每发生一次负跳变计数器加1,每输入100个脉冲,计数器发生溢出中断,中断服务程序将P1.0取反一次。,T1计数工作方式模式2的模式字为,(TMOD)=60H。,T0不用时,TMOD的低4位可任取,但不能进入模式3,一般取0。,59,精选,(例6-6),(2)计算T1的计数初值,X=2,8,100=156=9CH,因此:TL1的初值为9CH,,重装初值寄存器TH1=9CH,。,60,精选,(例6-6),(3)程序清单,MAIN:MOV TMOD,#60H ;置T1为模式2,计数方式,MOV TL1,#9CH ;T1计数器初值,MOV TH1,#9CH,MOV IE,#88H ;,定时器开中断,SETB TR1 ;启动T1计数,HERE:SJMP HERE ;等待中断,ORG 001BH ;中断服务程序入口,CPL P1.0,RETI,61,精选,6.3.4 模式 3 及其应用,一、模式 3 的特点及逻辑电路结构,二、模式 3 应用举例,62,精选,一、模式 3 的特点及逻辑电路结构,工作模式3对T0和T1大不相同。,T0,设置为模式3,TL0和TH0被分成两个相互独立的8位计数器。,T1,无工作模式3状态。在T0用作模式3时,T1仍可设置为模式02。,63,精选,一、模式 3 的特点及逻辑电路结构,T0模式3的逻辑电路结构,如图,所示。,64,精选,一、模式 3 的特点及逻辑电路结构,TL0用原T0的各控制位、引脚和中断源,即C/T,GATE,TR0,TF0,T0(P3.4)引脚,INT0(P3.2)引脚。,TL0可工作在定时器方式和计数器方式。其功能和操作与模式0、模式1相同(只是8位)。,TH0只可用作简单的内部定时功能。,TH0,占用了定时器T1的控制位TR1和T1的中断标志TF1,其启动和关闭仅受TR1的控制。,65,精选,T0模式3下T1的逻辑电路结构,定时器T1无工作模式3状态。在T0用作模式3时,T1仍可设置为模式02。,T0模式3下T1的逻辑电路结构,如图,所示,由于TR1和TF1被定时器T0占用,计数器开关K已被接通,此时,仅用T1控制位,C/T切换其定时或计数器工作方式就可使T1运行。当计数器溢出时,只能将输出送入串行口或用于不需要中断的场合。一般作波特率发生器,66,精选,二、模式 3 的应用举例,例6-7:设某用户系统已使用了两个外部中断源,并置定时器T1工作在模式2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚输出一个5kHz的方波。Fosc=12MHz.,67,精选,(例6-7),解:,(1)工作模式,可设置T0工作在模式3计数器方式,,把T0的引脚作附加的外部中断输入端,,TL0的计数初值为FFH,,当检测到T0引脚电平出现由1至0的负跳变时,TL0产生溢出,申请中断。,T0模式3下,TL0作计数用,而TH0用作8位的定时器,,定时控制P1.0引脚输出5kHz的方波信号。,68,精选,(例6-7),(2)计算初值,TL0的计数初值为FFH。,TH0的计数初值X为:,P1.0方波周期T=1/(5kHz)=0.2ms=200s,用TH0作定时100s时,,X=256-100 12/12=156,69,精选,(例6-7),(3)程序清单,MOV TMOD,#27H ;T0为模式3,计数方式,;T1,为模式2,定时方式,MOV TL0,#0FFH ;TL0计数初值,MOV TH0,#156 ;TH0计数初值,MOV TL1,#data ;data,是根据波特率,;要求设置的常数(初值),MOV TH1,#data,MOV TCON,#55H ;外中断、1边沿触发,,;启动T0,T1,MOV IE,#9FH ;开放全部,中断,70,精选,(例6-7),TL0,溢出中断服务程序(由000BH转来),TL0INT:MOV TL0,#0FFH ;TL0重赋初值,(中断处理),RETI,TH0溢出,TH0,溢出中断服务程序(由001BH转来),TH0INT:MOV TH0,#156 ;TH0重赋初值,CPL P1.0 ;P1.0取反输出,RETI,串行口及外部中断0,外部中断1的服务程序略。,71,精选,6.3.5 综合应用举例,例6-8:设时钟频率为6MHz。编写利用T0产生1s定时的程序。,72,精选,(例6-8),解:,(1)定时器T0工作模式的确定,模式0最长可定时16.384ms;,模式1最长可定时131.072ms;,模式2最长可定时512s;,定时1s,可选用模式1,每隔100ms中断一 次,中断10次为1s。,73,精选,(例6-8),(2)求计数器初值X,(2,16,X)12/(6 10,6,)=10010,-3,s,X=15536=3CB0H,因此:(TL0)=0B0H,(TH0)=3CH,74,精选,(例6-8),(3)实现方法,对于中断10次计数,可使T0工作在计数方式,也可用循环程序的方法实现。,本例采用循环程序法。,75,精选,(例6-8),(4)源程序清单,ORG 0000H,AJMP MAIN ;,上电,转向主程序,ORG 000BH,;T0中断服务程序入口地址,AJMP,SERVE,;转向中断服务程序,ORG 0030H,;主程序,76,精选,(例6-8),MAIN:MOV SP,#60H ;设堆栈指针,MOV B,#0AH ;设循环次数,MOV TMOD,#01H ;T0工作于模式1,MOV TL0,#0B0H ;装计数值低8位,MOV TH0,#3CH,;装计数值高8位,SETB TR0 ;启动定时,SETB ET0 ;T0开中断,SETB EA ;CPU开中断,SJMP$;等待中断,77,精选,(例6-8),SERVE:,MOV TL0,#0B0H ;重新赋初值,MOV TH0,#3CH,DJNZ B,LOOP ;B-1不为0,继续定时,CLR TR0 ;1s,定时到,停止T0工作,LOOP:RETI,;中断返回,END,78,精选,6.3.5 综合应用举例,例6-9:设计实时时钟程序。时钟就是以秒、分、时为单位进行计时。用定时器与中断的联合应用,。,79,精选,(例6-9),解:,(1)实现时钟计时的基本方法,计算计数初值。,时钟计时的最小单位是秒,但使用单片机定时器/计数器进行定时,即使按方式1工作,其最大定时时间也只能达131ms。因此,可把定时器的定时时间定为100ms,计数溢出10次即得到时钟计时的最小单位秒;而10次计数可用软件方法实现。,80,精选,(例6-9),假定使用定时器T0,以工作模式1进行100ms的定时。如fosc=6MHz,则计数初值X为:,(2,16,X)12/(6 10,6,)=10010,-3,s,X=15536=3CB0H,因此:,(TL0)=0B0H,(TH0)=3CH,81,精选,(例6-9),采用定时方式进行溢出次数的累计,计满10次即得到秒计时。,从秒到分和从分到时的计时是通过累计和数值比较实现的。,时钟显示即及显示缓冲区部分在这里略,可自行设计。,82,精选,(例6-9),(2)程序流程及程序清单,主程序(MAIN)的主要功能,进行定时器T1的初始化编程并启动T1,然后通过反复调用显示子程序,等待100ms定时中断的到来。其流程如图所示。,83,精选,设T1为模式1,设中断次数,清计时单元,开中断,启动T1,调用显示子程序,等待定时中断,图 时钟主程序流程,84,精选,(例6-9),(2)程序流程及程序清单,中断服务程序(PITO)的主要功能,进行计时操作。程序开始先判断计数溢出时候满了10次,不满表明还没达到最小计时单位秒,中断返回;如满10次则表示已达到最小计时单位秒,程序继续向下运行,进行计时操作。,要求满1秒则“秒位”32H单元内容加1,满60s则“分位”31H单元内容加1,满60min则“时位”30H单元内容加1,满24h则30H,31H,32H单元内容全部清0。中断服务程序流程如 图所示。,85,精选,保护现场,赋计数初值,到1s?,(32H)加1,(32H)=60?,(32H)清0,(31H)加1,(31H)=60?,(31H)清0,(30H)加1,(30H)=24?,(30H)清0,恢复现场,返回,入口,N,N,N,N,Y,Y,Y,Y,中断服务程序流程图,86,精选,ORG 0000H,AJMP MAIN,ORG 001BH ;T1的中断入口地址,AJMP SERVE ;转向中断服务程序,ORG 0030H ;主程序,MAIN:MOV SP,#60H ;设堆栈指针,MOV TMOD,#10H ;T1工作于模式1,MOV 20H,#0AH ;设循环次数,(例6-9),源程序如下:,87,精选,CLR A,MOV 30H,A ;时单元清0,MOV 31H,A ;分单元清0,MOV 32H,A,;秒单元清0,SETB ET1 ;T1开中断,SETB EA ;CPU开中断,MOV TL1,#0B0H ;装计数值低8位,MOV TH1,#3CH ;装计数值高8位,SETB TR1 ;启动定时,SJMP$;等待中断(可反复 调用显示子程序),(例6-9),88,精选,(例6-9),SERVE:PUSH PSW ;保护现场,PUSH ACC,MOV TL1,#0B0H ;重新赋初值,MOV TH1,#3CH,DJNZ 20H,RETUNT,;1s未到,返回,MOV 20H,#0AH ;重置中断次数,MOV A,#01H,ADD A,32H ;“秒位”加1,DA A ;转换为BCD码,MOV 32H,A,89,精选,CJNE A,#60H,,RETUNT,;未满60s,返回,MOV 32H,#00H ;计满60s,“秒位”清0,MOV A,#01H,ADD A,31H ;“分位”加1,DA A ;转换为BCD码,MOV 31H,A,CJNE A,#60H,,RETUNT,;未满60min,返回,MOV 31H,#00H;计满60min,“,分位”清0,(例6-9),90,精选,MOV A,#01H,ADD A,30H ;“时位”加1,DA A ;转换为BCD码,MOV 30H,A,CJNE A,#24H,RETUNT ;未满24h,返回,MOV 30H,#00H ;计满24h,“时位”清0,RETUNT:,POP ACC ;恢复现场,POP PSW,RETI ;中断返回,END,(例6-9),91,精选,
展开阅读全文