作业帮 > 综合 > 作业

请教关于单片机C语言中用while延时的问题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/19 13:47:42
请教关于单片机C语言中用while延时的问题
我的单片机晶振频率是12M
先创造延时子程序如下
void delay(unsigned long time) //参数 time 大小
{
while(time--);
}
当我
delay(x);
的时候,x和实际的秒数存在着什么样的关系?
比如,我
delay(500000);
会延时多长时间呢
晶振频率Fosc=12MHz,则机械周期 T=12/Fosc=1us;程序中 的 自加(++)、自减(--) 的执行周期为1个机械周期,即1us;
若为 理想状态,则delay(500000)的时间应该是:500000×1us=500ms;
但是,编译软件 要把 函数调用、for 语句转换成 机器指令,这是需要一定周期的,周期长短 视不同的编译软件 而有所不同,目前也没人对这个 转换差别 做过 专业的考量,故LZ 的问题,没有确切 的答案,只能 是告诉 你,大于某个时间;如例子 的答案是 大于 500ms,但大到什么程度,不知道,不过可以从 软件中 单步调试 中 得到.