解决方案

51单片机定时器的使用及原理

seo靠我 2023-09-25 05:25:02

51单片机有2个16位定时器/计数器:T0,T1。

定时器:没经过一个机器周期,寄存器加1。当寄存器装满的时候移除.

TH存放高8位,TL存放低8位;最高能计到65535(十进制),能计65536次。

如:SEO靠我晶振为11.05926MHz

一个机器周期(一个机器周期有12个时钟周期组成)的时间为 :

(1 / 11.05926)×12 ≈ 1.085 微秒

计满的时间为:1.085 × 65536 ≈ 71毫秒

SEO靠我时器的控制寄存器

TCON地址为0x88

位76543210符号TF1TR1TF0TR0IE1IT1IE0IT0

0~3位用来控制外部中断。

TF:定时器溢出标志。溢出时该位自动置1。中断执行时硬件清0或软件SEO靠我清0

TR:定时器运行控制位。置1开始计时,清0停止计

定时器的工作模式寄存器

TMOD地址0x89

位76543210符号T1T1T1T1T0T0T0T0GATEC/TM1M0GATEC/TM1M0

工作模式SEO靠我设置位M1,M0

00011011模式0模式1模式2模式3

模式1:16位的计数器,定时器1初值存放寄存器TH1,TL1。定时器0初值存放寄存器TH0,TL0。

模式2:自动装载8位计数器。主要应用在串口波SEO靠我特率发生器。

GATE:门控位

C/T:计数模式/定时模式,为0则为定时模式。

使用定时器步骤

1、设置定时器工作模式寄存器TMOD

2、设置计数寄存器的初值

3、设置定时器控制寄存器TCON

代码示例(LED灯一SEO靠我秒闪烁):

#include<reg52.h>#define uchar unsigned charsbit LED1 = P1^0;uchar counter = 0;void main() SEO靠我 {TMOD = 0x10; //定时器 工作模式1TH1 = 0x4b;TL1 = 0xfe;//定时50msTR1 = 1; //启动定时器while(1){if(TF1 == 1){TF1SEO靠我 = 0;TH1 = 0x4b;TL1 = 0xfe;//定时50mscounter ++;}if(counter == 20) //1秒{counter = 0;LED1 = ~LED1;} } SEO靠我 }
“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2