写一个51单片机延时1ms函数
时间: 2023-05-16 22:04:47 浏览: 83
以下是一个简单的51单片机延时1ms函数的代码:
```
void delay_ms(unsigned int ms)
{
unsigned int i, j;
for(i = 0; i < ms; i++)
for(j = 0; j < 1141; j++);
}
```
这个函数使用了一个简单的循环来实现延时,每个循环大约需要1us的时间,因此循环1141次可以实现1ms的延时。
相关问题
写一个51单片机延时循环函数
以下是一个简单的51单片机延时循环函数:
```c
void delay(unsigned int ms)
{
unsigned int i, j;
for(i = 0; i < ms; i++)
for(j = 0; j < 1141; j++);
}
```
该函数接受一个无符号整数参数 `ms`,表示需要延时的毫秒数。函数中使用了两个嵌套的循环,第一个循环控制延时的次数,第二个循环执行空操作来消耗时间。根据实际情况,可以调整第二个循环中的常数值来控制延时的精度。
用51单片机写1ms延时函数
以下是用51单片机汇编语言编写的1毫秒延时函数:
```
Delay_1ms: ; 延时1ms
mov R7, #5 ; 设置循环次数为5(经过测试比较准确)
Delay_1ms_1:
mov R6, #250 ; 设置内部循环次数为250
Delay_1ms_2:
djnz R6, Delay_1ms_2 ; 内部循环
djnz R7, Delay_1ms_1 ; 外部循环
ret ; 返回
```
使用方法:在需要延时1毫秒的地方调用`Delay_1ms`函数即可。需要注意的是,这个延时函数并不是非常准确,可能会因为不同的晶振频率和环境温度等因素导致延时时间略有偏差。如果需要更高精度的延时,建议使用定时器来实现。