微机程序延时函数怎么写
时间: 2023-10-02 13:08:45 浏览: 85
在微机中,可以使用定时器或者循环来实现延时函数。
1. 定时器实现延时函数:
定时器的原理是设置一个定时器计数器,然后不断检查计数器是否达到了指定的时间,如果达到了则完成延时。在C语言中通常使用中断服务程序来实现定时器功能。
例如,下面是一个使用定时器实现延时的例子:
```c
#include <reg52.h> // 8051芯片头文件
void delay_ms(unsigned int ms) // 延时函数
{
TMOD |= 0x01; // 定时器0工作在模式1
TH0 = (65536 - 1000) / 256; // 定时器初值
TL0 = (65536 - 1000) % 256;
TR0 = 1; // 启动定时器
while(ms--)
{
while(!TF0); // 等待定时器溢出
TF0 = 0; // 清除定时器溢出标志
TH0 = (65536 - 1000) / 256; // 重新装载初值
TL0 = (65536 - 1000) % 256;
}
TR0 = 0; // 停止定时器
}
```
在上面的例子中,使用定时器0来实现延时,每次设置定时器初值为1000,即1毫秒,然后等待定时器溢出,再重新装载初值。当需要延时ms毫秒时,就循环调用这个函数。
2. 循环实现延时函数:
循环实现延时函数的原理是在循环中不断执行空操作,直到达到指定的时间为止。
例如,下面是一个使用循环实现延时的例子:
```c
void delay_ms(unsigned int ms) // 延时函数
{
unsigned int i, j;
for(i = 0; i < ms; i++)
{
for(j = 0; j < 123; j++); // 空操作,约延时1毫秒
}
}
```
在上面的例子中,使用两重循环来实现延时,外层循环控制延时的总时间,内层循环执行空操作,约延时1毫秒。当需要延时ms毫秒时,就调用这个函数。