论坛风格切换切换到宽版
  • 3333阅读
  • 9回复

C51的困惑 [复制链接]

上一主题 下一主题
离线bg5baw
 
发帖
698
只看楼主 倒序阅读 0楼 发表于: 2006-06-15
用c51编程的朋友我想都有这样的体会,当程序中变量超过一定数量时,就是ram超过80时程序容易出错,这样一来程序中rom空间很空,而ram却是不够用,有没有办法,象汇编中一样,把表中的一些数据(db中的数据)放在rom中,而不占用ram空间,例如:把一个常量数组an[]{67,87,98,66,77}怎样能够放到rom中,而不占用ram.请高手发表看法.
离线BG6AGB
发帖
915
只看该作者 1楼 发表于: 2006-06-15
'
用c51编程的朋友我想都有这样的体会,当程序中变量超过一定数量时,就是ram超过80时程序容易出错,这样一来程序中rom空间很空,而ram却是不够用,有没有办法,象汇编中一样,把表中的一些数据(db中的数据)放在rom中,而不占用ram空间,例如:把一个常量数组an[]{67,87,98,66,77}怎样能够放到rom中,而不占用ram.请高手发表看法.
'


定义的时候,如果数据不需要改变的话,前面加code 就可以了。
就像下面这样定义:

code unsigned char constant_data=100;
离线BD4VNF
发帖
1208
只看该作者 2楼 发表于: 2006-06-15
将数组前加const
离线BD0AAI
发帖
3050
只看该作者 3楼 发表于: 2006-06-15
我在做cw自动键的时候, 大量的数据, 包括码表,液晶上显示的内容, 都放在24c512里了,用8k的89s52完成了一个很庞大的程序, 开发的最后一个月, 可以说不是在谐程序, 而是在删程序. 供参考.
离线wycx
发帖
1497
只看该作者 4楼 发表于: 2006-06-15
用户被禁言,该主题自动屏蔽!
离线bg6agd
发帖
774
只看该作者 5楼 发表于: 2006-06-15
我记得以前还用过呢,把一个正弦函数表存进去查表求正弦余弦
可惜现在都忘了
离线bg5baw
发帖
698
只看该作者 6楼 发表于: 2006-06-15
十分感谢朋友们回帖!c51中试了一下,bg6agb做法完全正确.bg6agb确实厉害.
离线bg5baw
发帖
698
只看该作者 7楼 发表于: 2006-06-15
在pic单片机c语言中试了一下,bd4vnf定义方法也是正确.谢谢!
离线bg5baw
发帖
698
只看该作者 8楼 发表于: 2006-06-15
最近还想玩玩台湾的emc78p156单片机,emc78p156与pic16c54引脚是全通用的,有现成的软件可以将pic16c54的汇编程序转为emc78p156的程序,不知道有没有软件可以把将pic16c54的c程序转为emc78p156的程序,或是hex文件转化为emc的hex文件,有办法转化吗?请坛里的高手谈谈看法.
离线BA3CE
发帖
1652
只看该作者 9楼 发表于: 2006-06-20
c51特有的几个存储定义 code data idata xdata 决定了数据存储位置。要是对于52系列idata也很有用。