单片机keil C中的data, bdata, idata, hdata, pdata, code解释

2016年03月11日 15:12:33 记忆之墙 阅读数:2375 标签: C51datacodeidatapdata 更多

个人分类: 51单片机笔记

在别处看到了一篇很不错的文章,这里我来转载一下,希望能给广大51学习者一点帮助。该文章来源是:http://www.51hei.com/mcu/3993.html。

从数据存储类型来说,8051系列有片内、片外程序存储器,片内程序存储器还分直接寻址区和间接寻址类型,以及根据51系列特点而设定的pdata类型。使用不同的存储器,将使程序的执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率。与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。

在51系列中data,idata,xdata,pdata的区别:

data: 固定指前面0x00~0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

idata: 固定指前面0x00~0xff的256个RAM,其中前128个RAM和data的128个RAM完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:C中idata做指针式的访问效果很好)

xdata:外部扩展RAM,一般指外部0x0000~0xffff空间,用DPTR访问。

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7上时读写,用movx ACC,@Rx读写。这个比较特殊,而且C51好像对此有BUG,建议少用。(这是2014年的记录,不知以后是否有改进)

单片机C语言中unsigned char code table[] code是什么作用?

code的作用是高速单片机,我定义的数据要放在ROM(程序存储区)里面,写入后就不能再更改。因为C语言中没办法详细描述存入的是ROM还是RAM,所以在软件中添加了这一个语句代替汇编指令的作用,对应的还有data是存入RAM的意思。

程序可以简单的分为code(程序)和data(数据)区,code区在运行的时候是不可以随便更改的,data区放全局变量和临时变量,是要不断的改变的,cpu从code区读取指令,对data区的数据进行运算处理,因此code区存储在什么介质上并不重要,像以前的计算机程序存储在卡片上,code区也可以放在rom里面,也可以放在 RAM里面,也可以放在flash里面(但是运行速度要慢很多,主要是读flash比读RAM要费时间),  因此一般的做法是将程序放在flash里面,然后load到RAM里面运行的,放到rom里面改动不了。

bdata 如何使用呢?

若程序需要8个或者更多的bit变量,如果你想一次性给8个变量赋值的话就不方便了,又不可以定义bit数组,只有一个方法。

char bdata MODE;

sbit MODE_7 = MODE^7;

sbit MODE_6 = MODE^6;

sbit MODE_5 = MODE^5;

sbit MODE_4 = MODE^4;

sbit MODE_3 = MODE^3;

sbit MODE_2 = MODE^2;

sbit MODE_1 = MODE^1;

sbit MODE_0 = MODE^0;

8个bit变量MODE_n就定义好了。这是定义语句,Keil C的特殊数据类型。记住一定要sbit而不能用bitMODE_0 =MODE^0;赋值语句要是这么写C语言就视为异或运算。

keil生成的文件:

.plg:编译器编译结果

.hex和.bin:可执行文件

.map和.lst: 链接文件

.o:  目标文件

.crf 、.Inp、.d和.axf 调试文件

.opt:保存工程配置信息

.bak: 工程备份文件

M51文件,startup文件。

普通51系列单片机存储空间资源分布情况:

新型51单片机资源分布情况:

在51系列中data,idata,xdata,pdata的区别相关推荐

  1. 51系列中data,idata,xdata,pdata的区别[笔记]

    51系列中data,idata,xdata,pdata的区别 data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小. idata:固定指前面0x0 ...

  2. 单片机c语言idata什么意思,单片机C语言中的data,idata,xdata,pdata,code

    从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的 ...

  3. 单片机学习笔记——data,idata,xdata,pdata,code

    从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的 ...

  4. 【C语言】[其他] :code, data, idata, xdata, bdata, edata, hdata等,代表的意思

    从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设 定 ...

  5. 8051单片机基础4:数据存储类型(data,idata,xdata,code)

    文章目录 存储类型 使用方法 详细说明 8051存储器结构 data idata bdata pdata xdata code 关于作者 参考来源:Keil > Help > uVisio ...

  6. 关键字data idata xdata code using

    1. data 指定数据存储在内部低128字节的数据存储器(RAM)内,即(0x00-0x7f)地址范围内,在定义变量时不指定存储区域,则默认为data类型,这部分存储区可用acc直接读写,片内直接寻 ...

  7. C51 data idata xdata 和栈 笔记

    data 区域0-128 idata 128-256 xdata 看芯片配置的大小. 上图可以设xdata的小这样就可以 在超出芯片资源的情况下,编译程序会报错. 一般先预配置为small 这样编译效 ...

  8. 51汇编中DATA和EQU

    EQU相当于C语言中的#define,重命名的作用,预编译时执行. 例如:LED EQU 0X80H,给0X80起了一个新名字,可以作为立即数或者地址使用(不具有指针的性质,通过不同的寻址方式来确定是 ...

  9. 【IoT】CC254x 中 data、idata、xdata 和 pdata 区别以及堆 Heap 内存布局

    1.data.idata.xdata 和 pdata 区别 从数据存储类型来说,8051 系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code ...

最新文章

  1. Python函数参数匹配模型(上)
  2. 红色小方块单击爆炸式展开的菜单代码
  3. vs2012创建Windows服务
  4. 大数据WEB阶段Mybatis(一)
  5. vsftpd的简单安装和配置(只有三步)
  6. 面试中死锁的考点总结(死锁的定义、产生原因、四个必要条件、如何预防)
  7. Excel计数(count)可视化
  8. 深度学习蚕食软件,十年内大部分软件工作不再涉及编程
  9. 嵌套 思维导图_看我怎么用思维导图,来轻松学习JavaScript,值得收藏
  10. 【汇编语言】【ARM扩展资料】数据寻址
  11. 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
  12. 投资银行业务法规汇编----仅供学习
  13. 专利号校验码php,电子专利证书的三种下载操作方法
  14. PHP手机网店管理系统
  15. 远程过程调用(RPC)详解
  16. webpack 基础学习
  17. Visual Studio使用技巧 +谷歌浏览器使用技巧总结
  18. 深度学习图片预处理:crop
  19. 云服务器win系统开热点,云服务器win系统开热点
  20. 分享这些值得收藏的软件,千万别错过

热门文章

  1. UILabel和NSAttributedString那些事
  2. IoC框架,依赖注入
  3. poj1423---求一个大数的位数方法,我猜网站上统计输入字符少于多少位的那个算法...
  4. 列级触发器 SQL Server
  5. 最奇特的编程语言的特征
  6. 修正IE6不支持position:fixed的bug
  7. how tomcat works(第15章: Digester)
  8. [导入]ASP.NET Ajax程序设计第II卷:客户端Microsoft Ajax Library与异步通信层及源代码.zip(101.50 MB)...
  9. (转)基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用...
  10. (转)postgis常用函数介绍(二)