我现在在做一个正弦波移相的东西,用延时对两个波进行移相。波的频率是20hz到20khz,430f149的单片机主频是8Mhz,定时器的最小时延是0.125us。由于移相的精度是1度,波是低频的时候还可以用0.125*CCR0(CCR0是整数)实现,波变成高频就需要小数才能延时了。有没有什么方法能解决这个事?
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) //延时1微妙
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) //延时1毫秒
我现在有这样一个延时函数,查了一下资料“x”的值为常量或常量表达式即可,“x”能不能是小数,如果“x”能是小数,那延时不就能小于1us了,我用了几个小数试了一下,发现最小是delay(1)的一半,这是怎么回事 |