请认真看看以下延时函数是否正确,并且指出错误:(考考C语言功底)
void delay_ms(unsigned int xms) //delay x ms
{unsigned int x,y;for(x=xms;x>=0;x--)for(y=124;y>=0;y--);
}
废话少说,上正确代码:
void delay_ms(unsigned int xms) //delay x ms
{unsigned int x,y;for(x=xms;x>0;x--)for(y=124;y>0;y--);
}
原因分析:
x和y定义的是无符号整形,如果等于0的话它还在执行一次减一,以至于for变成while死循环。
我懒得写delay函数,直接去csdn嫖代码,我一直以为别人肯定是跑通了才发出来,就一直奉为圭臬。
于是我花了大量的时间去研究:
Proteus是否有问题,还加了晶振电路
研究Keil是否配置错误
重复编写代码。。。。
只能说,网上的东西是个人都能写(比如像我这种废物csdn就有好几万的访问量,经不住考验,一定要持有怀疑的态度。也请大家以后把代码跑通了再发上去吧,毕竟像我这种新手真的很痛苦。