//---精确延时函数---------
#define CPU_F ((double)22118400) //晶振
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
我定义了上面的延时函数,然后再main里面调用:
delay_ms(80);
发现过不了,卡主了,是怎么回事?
------解决方案--------------------
什么单片机
------解决方案--------------------
你要把原函数__delay_cycles((long)(CPU_F*(double)x/1000.0))贴出来啊
------解决方案--------------------
__delay_cycles(long cycles)
这个函数你帖出来
------解决方案--------------------
兄弟,你干吗用浮点数啊?这种定点cpu做浮点运算是几何级数的耗时的。
你的除数倒不如用1024,可以直接做移位呢。
真要是需要精确到极致的定时,就该用汇编去优化的。
------解决方案--------------------
试试delay_ms(1);然后一点一点的加