如何编程delay函数得到1us,Nus,1ms,Nms延时?
- UID
- 97055
- 性别
- 男
|
如何编程delay函数得到1us,Nus,1ms,Nms延时?
hc908gp32 mcu use 9.8304Mhz Xtal and get Fbus=2.4576Mhz How can i program to get 1us,Nus,1ms,Nms delay? I don't want to use TIM module. ------------------------------------------------------------------------- 我想用类似下面的程序,但我怎么能知道下面程序实际运行时经历的时间呢?循环次数怎么得到的? void delay_1us(void) //1us延时函数 { asm("nop"); }
void delay_nus(unsigned int n) //N us延时函数 { unsigned int i=0; for (i=0;i<n;i++) delay_1us(); }
void delay_1ms(void) //1ms延时函数 { unsigned int i; for (i=0;i<1140;i++); }
void delay_nms(unsigned int n) //N ms延时函数 { unsigned int i=0; for (i=0;i<n;i++) delay_1ms(); }
[此贴子已经被作者于2006-12-27 23:15:33编辑过] |
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
根据总线周期和指令数目来计算
比如nop,占用一个总线周期,假设你的总线周期是1MHz,那么一个nop语句就是1us。当然,你要考虑你子程序调用中压栈,出栈语句占用的时间 |
|
|
|
|
|
- UID
- 529491
- 性别
- 男
|
|
|
|
|
|
- UID
- 532012
- 性别
- 男
|
可以用仿真器看,程序走的CPU时钟周期数。但,好像和用示波器上看到走的时间不一样。 不知道怎么回事。 电子设计网址http://www.edn123.com |
|
|
|
|
|