如何利用51单片机内部定时器实现对时间的操作

控制/MCU

1814人已加入

描述

51 单片机编程经常要求对时间进行某种操作,比如数码管的动态扫描显示、延时等等对于定时或延时,一般有三种方法实现:

①、软件定时:如常用的延时程序 Delay(),在定时过程中,CPU 循环测试延时变量是否满足条件,此时 CPU 利用率低下;

②、硬件定时:如外部芯片555 时基电路,通过外部阻容,达到一定的延时功能,改变阻容大小可以改变延时长度,这种定时器取决于硬件,设定好以后不能通过软件更改;

③、定时器:利用单片机内部定时器,实现对时间的操作。

1、定时器功能:

(1)、定时:产生一个标准的时间间隔:如 20 ms,100 ms 等,单片机使用这种方式可以产生一个符合某一要求的脉冲方波;

(2)、计数:对外部的事件(脉冲)进行统计,很明显外部事件的发生是随机的,单片机不可能预知外部事件何时发生,但可以进行统计,当达到所要求的数值时,单片机进行相应的操作。

2、四种工作模式:

模式 0:13 位计数器模式

定时器

在某一个初值的基础上加 1 计数,当计数器计满为全“1”,再来一个计数脉冲时,就产生一个“溢出中断信号”TF1=1。

注:由于低 8 位计数器中的高三位没有参与工作,故填装初值时应“避开”此三位。

模式 1:16 位定时/计数模式

定时器

类同于模式 0,由于两个计数器为完整的 8 位,故将计算好的 16 位初值可直接填装到 TH、TL 中。

模式 2:8 位自动重装初值模式

定时器

TL 做计数器,TH 做初值寄存器,工作前 TL1,TH1 分别预置相同的初值,TL1 计数时,产生溢出的同时,将 TH1 中的初值自动重装 TL1,TL1 继续计数。

模式 3:组合扩展模式(仅适用于 T0)

定时器

将 T0 和 T1 重新进行“拆分、组合”,将 T0 变为由 TH0,TL0 组成的两个独立的 8 位定时/计数器。

补充:四种模式比较:

定时器

3、定时器参数:

(1)、定时器的个数:网上见到的 51 单片机教程都说定时器有 2 个:定时器 0 和定时器 1,实际上有的单片机有 3 个定时器,如博主买的开发板上的单片机:STC89C54RD+,因此,编程时注意看好有几个定时器……

(2)、TL,TH:初值寄存器,分别是低 8 位,高 8 位,后边加上一个数字 0 或 1,代表定时器 0 或定时器 1

(3)、TMOD:模式控制寄存器,属于 SFR 特殊功能寄存器,地址:89H,决定定时/计数器的四种工作模式,8 位

定时器

GATE 选通门:GATE=0 时,只要 TR=1,计数器就开始工作

GATE=1 时,只有 INT=TR=1 时,计数器工作(用来测量 INT 脚高电平脉冲的宽度)

C/T:计数器输入脉冲选择开关,决定着计数器的“定时”或“计数”的两种工作方式

C/T=0:定时方式:计数器接收内部时钟信号 fosc

C/T=1:计数方式:计数器接收引脚上的外部信号

M1、M0 模式选择:确定 4 种工作模式

(4)、TCON:控制寄存器,属于 SFR 特殊功能寄存器,地址:88H,8 位

定时器

TF:定时器溢出标志,计数器溢出时硬件自动置位,即 TF=1,进入中断后再由硬件自动清除(TF=0)

TR:计数器的控制位

TR=1:计数器开始工作

TR=0:计数器停止计数

IE:外部中断 INT 的请求标志

当单片机检测到 INT 引脚上有下降沿时,IE=1 申请中断,进入中断服务程序时,硬件自动清除 IE 标志

IT:外中断触发类型控制

IT=1 时,外中断信号的下降沿触发 IE 标志

IT=0 时,外中断信号的低电平触发 IE 标志

(5)、作为“定时器”使用时,“定时”与“初值”的关系如下:

T = ( M - TC ) × t

其中:T:定时时间

M:计数器的模

TC:计数初值

t:计数器计数脉冲的周期(t = fosc / 12)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分