首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何编程delay函数得到1us,Nus,1ms,Nms延时?

如何编程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编辑过]

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

不知道PE里有没有

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

不知道怎么回事。

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

电子设计网址导航!edn123.com!
返回列表