第三篇 C51单片机编程指南

第9章 C51定时器/计数器程序设计

C51语言是运行于单片机上的程序语言,因此,学习C51语言必须结合单片机来进行。51系列单片机集成了多种硬件资源,这些资源均可以使用C51语言来进行控制。本章开始便介绍如何将C51程序应用于单片机上。

51系列单片机集成了两个可编程的定时器/计数器,即定时/计数器0和1,简称T0和T1,有4种工作方式可供选择。单片机内部通过专用寄存器TMOD、TCON来设置定时/计数器工作的参数,例如方式选择、定时计数选择、运行控制、溢出标志、触发方式等控制字。本章介绍如何使用C51语言来进行定时器/计数器程序设计。

9.1 定时器/计数器简介

51系列单片机具有两个通用定时器/计数器T0和T1。T0和T1都具有定时和计数两种功能,可以通过特殊功能寄存器来选择,下面分别介绍。

❑计数。计数功能就是对计数脉冲进行计数。其中,计数脉冲来自相应的外部输入引脚P3.4(T0)或P3.5(T1)。当该引脚的输入信号发生由高电平至低电平的负跳变时,计数器(TH0、TL0或TH1、TL0)的值增加1。

❑定时。定时功能是对时间进行统计。定时器/计数器的定时功能其实也是通过计数实现的,只不过,此时的计数脉冲来自于单片机的内部时钟脉冲。

除此之外,定时器/计数器T0和T1共有4种工作模式,同样可以通过特殊功能寄存器来选择。

9.1.1 定时器/计数器的结构

定时器/计数器的结构如图9.1所示,其核心是一个16位的加1计数器。其中,16位的定时器/计数器T0由两个8位计数器TH0和TL0构成,16位的定时器/计数器T1由两个8位计数器TH1和TL1构成。另外,寄存器TMOD主要用于指定各定时器/计数器的功能和工作模式;寄存器TCON用于控制定时器/计数器的启动和停止计数,同时也设置定时器/计数器的状态。

第三篇 C51单片机编程指南 - 图1

图 9.1 定时器/计数器的结构示意图

定时器/计数器T0和T1在工作时,每输入一个脉冲,计数器加1。当T0或T1计数满,即计数器每个二进制位全部为1时,如果再有输入脉冲,计数器将溢出,此时计数器清零,从而表示定时时间已到或者计数值已满。此时,硬件在寄存器TCON中置位中断请求标志位TF0或TF1,并向8051CPU发出中断处理申请,用户便可以在C51程序中进行相应的任务处理。

TMOD和TCON属于特殊功能寄存器,其值可以在单片机C51程序中设置,这样便于单片机程序操作。当单片机进行系统复位时,寄存器TMOD和TCON的所有控制位都清零。下面分别介绍定时器/计数器特殊功能寄存器的使用方法。