9.2 定时器/计数器工作模式0的C51程序设计

51系列单片机的定时器/计数器工作模式0是13位计数器,由一个高8位(0~7)计数器(TH0或TH1)和一个具有32位分频的低8位计数器中的(TL0或TL1)的低5位(0~4)组成。

注意工作模式0使用的13位计数器是TL0(或TL1)的低5位和TH0(或TH1)的8位组成,不是TH0(或TH1)的低5位和TL0(或TL1)的8位组成。

9.2.1 定时器/计数器工作模式0

在工作模式0中,定时器/计数器T1和T0的组成结构与功能完全相同,当置寄存器TMOD的M1=0、M0=0时,T0和T1就工作在模式0状态。这里以T0为例进行介绍,T1的使用类似。

在工作模式0下,当TL0的低5位计数溢出时,向TH0进位,当TH0计数器溢出时,计数器清零,并向溢出控制位TF0进位置1,同时向8051 CPU发出中断请求。无论工作于计数方式还是定时方式,其运行原理都是相同的。

在工作模式0状态下,门控制位GATE和工作方式选择位figure_0279_0097决定了其工作状态,原理如下。

figure_0279_0098时,计数时钟由晶体振荡器12分频产生,13位计数器对机器周期进行计数,即为定时器工作方式,其定时时间=(213-T0初值)×时钟周期×12。

figure_0279_0099时,外部计数脉冲由P3.4输入。当计数脉冲发生负跳变时,计数器加1,即为计数器工作方式。

当GATE=0时,由TR0控制T0的开启;当TR0=1时,启动计数器工作,直至溢出,溢出时计数器清零,TF0=1,向CPU申请中断;当TR0=0时,计数器停止工作。一般情况常使用这种方式。

当GATE=1时,T0的开启由figure_0279_0100和TR0共同控制。当TR0=1时,外部中断信号通过figure_0279_0101直接控制定时/计数器的启动和停止,当figure_0279_0102由0变为1时,启动计数;当figure_0279_0103由1变为0时,停止计数。当figure_0279_0104启动计数,figure_0279_0105停止计数,这样就记录了一个脉冲的宽度,这种方法常用来测量在figure_0279_0106引脚出现的正脉冲的宽度。