这个单片机让一个灯闪烁 的程序 这个程序 为什么会一直循环呢 ?
#include<reg52.h>unsignedintq;sbitA1=P0^1;voidmain(){q=10000;A1=0;while(q--);q=10001;...
#include<reg52.h>
unsigned int q;
sbit A1=P0^1;
void main()
{ q=10000;
A1=0;
while(q--);
q=10001;
A1=1;
while(q--);
}
调试的时候运行完后并没有跳回到q=10000
但是下载到单片机中 灯却不停的闪烁这个是为什么呢?
我是新手 望达人解答!! 展开
unsigned int q;
sbit A1=P0^1;
void main()
{ q=10000;
A1=0;
while(q--);
q=10001;
A1=1;
while(q--);
}
调试的时候运行完后并没有跳回到q=10000
但是下载到单片机中 灯却不停的闪烁这个是为什么呢?
我是新手 望达人解答!! 展开
6个回答
展开全部
你用的是不是Keil uVision2 ?
Keil uVision2这个编译软件有问题,用它编译后的程序下载到单片机,会自动的循环主函数。
如果你想让程序执行完主函数后停止不再循环,可以在最后一个while(q--);后面加上while(1); 则程序停在此处。
如果你想让程序循环(就是你想要的 仿真时也循环),你就不加上面说的while(1); 而是这么写
#include<reg52.h>
unsigned int q;
sbit A1=P0^1;
void main()
{ while(1)
{q=10000;
A1=0;
while(q--);
q=10001;
A1=1;
while(q--);
}
}
Keil uVision2这个编译软件有问题,用它编译后的程序下载到单片机,会自动的循环主函数。
如果你想让程序执行完主函数后停止不再循环,可以在最后一个while(q--);后面加上while(1); 则程序停在此处。
如果你想让程序循环(就是你想要的 仿真时也循环),你就不加上面说的while(1); 而是这么写
#include<reg52.h>
unsigned int q;
sbit A1=P0^1;
void main()
{ while(1)
{q=10000;
A1=0;
while(q--);
q=10001;
A1=1;
while(q--);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我认为你的单片机应该是复位有问题,导致主程序体一直在被重复执行。
建议你从复位原因下手。
复位可能来自外部,比如电源不稳定。
用示波器探一下你的单片机复位引脚,
看是否一直被复位?
另一种就是你的单片机带看门狗,而且默认是开启的,
这种情况的话,你就要在软件中把看门狗给关闭。
建议你从复位原因下手。
复位可能来自外部,比如电源不稳定。
用示波器探一下你的单片机复位引脚,
看是否一直被复位?
另一种就是你的单片机带看门狗,而且默认是开启的,
这种情况的话,你就要在软件中把看门狗给关闭。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在单片机中运行时,程序会重复的跑,要是不想让它循环跑你就在最后用一个死循环结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
q值在循环体内赋的值,每次循环重新赋值,所以会一直循环下去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询