stc89c52的keil编译问题
用stc89c52做个数据采集的程序,可能是里面定义的float型变量太多,导致,small的编译通不过,后来keil改成compact或者large,然后编译通过!但是程序下载进去却不好用,后来发现应该是有的变量的值不对,如果去掉一些程序,用small编译是没有问题的!这怎么改呢?其实程序也不大,编译之后
Program Size: data=23.2 xdata=146 code=5657
就是这样的!对单片机不是很熟哈,谢谢了啊~~ idata 把变量放到idata中吗? 是的。。很多人忽略了52的高128个字节RAM。。。很多人印象中都是低128字节的。。。忘了高128这字节。。。 回复【3楼】myqiang1990小松鼠
-----------------------------------------------------------------------
不过放到xdata里,应该也没有问题的。。 把优化降到3级。变量存在放在xdata 把优化降到3级。变量存在放在xdata 优化降到3级了,变量放到xdata中,但是还是不好用啊~~ 而且我再做一个按键的测试的时候,在里面加入了一个printf函数,打印当前P0口的状态,或者定义一个uchar型变量,变量 = P0 & 0x1F,可是打印出来的结果竟然是16bit的数(0x1F69),而且只是高8位 = 0x1F; 代码量并不多啊~~把优化降到3级还是不行~ stc89c58,c516 哈,我觉得是设置或者程序优化的问题,这个片子是足够用的!现在就是不明白,为什么用外部的xdata,程序就不好用了呢! 回复【11楼】gameboy22
哈,我觉得是设置或者程序优化的问题,这个片子是足够用的!现在就是不明白,为什么用外部的xdata,程序就不好用了呢!
-----------------------------------------------------------------------
可能你的系统里没有XRAM;或者有,但是没有启用。 那就是要放入到高128字节的ram中去吗?用idata~~
如果不外借存储器,是不是就不能用xdata啊? 如果没有外接存储器,就只能用keil的small模式编译是吧!
52有256B的ram,我觉得我编译的应该是够用了,那么高128字节的ram如果不用idata的方式,是不是不能使用呢? 回去,试试idata空间 回复【3楼】myqiang1990 小松鼠
-----------------------------------------------------------------------
我也是最近了解这个的!!!呵呵!! 用浮点不太好吧,数据数确度有多少位呢?如果计算0.0kg ~ 9.9Kg 你完全可以换成 0000g ~ 9999g 效果是一样的.还可靠些. 请楼主能不能总结一下这些问题,都要注意点什么?最近也出现过类似问题,不知道是不是什么原因 学习学习,曾经也遇到过这个问题! 我的程序里也是浮点变量太多,放到了XDATA里 结果调用总出问题,时好时不好的,后来在电源两端加了一个滤波电容好使了,但是不明白为什么 同问有没有解决的啊?我用的是STC的RAM有4k,但是却只能用128这怎么解决?
页:
[1]