51单片机里面的for循环出现问题,提前跳出for循环
我写了一个单片机程序,其中for循环如下for(i=0;i<32766;i++)
if(DATA==0) break;
但是i变量还没有到32766就跳出循环了,此时DATA还是1的,根本没有满足条件,而且跳出for循环之后后面的语句都不执行了,直接跳出此for循环所在的子函数,回到主函数,很懵啊,没明白怎么回事 不懂,帮顶 你i定义的是8位的还是16位的还是32的啊、 不知道 建议加上{} 在一个 这个函数是啥啊 {:sweat:}没头没尾的 估计是溢出了 Data=0 , 跳出后 Data又被改成 1 数据类型定义的问题,应该是溢出了 dzymushi 发表于 2012-5-30 22:50 static/image/common/back.gif
你i定义的是8位的还是16位的还是32的啊、
定义的INT类型 ali1019 发表于 2012-5-31 10:17 static/image/common/back.gif
Data=0 , 跳出后 Data又被改成 1
DATA从来都没有等于0过 我观察到的哈 jswd0810 发表于 2012-5-31 10:14 static/image/common/back.gif
建议你看看编译出来的汇编程序,可能是被keil优化掉了,我遇见过好几次
开始我也怀疑是这个问题 我把优化级别设置成很低了 还是有问题 我调试的时候发现根本就没有溢出有时候30就跳出循环了 很奇怪的现象 shaloumisha 发表于 2012-5-31 12:16 static/image/common/back.gif
我调试的时候发现根本就没有溢出有时候30就跳出循环了 很奇怪的现象
如果可以,你把工程上传让大家试一试 是个测量温湿度的程序 shaloumisha 发表于 2012-5-31 12:14 static/image/common/back.gif
定义的INT类型
看看是不是看门狗什么的复位了 dzymushi 发表于 2012-5-31 14:40 static/image/common/back.gif
看看是不是看门狗什么的复位了
我觉得我应该跟大家道个歉 我程序一开始就没有写看门狗复位忘了呜呜、、、、谢谢提醒啊 类型对不对 char 还是int
页:
[1]