关于pic中变量的问题,变量的值突然改变了

2019-03-25 18:58发布

我用pic18f452做开发,maplab加C18编译器。处理一个数据,当处理结束后,不知道为什么,当进入其他函数时候,该变量的值改变了,确定在处理结束后没有对该变量做进一步的操作,不知道是怎么回事,求高手解答,感激不尽
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
lcofjp
1楼-- · 2019-03-26 03:13
全局变量?局部变量?静态变量?
基本类型?数组类型?
790095673
2楼-- · 2019-03-26 06:33
 精彩回答 2  元偷偷看……
lcofjp
3楼-- · 2019-03-26 06:57
790095673 发表于 2016-5-8 10:01
是一个数组,莫名其妙的就变了,找不到原因,单步调试的时候压根没有用到那么变量,但是还是改变了数值

变量莫名其妙改变,通常是桟溢出 或者 指针的意外操作,指到了不应该操作的地方。
以上是主要原因,不排除有其他因素。
ienglgge
4楼-- · 2019-03-26 10:19
变化是随机的吗,有没有规律。注释掉一些全局变量,看看是不是还出现变?注释掉一些执行的语句,是否还出现。值改变,通过什么方式知道变化的。
nos001
5楼-- · 2019-03-26 13:53
我也遇到了这个情况,用的是p24F16KL402,上电一段时间后总会产生“非法码操作”复位(查询复位标志并点亮LED),经过反复排查也不能确定问题所在,感觉似乎是AD采样口可能存在超过I/O口电平规范的干扰,这个就有点不懂了,这种干扰会导致非法操作码复位吗?
dingzy_2002
6楼-- · 2019-03-26 19:06
lcofjp 发表于 2016-5-8 10:15
变量莫名其妙改变,通常是桟溢出 或者 指针的意外操作,指到了不应该操作的地方。
以上是主要原因,不排 ...

对数组变量操作还是要小心的,主要是
1.在C语言中,数组仅为范围界定,对其内的数据修改(通过指针操作)是不可控的.在程序中要严格控制变量指针的方向和用途,以仿不经意改变的数组内的变量.
2.如果整个程序中使用超量的RAM,有可能冲击数组内的数据。
3.包括不合适的堆栈、变量的重定义等均有影响。

一周热门 更多>