gameboy22 发表于 2011-12-7 20:56:16

stc89c52的keil编译问题

用stc89c52做个数据采集的程序,可能是里面定义的float型变量太多,导致,small的编译通不过,后来keil改成compact或者large,然后编译通过!但是程序下载进去却不好用,后来发现应该是有的变量的值不对,如果去掉一些程序,用small编译是没有问题的!这怎么改呢?
其实程序也不大,编译之后
Program Size: data=23.2 xdata=146 code=5657
就是这样的!对单片机不是很熟哈,谢谢了啊~~

myqiang1990 发表于 2011-12-7 21:02:33

idata

gameboy22 发表于 2011-12-7 21:09:05

把变量放到idata中吗?

myqiang1990 发表于 2011-12-7 21:20:42

是的。。很多人忽略了52的高128个字节RAM。。。很多人印象中都是低128字节的。。。忘了高128这字节。。。

spark51 发表于 2011-12-7 22:04:33

回复【3楼】myqiang1990小松鼠
-----------------------------------------------------------------------

不过放到xdata里,应该也没有问题的。。

jcrorxp 发表于 2011-12-7 22:15:58

把优化降到3级。变量存在放在xdata

jcrorxp 发表于 2011-12-7 22:16:57

把优化降到3级。变量存在放在xdata

gameboy22 发表于 2011-12-7 22:58:56

优化降到3级了,变量放到xdata中,但是还是不好用啊~~

gameboy22 发表于 2011-12-7 23:04:48

而且我再做一个按键的测试的时候,在里面加入了一个printf函数,打印当前P0口的状态,或者定义一个uchar型变量,变量 = P0 & 0x1F,可是打印出来的结果竟然是16bit的数(0x1F69),而且只是高8位 = 0x1F;

gameboy22 发表于 2011-12-8 08:43:45

代码量并不多啊~~把优化降到3级还是不行~

pulan 发表于 2011-12-8 08:54:50

stc89c58,c516

gameboy22 发表于 2011-12-8 10:09:40

哈,我觉得是设置或者程序优化的问题,这个片子是足够用的!现在就是不明白,为什么用外部的xdata,程序就不好用了呢!

qllaoda 发表于 2011-12-8 10:17:11

回复【11楼】gameboy22
哈,我觉得是设置或者程序优化的问题,这个片子是足够用的!现在就是不明白,为什么用外部的xdata,程序就不好用了呢!
-----------------------------------------------------------------------

可能你的系统里没有XRAM;或者有,但是没有启用。

gameboy22 发表于 2011-12-8 10:36:28

那就是要放入到高128字节的ram中去吗?用idata~~
如果不外借存储器,是不是就不能用xdata啊?

gameboy22 发表于 2011-12-8 10:38:36

如果没有外接存储器,就只能用keil的small模式编译是吧!
52有256B的ram,我觉得我编译的应该是够用了,那么高128字节的ram如果不用idata的方式,是不是不能使用呢?

gameboy22 发表于 2011-12-8 16:43:11

回去,试试idata空间

dengqi 发表于 2011-12-8 19:45:44

回复【3楼】myqiang1990 小松鼠
-----------------------------------------------------------------------

我也是最近了解这个的!!!呵呵!!

zhagn3 发表于 2011-12-8 19:58:06

用浮点不太好吧,数据数确度有多少位呢?如果计算0.0kg ~ 9.9Kg 你完全可以换成 0000g ~ 9999g 效果是一样的.还可靠些.

xwluo806 发表于 2011-12-10 17:31:32

请楼主能不能总结一下这些问题,都要注意点什么?最近也出现过类似问题,不知道是不是什么原因

成就与价值 发表于 2014-5-4 23:57:32

学习学习,曾经也遇到过这个问题!

qrytian 发表于 2014-5-5 08:28:28

我的程序里也是浮点变量太多,放到了XDATA里 结果调用总出问题,时好时不好的,后来在电源两端加了一个滤波电容好使了,但是不明白为什么

xiaoquguang 发表于 2014-11-25 16:37:45

同问有没有解决的啊?我用的是STC的RAM有4k,但是却只能用128这怎么解决?
页: [1]
查看完整版本: stc89c52的keil编译问题