Board logo

标题: 如何编程delay函数得到1us,Nus,1ms,Nms延时? [打印本页]

作者: kitoff    时间: 2006-12-27 23:15     标题: 如何编程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编辑过]


作者: seuafu2005    时间: 2006-12-28 10:52

根据总线周期和指令数目来计算
比如nop,占用一个总线周期,假设你的总线周期是1MHz,那么一个nop语句就是1us。当然,你要考虑你子程序调用中压栈,出栈语句占用的时间
作者: fjczd    时间: 2008-12-17 11:29

不知道PE里有没有


作者: rcengtian    时间: 2008-12-20 15:31

可以用仿真器看,程序走的CPU时钟周期数。但,好像和用示波器上看到走的时间不一样。

不知道怎么回事。

电子设计网址http://www.edn123.com






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0