工作方式0和工作方式1有一个共同特点,就是计数溢出后计数器全为0。因此,循环定时应用时就需要反复设置计数初值。这不但影响定时精度,而且也给程序设计带来麻烦。工作方式2就是针对此问题而设置的,该方式是定时器自动重装载的操作方式,在这种方式下,它的工作过程与方式0、方式1基本相同,只不过在溢出的同时,将8位二进制初值自动重装载,即在中断服务子程序中不需要编程送初值。
1.电路逻辑结构
在工作方式2下,16位计数器被分为两部分,TL作为计数器使用,TH作为预置寄存器使用,初始化时把计数初值分别装入TL和TH中。当计数溢出后,由预置寄存器TH以硬件方法自动给计数器TL重新加载。图5-6所示为定时器/计数器0在工作方式2下的逻辑结构。
图5-6 定时器/计数器0工作方式2的逻辑结构
初始化时,8位计数初值同时装入TL0和TH0中。当TL0计数溢出时,置位TF0,并用保存在预置寄存器TH0中的计数初值自动加载TL0,然后开始重新计数,如此重复。这样不但省去了用户程序中的重装指令,而且也有利于提高定时精度。但这种工作方式是8位计数结构,计数值有限,最大只能到255。
2.循环定时应用
【例5-4】 P1.1输出脉冲宽度调制(PWM)信号,即脉冲频率为1kHz、占空比为2∶5的矩形波,以控制直流电动机按一定的速度转动,晶振频率为6MHz。
解:频率为1kHz、周期为1ms、占空比为2∶5的P1.1输出的矩形波的波形如图5-7所示。
图5-7 矩形波的波形(www.xing528.com)
对P1.1取反时,由于高、低电平的时间不同,可找出一个时间基准,如100μs、200μs。本例设定时间基准200μs,即定时时间为200μs。
定时初值为
X=28-T/T机=28-200/2=256-100=156=9CH
高电平的软件计数为2,低电平的软件计数为3。定时器以查询方式工作。
【例5-5】 定时器0外部输入端P3.4作为计数脉冲输入端,利用手控单脉冲信号作为计数输入脉冲,编写控制程序,每输入10个脉冲,工作寄存器R0的内容加一,晶振频率为6MHz。
解:定时器以中断方式工作。用定时器0方式2时,定时器/计数器方式寄存器TMOD低4位中的M1M0应取10。可设定为软件启动定时器,故GATE取0。因用计数功能,C/T取1。定时器方式寄存器TMOD高4位为无关位,一般都取0,所以TMOD应为06H。计数初值为
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。