我需要一个用C编写的精确时间延迟函数,它将pic程序执行延迟给定的微秒数.我确实在microchipc.com上找到了一个使用ASM的例子,但代码只允许时钟速度高达32000000.我的时钟速度需要64000000,但由于我不明白代码是如何工作的我无法修改它做我需要的.任何人都可以提供一些代码的解释或建议如何实现类似的东西?
#if PIC_CLK == 4000000
#define DelayDivisor 4
#define WaitFor1Us asm("nop")
#define Jumpback asm("goto $ - 4")
#elif PIC_CLK == 8000000
#define DelayDivisor 2
#define WaitFor1Us asm("nop")
#define Jumpback asm("goto $ - 4")
#elif PIC_CLK == 16000000
#define DelayDivisor 1
#define WaitFor1Us asm("nop")
#define Jumpback asm("goto $ - 4")
#elif PIC_CLK == 20000000
#define DelayDivisor 1
#define WaitFor1Us asm("nop"); asm("nop")
#define Jumpback asm("goto $ - 6")
#elif PIC_CLK == 32000000
#define DelayDivisor 1
#define WaitFor1Us asm("nop"); asm("nop"); asm("nop"); asm("nop"); asm("nop") …Run Code Online (Sandbox Code Playgroud)