OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5493|回复: 10

STC11f02E 一件怪事,全局变量自动改变

[复制链接]

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-3-6
在线时间
6 小时
发表于 2013-7-29 15:45:28 | 显示全部楼层 |阅读模式
void main(void)
{
    ...
UART_Addr = (100*SEL_100 + 10*SEL_10 + 1*SEL_1);
if(UART_Addr > 90) UART_Addr = 90;
LIGHT_SEL = (uchar)(UART_Addr/3);

        //要是我在这里判断 LIGHT_SEL 值完全正常

while(1)
{
 ...                                                    //期间没有关于LIGHT_SEL的任何操作
             for(i=0;i<(30-LIGHT_SEL);i++)              //在这里用LIGHT_SEL 的时候 ,没有达到预期效果,LIGHT_SEL的值改变了
            {
              ...                                                    
             }
        ...
       }
}

STC11f02E的RAM是256的,这是我编译工程的信息Program Size: data=116.0 xdata=0 code=991

请问这问题大概出在哪里呢,实在找不出来了,都弄了好几天了,谢谢大家!



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-7-29 17:07:34 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-3-6
在线时间
6 小时
 楼主| 发表于 2013-7-29 17:09:14 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
是的,全局变量
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-7-29 17:16:20 | 显示全部楼层
确实不应该改变,你有没有中断里面用到这个值啊?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-3-6
在线时间
6 小时
 楼主| 发表于 2013-7-29 17:28:09 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
没有,太奇怪了
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2013-7-29 17:34:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-3-6
在线时间
6 小时
 楼主| 发表于 2013-7-29 17:37:37 | 显示全部楼层
回复【6楼】xouou_53320:

单步查不出来吗

---------------------------------
查不出来。
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-7-29
在线时间
0 小时
发表于 2013-7-29 20:49:49 | 显示全部楼层
建议你设为XDATA,然后,无论你是全局还是局部全部赋一次值先
回复 支持 反对

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-3-6
在线时间
6 小时
 楼主| 发表于 2013-7-29 21:53:42 | 显示全部楼层
回复【8楼】疯子:
---------------------------------
不太懂。XDATA不是外部RAM吗。
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-7-29
在线时间
0 小时
发表于 2013-7-30 19:27:59 | 显示全部楼层
不是外部RAM是内部的扩展RAM.我试过N次,只要是XDATA,就必须赋初值为0,这样是最简单的,还有个方法就是在程序开始进行初始化时,把XDATA区全部清0一次.就可以了
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2013-8-17 09:25:15 | 显示全部楼层
编译内存使用很大,一部分程序还真看不错什么问题,定义变量为volatile 试试
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表