在51系列中data,idata,xdata,pdata的区别
单片机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的区别相关推荐
- 51系列中data,idata,xdata,pdata的区别[笔记]
51系列中data,idata,xdata,pdata的区别 data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小. idata:固定指前面0x0 ...
- 单片机c语言idata什么意思,单片机C语言中的data,idata,xdata,pdata,code
从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的 ...
- 单片机学习笔记——data,idata,xdata,pdata,code
从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的 ...
- 【C语言】[其他] :code, data, idata, xdata, bdata, edata, hdata等,代表的意思
从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设 定 ...
- 8051单片机基础4:数据存储类型(data,idata,xdata,code)
文章目录 存储类型 使用方法 详细说明 8051存储器结构 data idata bdata pdata xdata code 关于作者 参考来源:Keil > Help > uVisio ...
- 关键字data idata xdata code using
1. data 指定数据存储在内部低128字节的数据存储器(RAM)内,即(0x00-0x7f)地址范围内,在定义变量时不指定存储区域,则默认为data类型,这部分存储区可用acc直接读写,片内直接寻 ...
- C51 data idata xdata 和栈 笔记
data 区域0-128 idata 128-256 xdata 看芯片配置的大小. 上图可以设xdata的小这样就可以 在超出芯片资源的情况下,编译程序会报错. 一般先预配置为small 这样编译效 ...
- 51汇编中DATA和EQU
EQU相当于C语言中的#define,重命名的作用,预编译时执行. 例如:LED EQU 0X80H,给0X80起了一个新名字,可以作为立即数或者地址使用(不具有指针的性质,通过不同的寻址方式来确定是 ...
- 【IoT】CC254x 中 data、idata、xdata 和 pdata 区别以及堆 Heap 内存布局
1.data.idata.xdata 和 pdata 区别 从数据存储类型来说,8051 系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code ...
最新文章
- Python函数参数匹配模型(上)
- 红色小方块单击爆炸式展开的菜单代码
- vs2012创建Windows服务
- 大数据WEB阶段Mybatis(一)
- vsftpd的简单安装和配置(只有三步)
- 面试中死锁的考点总结(死锁的定义、产生原因、四个必要条件、如何预防)
- Excel计数(count)可视化
- 深度学习蚕食软件,十年内大部分软件工作不再涉及编程
- 嵌套 思维导图_看我怎么用思维导图,来轻松学习JavaScript,值得收藏
- 【汇编语言】【ARM扩展资料】数据寻址
- 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
- 投资银行业务法规汇编----仅供学习
- 专利号校验码php,电子专利证书的三种下载操作方法
- PHP手机网店管理系统
- 远程过程调用(RPC)详解
- webpack 基础学习
- Visual Studio使用技巧 +谷歌浏览器使用技巧总结
- 深度学习图片预处理:crop
- 云服务器win系统开热点,云服务器win系统开热点
- 分享这些值得收藏的软件,千万别错过
热门文章
- UILabel和NSAttributedString那些事
- IoC框架,依赖注入
- poj1423---求一个大数的位数方法,我猜网站上统计输入字符少于多少位的那个算法...
- 列级触发器 SQL Server
- 最奇特的编程语言的特征
- 修正IE6不支持position:fixed的bug
- how tomcat works(第15章: Digester)
- [导入]ASP.NET Ajax程序设计第II卷:客户端Microsoft Ajax Library与异步通信层及源代码.zip(101.50 MB)...
- (转)基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用...
- (转)postgis常用函数介绍(二)