单片机C 语言code 与data 的作用
单片机C 语言unsigned char code table[] code 是什么作用?
code 的作用是告诉单片机,我定义的数据要放在ROM (程序存储区)里面,写入后就不能再更改,其实是相当与汇编里面的寻址MOVC(好像是),因为C 语言中没办法详细描述存入的是ROM 还是RAM (寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data 是存入RAM 的意思。
程序可以简单的分为code (程序)区,和data (数据)区,code 区在运行的时候是不可以更改的,data 区放全局变量和临时变量,是要不断的改变的,cpu 从code 区读取指令,对data 区的数据进行运算处理,因此code 区存储在什么介质上并不重要,象以前的计算机程序存储在卡片上,code 区也可以放在rom 里面,也可以放在ram 里面,也可以放在flash 里面(但是运行速度要慢很多,主要读flash
比读ram 要费时间),因此一般的做法是要将程序放到flash 里面,然后load 到 ram 里面运行的;DA TA 区就没有什么选择了,肯定要放在RAM 里面,放到rom 里面改动不了。
附:
c51中的存储类型
本文来自CSDN 博客,转载请标明出处:/erazy0/archive/2009/09/20/4573196.aspx
data ---> 可寻址片内ram
bdata ---> 可位寻址的片内ram
idata ---> 可寻址片内ram ,允许访问全部内部ram
pdata ---> 分页寻址片外ram (MOVX @R0) (256 BYTE/页) xdata ---> 可寻址片外ram (64k 地址范围)
code ---> 程序存储区 (64k 地址范围),对应MOVC @DPTR const 表示本c51中存储类型
数组不可修改数组为常量数组
code 表示本数组生成后是在ROM区中同样不可修改
idata 表示数组生成后在在0x00~0xff的256个RAM中,使用指针寻址
具体的参考下面
data,bdata,idata,pdata,xdata,code存储类型与存储区
bit是在内部数据存储空间中20H .. 2FH 区域中一个位的地址,或者8051 位可寻址SFR 的一个位地址。
code是在0000H .. 0FFFFH 之间的一个代码地址。
data是在0 到127 之间的一个数据存储器地址,或者在128 .. 255 范围内的一个特殊功能寄存器(SFR)地址。
idata是0 to 255 范围内的一个idata 存储器地址。
xdata 是0 to 65535 范围内的一个xdata 存储器地址。