static void delay_nms(uint n) { uint i; while(n--) { for(i=0;i<550;i++); } } static void delay_us(unsigned int n) { while(--n); }
时间: 2023-06-27 07:03:53 浏览: 115
这是两个延时函数的代码实现。第一个函数`delay_nms()`是以毫秒为单位的延时函数,它通过循环嵌套的方式实现。外层循环控制延时的次数,内层循环则是一个空循环,通过循环次数来实现时间的延时。具体来说,内层循环的循环次数为550,这个值可以根据硬件平台的情况进行调整。第二个函数`delay_us()`是以微秒为单位的延时函数,它使用了一个while循环,并在循环体中对一个计数器进行自减操作,从而实现时间的延时。这个函数的延时精度取决于处理器的时钟频率和编译器的优化程度。需要注意的是,使用延时函数进行时间控制时,应该尽量避免在中断服务程序中使用,以免影响系统的实时性能。
相关问题
void delay_nus(unsigned int i) { i=i/10; while(--i); } void delay_nms(unsigned int n) { n=n+1; while(--n) delay_nus(900); } delay_nms(200);
这段代码是一个简单的延时函数。它包含两个函数:delay_nus和delay_nms。delay_nus函数用于微秒级延时,而delay_nms函数用于毫秒级延时。
在delay_nus函数中,参数i被除以10,然后使用while循环递减i的值,直到i为0为止。这段代码的目的是实现一个较短的延时。
在delay_nms函数中,参数n被加1,然后使用while循环递减n的值,直到n为0为止。在每次循环中,调用delay_nus函数并传入参数900进行微秒级延时。这段代码的目的是实现一个较长的延时。
最后一行代码delay_nms(200)表示调用delay_nms函数,并传入参数200进行毫秒级延时。这样程序会延时200毫秒。
void delay_nms(unsigned int i) { unsigned char j; while(i--) { for (j=0;j<120;j++); } } void main() //主函数 { while(1){ P1=0x00; delay_nms (500); //调用延时函数,大约延时500 ms P1=0xff; Delay_nms (500); //调用延时函数,大约延时500 ms } }
这段代码是关于定时器的延时函数的实现,主要是通过循环来实现一定时间的延时。具体来说,delay_nms函数的参数i表示需要延时的毫秒数,函数中通过for循环来实现大约120次的空循环操作,从而实现一定的延时。在main函数中,通过调用delay_nms函数来实现LED灯的闪烁效果,每隔500ms将P1口输出为0x00或0xff,从而实现LED灯的亮灭。
阅读全文