51单片机自动计算计时器起点代码
时间: 2023-07-14 09:12:58 浏览: 51
以下是用51单片机实现自动计算计时器起点的代码:
```c
#include <reg51.h>
#define FREQ 12000000UL // 定义时钟频率为12MHz
#define TIMER1_PRESCALER 12 // 定时器1预分频器为12
#define TIMER1_TARGET_TIME 5000 // 定时器1目标计数时间为5秒
sbit LED = P1 ^ 0; // 将P1.0端口定义为LED控制口
unsigned int cnt = 0; // 初始化计数器
void timer1_init() // 定时器1初始化函数
{
TMOD |= 0x10; // 设置定时器1为模式1
TH1 = (65535 - (FREQ / TIMER1_PRESCALER / 1000 * TIMER1_TARGET_TIME)) / 256; // 计算定时器1的重载值
TL1 = (65535 - (FREQ / TIMER1_PRESCALER / 1000 * TIMER1_TARGET_TIME)) % 256;
ET1 = 1; // 开启定时器1中断
EA = 1; // 开启总中断
TR1 = 1; // 启动定时器1
}
void timer1_isr() interrupt 3 // 定时器1中断服务程序
{
cnt++; // 计数器加1
if (cnt == 10) // 如果计数器达到10,即5秒
{
LED = ~LED; // 翻转LED状态
cnt = 0; // 重置计数器
}
}
void main()
{
timer1_init(); // 初始化定时器1
while (1); // 主循环中空转
}
```
这段代码实现了一个计时器功能,当计时器达到5秒时,LED状态会翻转一次,表示计时器已经开始计时了。在代码中,我们使用了定时器1和一个计数器来实现计时器功能。定时器1的重载值是通过预分频器、目标计数时间和时钟频率计算得出的。在定时器1中断服务程序中,每次计数器加1,当计数器达到10时(即5秒),LED状态会翻转一次,并将计数器重置为0。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)