unsigned char i
while( --a != 0){
for(i = 0i <125i++) //一个 表示空语句,CPU空旅山转。
} //i 从0加到125,CPU大概就耗时1毫秒
}
定时M毫秒的程序,晶振为12MHz。笑世a取拆升中500就为500ms
主程序中调用了迅姿delay_ms(500),每执行一个循环,就会延时500毫秒,主程序肯定变慢,毋庸置疑的。要解决这个问题,可以用定时器延时来解决,怎么说呢,孙昌汪你这个延时500毫秒,肯定是为了某些控制对象的要求而用的,比如AD转换,比如测距等模块控制,为了达到既能500毫秒左右控制一次这些模块,又不影响主程序的执行速度,可以用定时器500毫秒生成一个标志位置1,当主程序检测到该标志位为1时就清除该标志,同时执行一次模块控制。这样就解决了控制与速度的则仔矛盾问题。根据外部晶振的不同,延时1毫秒的循环次数也不衡埋竖一样,一般12M晶振的液悉话用 for(j=timej>0j--)延时时,1毫秒咐大time大概为125左右,这里用110,大概晶振为11.0592M,所以这段程序,内部循环完成1毫秒延时,外部循环完成500毫秒延时。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)