单片机c语言的延时程序500ms

delay(){
int i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}
是什么意思??看不明白
i的值是500ms,但是j为什么是110,为什么要写for(j=110;j>0j--)这句话,完全不明白

根据外部晶振的不同,延时1毫秒的循环次数也不一样,一般12M晶振的话用 for(j=time;j>0;j--);延时时,1毫秒time大概为125左右,这里用110,大概晶振为11.0592M,所以这段程序,内部循环完成1毫秒延时,外部循环完成500毫秒延时。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-20
51单片机执行一个语句相当于24个晶振周期,for(j=110;j>0;j--);这个语句每次执行相当于执行4个语句,也就是96个晶振周期,执行110次,你用的单片机应该是11.0592Mhz的,因此
for(j=110;j>0;j--);所用时间为:96*110/11059200,约等于1ms,所以执行这个语句110约等于1ms,500此就是500ms
第2个回答  2012-06-20
此函数是内外循环,j是内循环,110次是延时1ms,外循环500次就是500ms。。。
第3个回答  2012-06-20
这个只是靠软件循环延时

因为软循环一次需要时间
这样执行500×110次循环才是500ms
相似回答