C语言中,想运用准确的延时程序并不简单。IAR 中有这样的一个函数 __delay_cycles(),该函数在头文件intrinsics.h中界说,函数的效果便是延时N个指令周期。依据这个函数就可以完成准确的延时函数了(但不能做到100%准确度)。
完成的办法:
树立一个delay.h的头文件:
#ifndef __IAR_DELAY_H
#define __IAR_DELAY_H
#include
#defineXTAL8//可界说为你所用的晶振频率(单位Mhz)
#definedelay_us(x)__delay_cycles ( (unsigned long)(x * XTAL))
#definedelay_ms(x)__delay_cycles ( (unsigned long)(x * XTAL*1000) )
#definedelay_s(x)__delay_cycles ( (unsigned long)(x * XTAL*1000000) )
#endif
留意: __delay_cycles(x),x有必要是常量或则是常量表达式,如果是变量则编译报错!
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/252153.html