打印

请问什么可以跳出循环

[复制链接]
1129|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huandaczq|  楼主 | 2019-5-9 19:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 huandaczq 于 2019-5-9 23:07 编辑

最近遇到一个问题,不知道是硬件出了电磁干扰的问题还是芯片出了问题,还是说其他出了什么问题,软件方面暂时觉得没有问题。
【起因】:为了方便观察,在每次循环结束以后我加了N个delay,大概为数秒,为了方便观察。然后我肉眼可以观察的发现,程序几乎没有停止。就宛如delay没有被执行一样,在这样的情况下。
【经过】各种改软件,看实际硬件反映来比较N次以后
【结果】不知道为何能跳出while(1)的循环
缩略版代码:
bbb=0
while(1)
     lata0=1
     while(bbb!=1)
        if (b==1)
            lata0=0
             bbb=1
     while(1);
lata0=1可以当作小灯亮或者小车行,在代码最后一段,在跳出while(bbb!=1)之后进入死循环while(1);不动才是,然而实际发现是,小车或者小灯在运动的的时候,突然关断了0.几秒后又开始运行了,照理说,进入while(1);应该是不会在开启了。重启在conguration bits里已经关闭了。所以这个芯片出了问题了吗?还是说硬件出了问题了?

使用特权

评论回复
评论
huandaczq 2019-5-9 23:10 回复TA
简单点来说,就是在大循环里将某个IO口拉低以后,让程序停在子循环---while(1);---里面,预期是IO口是无限低电平,但是实际却是高电平为什么? 

相关帖子

沙发
dsyq| | 2019-5-9 20:39 | 只看该作者
什么语言啊 表示看不懂

使用特权

评论回复
板凳
huandaczq|  楼主 | 2019-5-9 22:27 | 只看该作者
dsyq 发表于 2019-5-9 20:39
什么语言啊 表示看不懂

缩写了,LATAbits.LATA0,其他都是自定义。

使用特权

评论回复
地板
xch| | 2019-5-9 22:27 | 只看该作者
口齿不清,赶紧改行

使用特权

评论回复
5
梦幻泡影| | 2019-5-10 08:46 | 只看该作者
只有两种可能,第一是有外部中断触发,第二是系统被复位了。好好检查吧

使用特权

评论回复
6
下凡买烟| | 2019-5-10 11:24 | 只看该作者

使用特权

评论回复
7
huandaczq|  楼主 | 2019-5-10 19:39 | 只看该作者
梦幻泡影 发表于 2019-5-10 08:46
只有两种可能,第一是有外部中断触发,第二是系统被复位了。好好检查吧

我怀疑是芯片坏了要么电磁干扰?我也个敢确定,对于前者(芯片坏了)没有备货,所以天猫买了还在路上。
至于你说的外部终端,我在做测试的时候,把外部所有都关闭了,除了留下简单几个用来做测试的IO口。至于系统复位,我把外部复位在配置烧写芯片的时候就关闭了。芯片的电源也是7805出来的,应该比较稳定,感觉不太像会低压自动复位!

使用特权

评论回复
8
cjseng| | 2019-5-10 20:44 | 只看该作者
不知道你写的什么程序,分号都没有,大括号也没有,完全看不懂。

使用特权

评论回复
9
funior| | 2019-5-11 15:15 | 只看该作者
只有一个解释,就是进入中断服务程序了

使用特权

评论回复
10
QuakeGod| | 2019-5-12 15:54 | 只看该作者
问题就出在你的代码上,你还把代码给“缩略”了?那你还让别人看个啥。

使用特权

评论回复
11
tianxj01| | 2019-5-12 16:48 | 只看该作者
这种缩略版代码,非常怀疑,没分号没大括号,逻辑关系无法理清,打酱油的吧你是?

使用特权

评论回复
12
huandaczq|  楼主 | 2019-5-12 16:49 | 只看该作者
自己解决了。单片机自己重启。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

186

帖子

0

粉丝