当前位置:文档之家› 第五章 51单片机的定时器计数器原理与应用

第五章 51单片机的定时器计数器原理与应用


定时/计数器的工作方式
1、方式0
方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。 TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标 志,向CPU发出中断请求。
TCON TF1 申请 中断 TR1 TF0 TR0 D7 溢出 TH0 8位 TL0 5位 &

CPU时序的有关知识
例如:外接晶振为12MHz时,89S52单片机的4个时间周 期的具体值为: 振荡周期=1/12us; 状态周期=1/6us; 机器周期=1us; 指令周期=1~4us;

在学习定时器之前需要明白的

51单片机有两组定时器/计数器,因为既可以定时, 又可以计数,故称之为定时器/计数器。 定时器/计数器和单片机的CPU是相互独立的。定时器/计数器工 作的过程是自动完成的,不需要CPU的参与。 51单片机中的定时器/计数器是根据机器内部的时钟或者是外部 的脉冲信号对寄存器中的数据加1。 有了定时器/计数器之后,可以增加单片机的效率,一些简单的 重复加1的工作可以交给定时器/计数器处理。CPU转而处理一 些复杂的事情。同时可以实现精确定时作用。
第五章 51单片机的定时器计数器原理 与应用
本节内容
定时器的原理 定时器的使用
CPU时序的有关知识
振荡周期:为单片机提供定时信号的振荡源的周期 (晶振周期或外加振荡周期) 状态周期:2个振荡周期为1个状态周期,用S表示。 振荡周期又称S周期或时钟周期。 机器周期:1个机器周期含6个状态周期,12个振荡周 期。 指令周期:完成1条指令所占用的全部时间,它以机器 周期为单位。
2、控制寄存器TCON
TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控 制定时/计数器的启动和中断申请。其格式如下:



TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动 置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随 时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软 件置1或清0,同硬件置1或清0的效果一样。 TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0 时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数 器的启动与停止。 TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。 TR0(TCON.4):T0运行控制位,其功能与TR1类同。

中断源
中断源符号 /INT0 T0 /INT1 T1 TI/RI 名称 外部中断0 中断引起原因 P3.2引脚低电平或下降沿信号 定时/计数器0计数回0溢出 P3.3引脚低电平或下降沿信号 定时/计数器1计数回0溢出 中断号 0 1 2 3 4
定时器0中 断
外部中断1 定时器1中 断
串行通信完成一帧数据发送或接收引 串行口中断 起中断
定时/计数器的工作方式
2、方式1 方式1的计数位数是16位,由TL0作为低8位,TH0 作为高8位,组成了16位加1计数器 。
TCON TF1 申请 中断 TR1 TF0 TR0 D7 溢出 1 TH0 8位 TL0 8位 &
≥1
TMOD T0引脚 1 0 M0 M1 C/T 0 机器周期 GATE M0 1 D0 INT0引脚 M1 C/T GATE D7 D0



89C51单片机定时器结构
定时/计数器的实质是加1计数器(16位),由高8位和低8 位两个寄存器THx和TLx组成。TMOD是定时/计数器的工作方 式寄存器,确定工作方式和功能;TCON是控制寄存器,控制 T0、T1的启动和停止及设置溢出标志。
T1引脚 T0引脚
机器周 期脉冲
TH1
TL1
TH0
≥1
机器周期 TMOD 1 1 M0 M1 C/T 0 机器周期 GATE M0 ຫໍສະໝຸດ M1 C/T GATE D7 D0
D0
INT0引脚
工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。
使用定时器,该做哪些工作
初始化程序应完成如下工作:
对TMOD赋值,以确定T0和T1的工作方式。 计算初值,并将其写入TH0、TL0或TH1、TL1。 中断方式时,则对EA赋值,开放定时器中断。 使TR0或TR1置位,启动定时/计数器定时或计数。
作业
1、在给定的TimerLED.DSN文件中使用定时
器1的方式1编程实现秒计时。计时从0开始, 到60秒时,自动归零,再从0开始计时。 2、在1的基础上使用按键start控制,使计数 开始暂停;使用按键stop控制,使计数器停 止清零。(按键的控制可以使用延时方式, 也可以使用中断方式)
计数个数与计数初值的关系为:X=28-N 工作方式2特别适合于用作较精确的脉冲信号发生器。
定时/计数器的工作方式
4、方式3 方式3只适用于定时/计数器T0,定时器T1处于方式3时相当 于TR1=0,停止计数。
溢出 申请 中断 申请 中断 TCON TF1 TR1 TF0 TR0 溢出 TH0 8位 T0引脚 1 TL0 8位 &
定时器/计数器的编程和应用
4种工作方式中,方式0与方式1基本相同,由于方式0 是为兼容MCS-48而设,初值计算复杂,在实际应用 中,一般不用方式0,而采用方式1。 1、方式1应用 例1-1 假设系统时钟频率采用12MHz,要在P1.0上输 出一个周期为2ms的方波,如图所示。
方波的周期用T0来确定,让T0每隔1ms计数溢出1次 (每1ms产生一次中断),CPU响应中断后,在中断服 务程序中对P1.0取反。 (1)计算初值X
(1) 用定时器0的方式1编程,采用查询方式,程序如下:
# include <reg51.h> sbit P1_0=P1^0 ;
void main(void)
{ TMOD=0x01 ; TR0=1 ; /* 设置定时器1为非门控制方式1*/ /* 启动 T/C0 */ /* 装载计数器初值 */ /* 查询等待TF0置位 */ /* 定时时间到P1.0反相 */ /* 软件清 TF0 */
TL0
内部总线
GATE TF1 TR1 TF0 TR0 C/T C/T M1 M0 M1 M0
TCON
GATE
TMOD
外部中断相关位
T1方式
T0方式
定时/计数器的控制
80C51单片机定时/计数器的工作由两个特殊功能 寄存器控制。TMOD用于设置其工作方式;TCON用 于控制其启动和中断申请。 1、工作方式寄存器TMOD 工作方式寄存器TMOD用于设置定时/计数器的工作 方式,低四位用于T0,高四位用于T1。其格式如下:
GATE是门控位, GATE=0时,用于控制定时器的启动是否受 外部中断源信号的影响。只要用软件使TCON中的TR0或 TR1为1,就可以启动定时/计数器工作;GATA=1时,要用 软件使TR0或TR1为1,同时外部中断引脚INT0/1也为高电平 时,才能启动定时/计数器工作。即此时定时器的启动条件, 加上了INT0/1引脚为高电平这一条件。 C/T :定时/计数模式选择位。C/T =0为定时模式;C/T =1为计 数模式。 M1M0:工作方式设置位。定时/计数器有四种工作方式。
机器周期=12/fosc=1 μs
需计数次数=1000/(12/fosc)=1000/1=1000
由于计数器是加1计数,为得到1000个计数之后的 定时器溢出,必须给定时器置初值为-1000(即1000 的补数)。
(2)初始化程序设计 对寄存器IP、IE、TCON、TMOD的相应位进行正确设置, 将计数初值送入定时器中。 (3)程序设计 中断服务程序除产生方波外,还要注意将计数初值重 新装入定时器中,为下一次中断作准备。 参考程序:
20
while(1)
{ TH0= -(1000/256) ; TL0= -(1000%256) ; do { } while (!TF0) ; P1_0=!P1_0; TF0=0; } }
(2) 用定时器0的方式1编程,采用中断方式。程序如下: # include <reg51.h> sbit P1_0=P1^0 ; void time (void) interrupt 1 using 1 /* T/C0中断服务程序入口 */ { P1_0=!P1_0 ; /* P1.0取反 */ TH0= -(1000/256); / * 重新装载计数初值 */ } void main( void ) { TMOD=0x01 ; /* T/C0工作在定时器非门控制方式1 */ P1_0=0; TH0= -(1000/256 ); /* 预置计数初值 */ TL0= -(1000%256) ; EA=1 ; /* CPU中断开放 */ ET0= 1 ; /* T/C0中断开放 */ TR0=1 ; /* 启动T/C0开始定时 */ while(1) ; /* 等待中断 */ } 21
≥1
TMOD T0引脚 1 1 0 0 0 M0 M1 C/T 机器周期 GATE M0 1 D0 INT0引脚 M1 C/T GATE D7 D0
定时器模式时有:N=t/ Tcy 计数初值计算的公式为:X=213-N。 定时器的初值还可以采用计数个数直接取补法获得。 计数模式时,计数脉冲是T0引脚上的外部脉冲。 门控位GATE具有特殊的作用。当GATE=0时,经反相 后使或门输出为1,此时仅由TR0控制与门的开启,与门输出 1时,控制开关接通,计数开始;当GATE=1时,由外中断引 脚信号控制或门的输出,此时控制与门的开启由外中断引脚 信号和TR0共同控制。当TR0=1时,外中断引脚信号引脚的 高电平启动计数,外中断引脚信号引脚的低电平停止计数。 这种方式常用来测量外中断引脚上正脉冲的宽度。
计数个数与计数初值的关系为:X=216-N
相关主题