求助:单片机C语言中延时程序怎样计算?

例如;void delay()
{
unsigned int i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
一般的延时程序怎么计算?比如想延时1S、500ms等

你好:
如果你想直接知道答案,那么我告诉你,12MHz晶振:
void delayms(unsigned int t)
{
unsigned int i,j;

for(i=t;i>0;i--)

for(j=123;j>0;j--);

}
能精确到1ms。
如果是11.0592MHz晶振,只需把上面的“j=123”改为“j=114”,都是调试过的,没问题。
然后你要想知道是怎么调试的,很简单,打开uv2编程软件,在最上边的工具栏里边有个“Debug”,点击后出现下拉菜单,选择第一个“start/stop Debug Session”,然后在最右边有一个Watch栏,有两个项目,一个是“Register”,一个是“value”,然后在“Register”栏下边的“Sys”里边有个“sec”,你只要单击“Step over”运行程序并观察“sec”的值就能调试出你程序的执行时间了。
注意,一定要先选择晶振频率,不然会默认24MHz。
希望我的回答能帮助到你。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-25
一般来说!这个程序的延时多少要看你的时钟芯片的大小!
一般的如果你用的是12M的晶振的话!
void Delay_ms(unsigned int nms) //ms延时精确的到ms
{
unsigned int i,j;
for(i=nms;i>0;i--)
for(j=122;j>0;j--);
}
这个是我调试过的!能精确到1ms的!
如果是11.0592M的话!
void Delay_ms(unsigned int nms) //ms延时精确的到ms
{
unsigned int i,j;
for(i=nms;i>0;i--)
for(j=110;j>0;j--);
}
如果是其他的,你就需要自己利用keil自己的仿真进行测试了!
第2个回答  2013-07-25
软件的延时时间,取决于晶振频率。

C 语言的执行时间,并没有计算公式。
只能实验,观察结果。
第3个回答  2013-07-26
软件调试出来的时间 也就是延时函数调用到调用结束所用的时间 通过看汇编指令计算得出 汇编指令又和机器周期挂钩 机器周期是通过晶振频率计算出的 晶振频率是人为选择的 看你自己
第4个回答  2017-09-25
什么时候需要 .