51单片机主频12Mhz写一个延时1ms的延时函数
时间: 2024-05-04 12:19:40 浏览: 153
C51单片机 1ms精准延时函数
在51单片机中,可以通过定时器来实现延时操作。以下是一个基于定时器的延时函数示例,可以实现1ms的延时:
```
void delay_ms(unsigned int ms) {
unsigned int i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 120; j++) { // 12MHz / 12 = 1MHz
// 使用定时器1计数1us
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = 0xFC;
TL0 = 0x66;
TR0 = 1;
while (!TF0);
TR0 = 0;
TF0 = 0;
}
}
}
```
在上面的代码中,使用定时器1来计数1us,并通过嵌套循环实现1ms的延时。具体来说,每次外层循环执行一次时,内层循环会执行120次,每次执行1us,总共就是120us,也就是1ms。
阅读全文