制作汽车网站黄浦专业做网站
文章目录
- 前言
 - 一、定时器介绍
 - 二、STC89C52定时器资源
 - 三、定时器框图
 - 四、定时器模式
 - 五、定时器相关寄存器
 - 六、定时器练习
 
前言
一个学习嵌入式的小白~ 有问题评论区或私信指出~
提示:以下是本篇文章正文内容,下面案例可供参考
一、定时器介绍
定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。
 定时器作用:
 1.用于计数系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作
 2.替代长时间的Delay,提高CPU的运行效率和处理速度
 …
二、STC89C52定时器资源
1.定时器个数三个(T0,T1,T2),TO和T1与传统的51单片机兼容,T2是此型号单片机增加的资源
 注意:定时器的资源和单片机的型号是关联在1起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,TO和T1的操作方式是所有51单片机所共有的。
三、定时器框图
定时器在单片机内部就像一个小闹钟一样,根据时钟的输出信号每隔一个时钟周期,数单元的数值就加以,当计数单元数值增加到“设定的闹钟提醒时候”时,计数单元就会向中断系统发出中断申请,产生“响铃提醒”,使得程序跳转到中断服务程序。
 
四、定时器模式
STC89C52的TO和T1均由四种工作模式
 模式0:13位定时器/计数器
 模式1:16位定时器/计数器(常用)
 模式2:8位自动重装载模式
 模式3:两个8位计数器
 工作模式1框图:
 
Sysclk:系统时钟,即晶振周期,本开发板上的晶振为12MHZ
 C/T=0>定时器,C/T=1->计数器
五、定时器相关寄存器


六、定时器练习
1.定时器定时闪烁灯
 软件流程
- 初始化化定时器0 
- 配置定时器0模式
 - 配置初值
 - 配置定时器中断
 
 - 写定时器中断程序对灯状态取反
 
代码演示:
#include <REGX52.H>
#include "Timer0.h"void Timer0_Init()
{TMOD &= 0xF0;//保持T1不变TMOD |= 0x01;//配置T0模式TH0 = (65535-1000)/256;//高八位TL0 = (65535-1000)%256;//第八位TF0 = 0;//清除中断标志位TR0 = 1;//开中断ET0 = 1;//中断允许控制位EA = 1;//中断总允许PT0 = 1;//优先级高
}
void mian()
{TImer0_Init();while(1);
}void Timer0_Routine() interrupt 1
{static unsigned int T0Count;//记录US数TH0 = (65535-1000)/256;//重新配置初值TL0 = (65535-1000)%256;T0Count++;if(T0Count > 1000){LED = ~LED;}
}
