void delay1ms(uint count) //延时 { uint i,j; for(i=0;i<count;i++) for(j=0;j<120;j++); }
时间: 2024-05-20 10:15:32 浏览: 9
这是一个简单的延时函数,它接受一个参数 count,表示要延时的毫秒数。它的实现方法是通过两重循环来实现的。
第一重循环是用来控制延时的次数,即要延时多少毫秒,就要循环多少次。第二重循环是用来占用 CPU 时间,以实现延时的效果。
具体来说,第二重循环的内部实现是通过一个空循环来占用 CPU 时间的。每执行一次内部循环,大约会占用几十个 CPU 指令的时间,因此循环 count 次,就能够实现 count 毫秒的延时。
需要注意的是,这种简单的延时函数虽然易于实现,但它的精度和稳定性都不够高,因为它无法考虑到 CPU 的运行速度、系统负载等因素。在实际应用中,需要根据具体的需求选择更加精确和可靠的延时方法。
相关问题
给出注释void delay(uint count) { uint i; while(count) { i=200; while(i>0) i--; count--; }
这段代码是一个简单的延时函数,其作用是在执行到该函数时,让程序暂停一段时间,以达到延时的目的。具体注释如下:
- void delay(uint count):函数名为 delay,其参数 count 表示要延时的时间,类型为无符号整型。
- uint i:定义一个无符号整型变量 i,用于控制内部的循环次数。
- while(count):外部循环,当 count 的值不为 0 时一直执行。
- i=200:将 i 的初始值设为 200,用于内部循环的计数。
- while(i>0):内部循环,当 i 大于 0 时一直执行。
- i--:每次循环结束,将 i 减一。
- count--:外部循环每执行一次,将 count 减一,直到 count 的值为 0,跳出外部循环,函数执行结束。
void delay(uint count) { uint i; while(count) { i=200; while(i>0) i--; count--; } } void dsreset(void) { uint i; DS=0; i=103; while(i>0)i--; DS=1; i=4; while(i>0)i--; } bit tmpreadbit(void) { uint i; bit dat; DS=0;i++; DS=1;i++;i++; dat=DS; i=8;while(i>0)i--; return (dat); } uchar tmpread(void) { uchar i,j,dat; dat=0; for(i=1;i<=8;i++) { j=tmpreadbit(); dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里 }
这段代码是实现了一些与 DS18B20 温度传感器有关的操作,具体来说:
- `delay` 函数是一个延时函数,输入的参数 `count` 表示需要延时的时间,单位为毫秒。
- `dsreset` 函数用于复位 DS18B20 温度传感器。
- `tmpreadbit` 函数用于从 DS18B20 温度传感器中读取一位数据,返回值为 `bit` 类型。
- `tmpread` 函数用于从 DS18B20 温度传感器中读取一个字节的数据,返回值为 `uchar` 类型。其中,该函数通过调用 `tmpreadbit` 函数读取一个字节的每一位,并将其组合成一个完整的字节。
需要注意的是,这段代码仅仅是 DS18B20 温度传感器的一部分操作,如果需要完整的代码,需要结合其他部分进行理解。