unsigned char变为 unsigned int 后程序跑飞了,完全不能执行

[复制链接]
 楼主| aimie 发表于 2013-8-21 20:22 | 显示全部楼层 |阅读模式
谁有遇到类似的情况,用的是STC12C5A32.。。。介绍说有1200字节的RAM 应该不至于这样的变化之后就跑飞。。

原来在程序没有扩充之前 也这样测试过,前面几段 数组unsigned char A[  ]是正常的,,但是往后的几段数据是跑飞的,之后扩充了程序,,现在这样切换之后,程序完全跑飞了。。。不能正常运行。。。。

Program Size: data=119.4 xdata=96 code=3075

因为char有255 的大小限制,想换成 int 的的。。  看就这样了。。。。有谁遇到过类似的情况。。。
highgear 发表于 2013-8-21 23:54 | 显示全部楼层
多半是程序的问题。
要特别注意哪些中断与普通模块共享的变量。
liang5319 发表于 2013-8-21 23:58 | 显示全部楼层
程序问题~~~~
ayb_ice 发表于 2013-8-22 08:01 | 显示全部楼层
这样分析问题得出的结论很难说是对的
jisjklala 发表于 2013-8-22 08:14 | 显示全部楼层
这感觉看不出什么的
sunhq02 发表于 2013-8-22 08:43 | 显示全部楼层
肯定是程序问题
仔细确定下跑飞的位置
还有注意下stack
ningling_21 发表于 2013-8-22 08:51 | 显示全部楼层

肯定是程序问题

尽量使用外部RAM...
123654789 发表于 2013-8-22 09:45 | 显示全部楼层
没有具体的程序代码   没有办法分析
 楼主| aimie 发表于 2013-8-22 10:28 | 显示全部楼层
问题 已经 解决   但是还是有 遇到奇怪的问题。。。。
这个问题的本事是因为
extern unsigned char keybuf[17];
unsigned char KeyBuf[17] = {0};
一个定义了char 一个定义int

非常奇怪已经有一个 公共变量了,,可是在其中以个C文件里面也有加载“extern unsigned char keybuf[17];
”的点H文件,如果不去定义unsigned char KeyBuf[17] = {0};
,编译的时候 所有  keybuf 都会丢失。。。。所以只好在2个文件中都有这个定义,而且如果C文件的大写KeyBuf修改成 keybuf之后会冲突。。

后来解决的办法就是同时是修改改了这2 个数据类型的定义
xiaoliping1945 发表于 2013-8-22 10:43 | 显示全部楼层
程序都没贴上来,咋个看哪里有问题???
Regsen 发表于 2013-8-22 10:48 | 显示全部楼层
全局变量定义过多,用户使用的空间不能满足相关变量所需空间,会有编译报错的问题
tergy2012 发表于 2013-8-22 11:59 | 显示全部楼层
学习了。
wolension 发表于 2013-8-23 08:23 | 显示全部楼层
extern unsigned char keybuf[17];
unsigned char KeyBuf[17] = {0};

??
我看到的是两个不同的变量啊. keybuf == KeyBuf ??
coody 发表于 2013-8-23 10:49 | 显示全部楼层
程序问题,如果使用了指针,或者参数传递,要注意。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

123

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部