void delayms(uint z) //毫秒 { uint i,y; for(i=z;i>0;i--) for(y=0;y>110;y--); }帮忙改一下,有错误
时间: 2023-12-08 10:04:01 浏览: 175
您需要将内部循环的条件改变一下,应该是`y--`而不是`y>110`。同时,内部循环应该循环110次,而不是从0开始。所以,修改后的代码应该是这样的:
```
void delayms(uint z) //毫秒
{
uint i, y;
for(i = z; i > 0; i--) {
for(y = 110; y > 0; y--) {
// 等待
}
}
}
```
这样可以实现精确的延迟。
相关问题
void delay(int ms) //延时子程序 { uint i,j; for(i=ms;i>0;i--) //延时ms for(j=0;j<124;j++);//大约1毫秒的延时 }
这是一个简单的延时子程序,其作用是在单片机中实现一段时间的延时。具体实现方式是通过for循环来进行等待,每次循环大约耗时1毫秒,循环次数为ms*124次,即大约延时ms毫秒。下面是程序的详细解释:
1. 定义一个名为delay的函数,参数为int类型的ms,表示需要延时的时间,单位为毫秒。
2. 在函数中定义两个变量i和j,均为uint类型,用于控制延时的时间和循环次数。
3. 利用for循环进行延时,外层循环控制延时的总时间,内层循环控制每次循环的时间。具体实现方式是每次内层循环执行124次,大约耗时1毫秒。因此,外层循环次数为ms,即延时ms毫秒。
4. 函数执行完毕后,程序将会继续执行下一条指令。
需要注意的是,该延时子程序的精度可能会受到单片机工作频率的影响,因此在使用时需要根据实际情况进行调整。同时,该延时子程序是通过for循环实现的,会占用CPU资源,因此在延时较长的情况下,可能会对其他任务的执行造成影响。
include<reg52.h> void mDelay(uint Delay)//ms延时程序 { uint i; for(;Delay>0;Delay--) { for(i=1;i<124;i++) {;} } }
这是一个基于8051单片机的C语言代码,使用了头文件reg52.h,定义了一个函数mDelay用于实现毫秒级延时,其原理是通过循环让程序等待一段时间。具体实现是使用两个for循环,其中内部的for循环中嵌套了一个空语句,通过这种方式来实现延时。
阅读全文