void delay_as(unsigned int as) { unsigned int i; for (i = 0; i < as; i++) __delay_cycles(1000); }
时间: 2024-04-06 15:30:06 浏览: 267
这是一段延时函数的代码,用于延时指定的时间。函数参数为as,表示需要延时的时间,单位是微秒。函数内部使用了循环计数的方式来实现延时,每次循环都会执行__delay_cycles(1000)函数,该函数会让CPU空转一定的时间,从而实现延时的效果。整个函数的作用是让CPU暂停执行一段时间,以便其他外设有足够的时间来完成操作。
相关问题
void delay_us(unsigned int us){ unsigned int i,j; for(i=0;i<us;i++) for(j=0;j<12;j++);}void delay_ms(unsigned int ms){ unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<12000;j++);}解释代码,晶振12M
这段代码是用来实现延时的,其中 delay_us 函数用来延时指定的微秒数,delay_ms 函数用来延时指定的毫秒数。
在晶振为 12MHz 的情况下,每个机器周期为 1/12MHz = 83.33ns。
delay_us 函数中的 for 循环中,i 的范围是 0 到 us-1,表示需要延时的微秒数。j 的范围是 0 到 11,每次执行内部的操作都需要 12 个机器周期,因此 for 循环中执行的次数为 us*12。由于每个机器周期需要 83.33ns,因此 delay_us 函数的总延时时间为 us*12*83.33ns = us*1us。
delay_ms 函数中的 for 循环中,i 的范围是 0 到 ms-1,表示需要延时的毫秒数。j 的范围是 0 到 11999,每次执行内部的操作都需要 12000 个机器周期,因此 for 循环中执行的次数为 ms*12000。由于每个机器周期需要 83.33ns,因此 delay_ms 函数的总延时时间为 ms*12000*83.33ns = ms*1ms。
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毫秒。
阅读全文