;查询计数溢出SJMPLP1;未到50ms继续计数LP2:MOVTH1,3CH;重新置定时器初值MOVTL1,0B0H
3
fDJNZR3,LP1;未到1s继续循环RET;返回主程序END⒊工作方式28位计数器,仅用TL0计数,最大计数值为28256,计满溢出后,一方面使溢出标志TF01;另一方面,使原来装在TH0中的初值装入TL0。优点:定时初值可自动恢复缺点:计数范围小。适用于需要重复定时,而定时范围不大的应用场合。【例3】试用定时器1,方式2实现例1中1s的延时。解:因方式2是8位计数器,其最大定时时间为:256×1s256s,为实现1s延时,可选择定时时间为250s,再循环4000次。定时时间选定后,可确定计数值为250,则定时器1的初值为:XM计数值25625066H。采用定时器1,方式2工作,因此,TMOD20H。可编得1s延时子程序如下:DELAY:MOVR5,28H;置25ms计数循环初值MOVR6,64H;置250s计数循环初值MOVTMOD,20H;置定时器1为方式2MOVTH1,06H;置定时器初值MOVTL1,06HSETBTR1;启动定时器LP1:JBCTF1,LP2;查询计数溢出SJMPLP1;无溢出则继续计数LP2:DJNZR6,LP1;未到25ms继续循环MOVR6,64HDJNZR5,LP1;未到1s继续循环RET⒋工作方式3方式3仅适用于T0,T1无方式3。⑴T0方式3在方式3情况下T0被拆成二个独立的8位计数器TH0、TL0。①TL0使用T0原有的控制寄存器资源TF0TR0GATECTINT0组成一个8位的定时计数器;②TH0借用T1的中断溢出标志TF1运行控制开关TR1只能对片内机周脉冲计数组成另一个8位定时器不能用作计数器。⑵T0方式3情况下的T1T1由于其TF1、TR1被T0的TH0占用,计数器溢出时,只能将输出信号送至串行口,即用作串行口波特率发生器。【例4】用定时器0。方式3实现1s的延时。解:根据题意,定时器0中的TH0只能为定时器,定时时间可设为250s;TL0设置为计数器,计数值可设为200。TH0计满溢出后,用软件复位的方法使T0(P34)引脚产生负跳变,TH0每溢出一次,T0引脚便产生一个负跳变,TL0便计数一次。TL0计满溢出时,延时时间应为50ms,循环20次便可得到1s的延时。由上述分析可知,TH0计数初值为
4
fX(256250)606HTL0计数初值为X(256200)5638HTMOD00000111B07H可编得1s延时子程序如下:DELAY:MOVR3,14H;置100ms计数循环初值MOVTMOD,07H;置定时器0为方式3计数MOVTH0,06H;置TH0初值MOVTL0,38H;置TL0初值SETBTR0;启动TL0SETBTR1;启动TH0LP1:JBCTF1,LP2;查询TH0计数溢出SJMPLP1;未到500s继续计数LP2r