会不会占用RAM空间呢?

[复制链接]
409|25
 楼主 | 2019-10-13 11:48 | 显示全部楼层 |阅读模式
以前用汇编语言编写LCD12864程序会使用DB在程序存储器中开辟一部分空间来存放字库或者图片,如果使用c语言编程,书上的程序定义了一个const类型的数组存放字库(常量类型),该常量数组肯定会占用一定的ROM空间,但是会不会占用RAM空间呢?

使用特权

评论回复
| 2019-10-13 11:53 | 显示全部楼层
不太清楚,用的时候从ROM里调用吧,可能会占用一定。

使用特权

评论回复
| 2019-10-13 12:03 | 显示全部楼层
对于单片机程序而言, const 全局变量会被编译到程序区,也就是说它是存储于ROM空间的,不会占用RAM,其他程序不清楚。

使用特权

评论回复
| 2019-10-13 12:05 | 显示全部楼层

如果是短延时,直接while(--n);好了,干嘛还要函数?

如果是长延时,最好用定时器。

使用特权

评论回复
| 2019-10-13 12:08 | 显示全部楼层

防止形参带0进来,由于先自减而变成了延时65535。

使用特权

评论回复
| 2019-10-13 12:12 | 显示全部楼层
keil c51里面用 code 关键词 定义在分配Rom里面的数表

使用特权

评论回复
| 2019-10-13 12:15 | 显示全部楼层

while(){}有一个通俗的理解,反复执行{},直到()里面的值为非或者0,然后结束此语句。

使用特权

评论回复
 楼主 | 2019-10-13 12:49 | 显示全部楼层


while(--n)相当于while(--n){;}
可以起到延时效果

使用特权

评论回复
| 2019-10-13 12:53 | 显示全部楼层
当--n非零时,执行{;},起到延时的作用。

使用特权

评论回复
| 2019-10-13 12:57 | 显示全部楼层


const会把数组放到ROM 里

使用特权

评论回复
 楼主 | 2019-10-13 12:59 | 显示全部楼层


我是这么理解的
const类型的数组肯定会占用一定的ROM空间,但是作为数组又会占用同样大小的RAM空间,这样太耗资源了,现在我明白了

使用特权

评论回复
| 2019-10-13 13:03 | 显示全部楼层


前边的if多此一举吧
直接改成 while(n--);不就可以了?

使用特权

评论回复
| 2019-10-13 13:09 | 显示全部楼层


不同的硬件平台,不同的编译器,实现结果也不一样。

使用特权

评论回复
| 2019-10-13 13:49 | 显示全部楼层
调试的时候实际看一下数据所处的地址空间最靠谱。

使用特权

评论回复
| 2019-10-13 13:51 | 显示全部楼层



const变量一般常常放在ROM中

使用特权

评论回复
| 2019-10-13 13:54 | 显示全部楼层
设定对了是不会占用RAM的。编一起回自动分配ROM/Flash空间。

使用特权

评论回复
| 2019-10-13 13:58 | 显示全部楼层
onst 是C语言的关键字,表示变量不能改变,但是并没有规定是在那个区域保存和使用;
在单片机C语言中,这个语句很自然的保留了下来,通常在同一寻址的芯片中,会被直接编译到ROM区域,不在占用RAM空间,其他的被编译到RAM中,启动时会对该RAM初始化,之后就不在改写,因此及用了ROM,有用了RAM,优点就是加快了访问速度。通常C编译器如果单独扩展了ROM类型的关键字,就表示会占用RAM空间。

使用特权

评论回复
| 2019-10-13 14:13 | 显示全部楼层
压根就不会占用ram的空间,单片机压根就不会的

使用特权

评论回复
| 2019-10-13 14:15 | 显示全部楼层

除非你将程序放到ram上面运行.

使用特权

评论回复
| 2019-10-13 14:18 | 显示全部楼层
const 说明变量是只读的,放在哪没有关系。51中好像 code 符号确定变量放在code部位。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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