unsigned char code 是什么

code的作用是告诉单片机,我定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVX(好像是),因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思。 程序可以简单的分为code(程序)区,和data (数据)区,code区在运行的时候是不可以更改的,data区放全局变量和临时变量,是要不断的改变的,cpu从code区读取指令,对data区的数据进行运算处理,因此code区存储在什么介质上并不重要,象以前的计算机程序存储在卡片上,code区也可以放在rom里面,也可以放在ram里面,也可以放在flash里面(但是运行速度要慢很多,主要读flash比读ram要费时间),因此一般的做法是要将程序放到flash里面,然后load到 ram里面运行的;DATA区就没有什么选择了,肯定要放在RAM里面,放到rom里面改动不了。

例如:

unsigned char code CUSTOM[]={ //自定义字符

0x15,0x0a,0x15,0x0a,0x15,0x0a,0x15,0x0a, //CG_RAM 点阵1
0x0a,0x15,0x0a,0x15,0x0a,0x15,0x0a,0x15, //CG_RAM 点阵2
0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02, //CG_RAM 年
0x0f,0x09,0x0f,0x09,0x0f,0x09,0x13,0x00, //CG_RAM 月
0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,0x00, //CG_RAM 日
};

ANS:

1.这么做是为了节约片上的RAM,一般低端的单片机,片上的data空间只有几十个字节,所以只能存在程序空间中。

2.因为定义的数据是常量,放在DATA或XDATA区中浪费了.

3.放在RAM区也需要在ROM里占用同样的大小,否则上电时,RAM里指定数据从何而来?反之,放在ROM的数据,只占ROM容量,如果不需要修改,当然放ROM了。故被定位在CODE(就是程序存储器)区内。

  • 29
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值