c语言中for循环疑问:

我认为for(j=0;j<5;j++)这条语句,执行完后,j为5,便结束循环,不在重新回到j=0。但在单片机中调试时,会发现它会自动再回到j=0时的情况,在循环j=1,2... 我认为for(j=0;j<5;j++)这条语句,执行完后,j为5,便结束循环,不在重新回到j=0。
但在单片机中调试时,会发现它会自动再回到j=0时的情况,在循环j=1,2,3,4,的情形。
j在回到0,依次下去……
不了解
为方便解决问题;我把具体的函数写出来吧:
(我觉得数码管应该 依次 0~9 只亮一次,以后就不亮了。 但调试时,它亮0~9后,又0~9的亮 ,不断的下去)

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
//定义数组,依次为:0,1,2,3,4,5,6,7,8,9
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint ms);
void main()
{
uchar i;
P0=0xfe; //位选共阴数码管
P1=oxff; //先让数码管全暗,防止上电瞬间显示数字8;
for(i=0;i<10;i++)
{
P1=table[i]; //依次从0~9显示;
delay(50);
}
}

void delay(uint ms) //延时函数
{
uchar x;
while(ms--)
for(x=0;x<123;x++);
}
展开
 我来答
Flying404
2011-06-14 · 超过10用户采纳过TA的回答
知道答主
回答量:25
采纳率:0%
帮助的人:21.1万
展开全部
for 语句的格式是
for (表达式1;表达式2;表达式3)
你的程序是
for( j=0; j<5; j++)

for语句过程为:
1、计算表达式1 的值;
2、判断表达式2,当其条件成立,执行循环体语句,然后执行第3步(你这里是j<5 所以执行条件应该是j= 0,1,2,3,4。如果想j=5也执行可以用 j<6或者j<=5);
当表达式2的条件不成立时,结束循环执行第5步。
3、计算表达3;(注意一下,第2步中要求了 执行循环体语句后 才是第3步)
4、返回,继续执行第2步;
5、循环结束,执行for语句的后续语句。

如果你的循环没有跳出来应该是你的循环语句某处让j的值始终是低于5的,所以循环没有停下来,而是继续执行下去。
追问
函数如上
追答
你的循环设计的是没有问题的。
说实话我不是很懂单片机,但是看你的程序问题应该是出在循环正常结束了,但是单片机系统再一次运行 从新进入循环。
建议你在For跳出后的位置加上一个让所有灯长时间灭掉的函数。
例如 while(1){}

希望对你有帮助!
wallacess
2011-06-13 · 超过16用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:38.3万
展开全部
其实我想看你的循环体,若就你给的这些信息,j又回到了0继续循环,确实让人费解,我了解的c51单片机,采用的是标准c,所以我怀疑问题在循环体,而不是解释器
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ba45028389
2011-06-12 · TA获得超过117个赞
知道答主
回答量:113
采纳率:0%
帮助的人:63.2万
展开全部
你没有break语句,肯定结束不了循环,所以会再回到j=0的情况,这样就成了死循环,而你的限制条件是j<5,所以执行完for语句后也不可能等于5啊 ,如果限制条件改为j<=5就可一输出5,在for语句后加上if(j>5) break; 这样输出5之后就自动结束循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帅克哥哥
2011-06-16 · 超过29用户采纳过TA的回答
知道答主
回答量:133
采纳率:0%
帮助的人:86.9万
展开全部
这个循环没问题,应当是你的其他地方出错了!
你再找找!
可以把你的函数体上传上来吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leniuly
2011-06-12 · TA获得超过369个赞
知道答主
回答量:24
采纳率:0%
帮助的人:0
展开全部
你把j定为小于5当然不会把5包括进去,根本执行不到5。要改为j<6或j<=5。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AlexBin
2011-06-13
知道答主
回答量:30
采纳率:100%
帮助的人:16.4万
展开全部
可以把代码发上来看看不?我也在学单片机^_^
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式