写一段使用单片机内部定时器实现延迟精准定时程序的初始化
时间: 2024-02-11 09:07:12 浏览: 79
单片机定时器延时程序
5星 · 资源好评率100%
汇编语言实现单片机内部定时器延迟精准定时程序的初始化:
```
ORG 0H ;程序起始地址
MOV TMOD, #01H ;定时器0工作在模式1(16位定时器)下
MOV TH0, #0FDH ;定时器0高8位赋初值,定时1ms
MOV TL0, #0H ;定时器0低8位赋初值
SETB TR0 ;启动定时器0
WAIT: JB TF0, WAIT ;等待定时器0中断标志位TF0置位
CLR TR0 ;关闭定时器0
CLR TF0 ;清除定时器0中断标志位TF0
... ;延迟精准定时程序的具体代码
```
C语言实现单片机内部定时器延迟精准定时程序的初始化:
```
#include <reg51.h>
void delay_ms(unsigned int ms)
{
TMOD = 0x01; //定时器0工作在模式1(16位定时器)下
while (ms--)
{
TH0 = 0xFD; //定时器0高8位赋初值,定时1ms
TL0 = 0x00; //定时器0低8位赋初值
TR0 = 1; //启动定时器0
while(!TF0); //等待定时器0中断标志位TF0置位,即定时器溢出
TR0 = 0; //关闭定时器0
TF0 = 0; //清除定时器0中断标志位TF0
}
}
void main()
{
... //其他初始化代码
delay_ms(1000); //延迟1s
... //延迟精准定时程序的具体代码
}
```
其中,定时器0的初值为0xFD00,计时1ms,每延迟1ms,定时器0的计数器减1,当计数器减为0时,定时器0溢出,定时器0中断标志位TF0置位,程序跳出等待循环,进入延迟精准定时程序的具体代码。
阅读全文