1. 能把delay_us的程序贴一下吗? 从网上其他的讨论看,好像是有个寄存器ACC没有赋初值,如果ACC很大,要减到小于0退出delay loop要很长时间, 你看看DELAY_US(A)中的A是怎么用的?
2. 自己写,写一个空的for循环,然后让编译器别把这个for循环优化掉,延时长就for循环的时间长一些.
void delay_test(int cnt)
{
volatile int i;
for (i=0; i<cnt; i++)
{
}
}
不用定时器中断的话,只能通过DSP的汇编指令数目来进行延时, 比如DSP执行一条ADD的指令周期是10ns, 那比如延时1us,就需要1us/10ns条ADD指令. 自己写也很简单.
|