【51单片机】延时函数delay的坑——关于无符号整型数据for语句“x >= 0“变成死循环
2024-01-09 15:33:28
请认真看看以下延时函数是否正确,并且指出错误:(考考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就有好几万的访问量,经不住考验,一定要持有怀疑的态度。也请大家以后把代码跑通了再发上去吧,毕竟像我这种新手真的很痛苦。
文章来源:https://blog.csdn.net/m0_48808835/article/details/135480001
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!