定时器/计数器方式3的编程和应用
扫描二维码
随时随地手机看文章
方式3下的T0和Tl大不相同。T0工作在方式3时,TL0和TH0被分成两个独立的8位定时器/计数器。其中,TL0可作为8位的定时器/计数器,而TH0只能作为8位的定时器。此时T1只能工作在方式0、1或2。
一般情况下,当定时器Tl用作串行口波特率发生器时,T0才设置为方式3。此时,常把定时器Tl设置为方式2,用作波特率发生器。
假设某AT89S51单片机应用系统的两个外部中断源已被占用,设置定时器Tl工作在方式2,用作波特率发生器。现要求增加一个外部中断源,并控制P1.0引脚输出一个5 kHz(周期为200μs)的方波。假设系统时钟为12 MHz。
基本思想:设置TL0工作在方式3计数模式,TL0的初值设为0FFH,当检测到T0引脚信号出现负跳变时,TL0溢出,同时向CPU申请中断,这里T0引脚作为一个负跳沿触发的外部中断请求输入端。在中断处理子程序中,启动TH0,TH0事先被设置为方式3的100 μs定时,从而控制P1.0输出周期为200 μs的方波信号,如下图所示。
(1)初值X计算。TL0的初值设为0FFH。
5 kHz方波的周期为200 μs,因此TH0的定时时间为100μs。TH0初值X计算如下
(2)程序设计。参考程序如下: