51定时器0延时1ms
时间: 2023-07-18 21:43:19 浏览: 58
在51单片机中,我们可以使用定时器0来实现延时1ms的功能。具体方法如下:
1. 设置定时器0的工作模式为模式1,即16位定时器模式,同时将其时钟源设置为时钟频率12T模式。
2. 计算出定时器0的初值TH0和TL0。由于时钟源为12T模式,每个机器周期为1/12MHz=83.33ns,故1ms为12,000个机器周期。由于定时器0是16位计数器,故初值为65536-12000=53536,即TH0=0xd1,TL0=0x40。
3. 启动定时器0,并等待定时器溢出。定时器溢出后,TH0和TL0会自动重新装载初值。
4. 当定时器0溢出次数达到所需的延时次数时,停止定时器0的工作。
具体的代码实现如下:
```c
#include <reg52.h>
void delay_ms(unsigned int ms)
{
unsigned char th0, tl0;
unsigned int i;
th0 = 0xd1;
tl0 = 0x40;
TMOD &= 0xf0; // 设置定时器0的工作模式为模式1
TMOD |= 0x01;
TH0 = th0; // 设置定时器0的初值
TL0 = tl0;
TR0 = 1; // 启动定时器0
for (i = 0; i < ms; i++)
{
while (TF0 == 0); // 等待定时器溢出
TF0 = 0; // 清除定时器溢出标志
}
TR0 = 0; // 停止定时器0
}
```
调用delay_ms函数即可实现1ms的延时。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](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)