:MOVTH0,06H;重置TH0初值CLRP34;T0引脚产生负跳变NOP;负跳变持续NOPSETBP34;T0引脚恢复高电平JBCTF0,LP3;查询TH0计数溢出SJMPLP1;100ms未到继续计数LP3MOVTL038H;重置TL0初值DJNZR3,LP1;未到1s继续循环RET四、定时计数器的应用定时计数器的应用定时⒈定时器计数器初始化的主要内容1选择工作方式:通过对方式寄存器TMOD进行设置2给定时器赋初值3根据需要设置中断控制字4启动定时器1定时器计数器初值设定方法1根据定时长短,选择工作方式2计算定时计数初值80C51定时计数初值计算公式:
其中N与工作方式有关方式0时N13;方式1时N16;方式2、3时N8。1机周时间与主振频率有关机周时间12fosc,fosc12MHZ时,机周1S;fosc6MHZ时,1机周2S。【例】已知晶振6MHz,要求定时05mS,试分别求出T0工作于方式0、方式1、方式2、方式3时的定时初值。解:⑴工作方式0:213500S2S819225079421F06H,1F06H化成二进制:1F06H0001111100000110B0001111100000110B
5
f其中:低5位00110前添加3位000送入TL0,TL000000110B06H;高8位11111000B送入TH0TH011111000BF8H。⑵工作方式1:T0初值216500s2s6553625065286FF06HTH0FFH;TL006H。⑶工作方式2:T0初值28500s2s2562506TH006H;TL006H。⑷工作方式3:T0方式3时,被拆成两个8位定时器,定时初值可分别计算,计算方法同方式2。两个定时初值一个装入TL0,另一个装入TH0。因此:TH006H;TL006H从上例中看到,方式0时计算定时初值比较麻烦,根据公式计算出数值后,还要变换一下,容易出错,不如直接用方式1,且方式0计数范围比方式1小,方式0完全可以用方式1代替,方式0与方式1相比,无任何优点。3定时器计数器应用步骤⑴合理选择定时器计数器工作方式⑵计算定时计数器定时初值按上述公式计算⑶编制应用程序①定时计数器的初始化包括定义TMOD、写入定时初值、设置中断系统、启动定时计数器运行等。②正确编制定时计数器中断服务程序注意是否需要重装定时初值,若需要连续反复使用原定时时间,且未工作在方式2,则应在中断服务程序中重装定时初值。【例】试用T1方式2编制程序,在P10引脚输出周期为400S的脉冲方波,已知fosc12MHZ。解:①计算定时初值T1初值28200s1s2562005638HTH138H;TL138H②设置TMOD:00100000B20HT0控制位,与T1无关控制位,T1方式2T1定时器T1启动与INT1无关③编制程序如下:ORG0000H复位地址LJMPMAIN转主程序ORG001BHT1中断r