用Keil C51开发定时器/计数器
基本的51单片机内部有两个16位可编程的定时器/计数器T0和T1。它们各自具有4种工作状态,其控制字和状态均在相应的特殊功能寄存器中,可以通过软件对控制寄存器编程设置,使其工作在不同的定时状态或计数状态。
现在,许多厂家生产的8051兼容单片机上,还加入了定时器/计数器2,使单片机的应用更为灵活,适应性更强。
很多8051单片机的书籍都对定时器/计数器有详细的介绍,我们在此不再详细地讨论。但因为编写或或阅读程序时经常要查阅定时器/计数器的设置情况,因此我们仅对一些编程时经常要用到的较重要的寄存器和设置方式进行简要简介。
1 定时器/计数器简介
8051单片机的定时器/计数器基本结构如图1-1所示,定时器T0由两个8位计数器TH0和TL0构成,定时器T1也由两个8位计数器TH1和TL1构成,TMOD寄存器控制定时器的工作方式,TCON寄存器控制定时器的启动和停止以及定时器的状态。
图1-1 定时器/计数器结构
在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的。实际上,定时器就是单片机机器周期的计数器。因为每个机器周期包含晶体振荡器的12个振荡周期,而每一个机器周期定时器加1,故其频率为晶振频率的1/12。如果晶振频率为12MHz,则定时器每接收一个输入脉冲的时间为1μs。
选择计数器工作方式时,计数脉冲来自相应的外部输入引脚T0(P3.4)或T1(P3.5)。在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1。
2 控制和状态寄存器
(1)定时器控制寄存器(TCON)
TCON为定时器/计数器的控制寄存器,同时也锁存外部中断请求标志,各位定义如下。
? TF1:定时器/计数器1中断请求标志位。当定时器计数满溢出回零时,由硬件置位,并可申请中断。当CPU响应中断并进入中断服务程序后,TF1自动清零。
? TR1:定时器/计数器1运行控制位,靠软件置位或清除。置位时,定时器/计数器1接通工作,清除时停止工作。
? TF0:定时器/计数器0中断请求标志位,其功能和操作情况类同于TF1。
? TR0:定时器/计数器0运行控制位,其功能和操作情况类同于TR1。
? IEl:外部中断1的中断申请标志,检测到在INT引脚上出现的外部中断信号的下降沿时,由硬件置位,申请中断。进入中断服务程序后被硬件自动清除。
? IT1:外部中