51单片机--定时器

各种周期之间的关系

在这里插入图片描述
51单片机T数是12.

中断寄存器

单片机的中断寄存器主要包括:

IE   – 中断允许控制寄存器(重点)
IP   – 中断优先级控制寄存器
TMOD – 定时器工作方式寄存器(重点)
TCON – 定时器控制寄存器(重点)
SCON – 串口控制寄存器
THx/TLx – 定时器初值寄存器(重点)

中断允许控制寄存器 IE
在这里插入图片描述

EA -全局中断允许位,当此位是1时中断可用。(重要)
ET2-定时器/计数器2中断允许位
ES -串口中断允许位
ET1-定时器/计数器1中断允许位
EX1-外部中断1允许位
ET0-定时器/计数器0中断允许位 (重要)
EX0-外部中断0允许位

定时器控制寄存器 TCON
在这里插入图片描述

TF1 定时器1溢出标志位
TR1 定时器1运行控制位,将该位置1时启动定时器1(重要)
TF0 定时器0溢出标志位
TR0 定时器0运行控制位,将该位置1时启动定时器0 (重要)
IE1 外部中断1请求标志
IT1 外部中断1触发方式选择位
IE0 外部中断0请求标志
IT0 外部中断0触发方式选择位

定时器初值寄存器 THx/TLx

第一种

TH0=(65536-50000)/256; //定时器T0的高8位赋初值
TL0=(65536-50000)%256; //定时器T0的高8位赋初值
50000就是我们设置的时间,比如机械周期是1us,那么50000*1us=50ms

第二种

TH0 = 0x3c;//高位
TL0 = 0xb0; //低位
首先把高低位拼在一起,THTL=0x3cb0,转换成十进制为THTL =15536,65536-15536=50000

定时器工作方式寄存器 TMOD

### 关于51单片机定时器的应用实例 在蓝桥杯竞赛中,对于51单片机定时器的操作是一个重要的考点。下面提供一段基于51单片机的简单定时器应用示例代码,该例子展示了如何配置并启动一个定时器以实现特定时间间隔的任务执行。 #### 定时器初始化与使用案例 ```c #include <reg52.h> // 设置全局变量用于存储计数值 unsigned int count = 0; void Timer_Init(void){ TMOD = 0x01; // 设置T0为模式1 (16定时器)[^4] TH0 = (65536-50000)/256; // 计算高字节初值, 假设系统频率为12MHz,则此设定可得到约5ms的时间延迟 TL0 = (65536-50000)%256; // 计算低字节初值 ET0 = 1; // 开启T0中断允许 EA = 1; // 总中断使能 } void main(){ Timer_Init(); // 初始化定时器 while(1){ // 主循环等待中断触发事件发生 if(count >= 200){ // 如果已经过了大约1秒(每20次中断代表一次完整的5ms*20=100ms) P1 = ~P1; // 切换P1端口状态作为LED闪烁信号输出 count = 0; // 清零计数器重新开始下一轮计时 } } } // 中断服务子程序定义 void Timer_ISR(void) interrupt 1{ TH0 = (65536-50000)/256; // 重载高字节初值 TL0 = (65536-50000)%256; // 重载低字节初值 TR0 = 1; // 启动定时器继续运行 count++; // 每当中断被调用则增加计数 } ``` 这段代码实现了利用51单片机内部定时器产生固定周期性的脉冲序列,并通过改变外部硬件连接可以很容易地观察到实际效果,比如让LED灯按照一定规律亮灭。这里采用的是最基础的方式来进行编程,在更复杂的情况下还可以考虑加入更多特性如PWM波形生成等功能[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值