下面这个程序怎么会是无限循环程序呢?,不是很理解!

#include<reg52.h>
sbit jdq=P3^7;
sbit LED0=P0^0;
void delay1ms(unsigned int i)
{
unsigned char j;
while (i--)
{
for(j=0;j<113;j++) //1ms基准延时程序
{
;
}
}
}
void main()
{
jdq=0;
LED0=0;
delay1ms(1000);
jdq=1;
LED0=1;
delay1ms(1000);
}
这是开发板上的程序,可以烧写进去。唯一的问题就是主函数不知为什么变成了无限循环函数,其他的没有问题。unsigned int和unsigned char 没问题。各位兄弟我虚心求教啊!

暮色呼如
浏览 120回答 3
3回答

子衿沉夜

你这样写是不行的,必需要有一个死循环才行,你现在的情况其实是程序跑飞了,飞了一段恰好又飞回来了,接着跑,感觉像是循环一样。你的main()函数结束后,会有个 return,你是没写,但是汇编是会加上,这时,会从堆栈中读出地址给PC,这个读出来的地址可能是0,你又从头开始了。

守着一只汪

看看单片机运行原理,它是不会自动停止的可以在想要让它停止的地方加while(1)之类的语句

慕娘9325324

末尾加上while(1);
打开App,查看更多内容
随时随地看视频慕课网APP