51单片机中data,idata,xdata,pdata的区别

发布者:轻松自在最新更新时间:2015-08-07 来源: dzsc关键字:51单片机  data  idata  xdata  pdata 手机看文章 扫描二维码
随时随地手机看文章
说来惭愧,一直以来,在学校也算是搞了不少东西,不过反而是51单片机这个基础的东西没有认真去做过,当初刚自学51没一个多星期呢,就转到飞思卡尔16位单片机上去了,以至于51还没透彻的弄个明白。

就不如我很清楚s12单片机什么片内ram啊,flash大小啊,反而是51的不敢肯定的回答哦。

比如今天再次看到的这个问题,以前就看到过,但因为一直不怎么搞汇编程序,所以对51单片机中的data、idata、xdata和pdata一直不清楚,不过今天不再脱了,决定一定弄清楚。

--------------------------------------------------------------------------------------------

再附上51片内资源简介,再次记忆。

.8位CPU·4kbytes 程序存储器(ROM) (52为8K)

·256bytes的数据存储器(RAM) (52有384bytes的RAM)

·32条I/O口线·111条指令,大部分为单字节指令

·21个专用寄存器

·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)

·一个全双工串行通信口

·外部数据存储器寻址空间为64kB

·外部程序存储器寻址空间为64kB

·逻辑操作位寻址功能·双列直插40PinDIP封装

·单一+5V电源供电

CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;

RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;

ROM:用以存放程序、一些原始数据和表格;

I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;

T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;

五个中断源的中断控制系统;

一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;

片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M。

--------------------------------------------------------------------------------------------

回到主题上来,从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据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和data的128完全相同,只是因为访

问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为:

mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)。

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

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx

读写。这个比较特殊,而且C51好象有对此BUG,建议少用。但也有他的优点,具

体用法属于中级问题,这里不提。

关键字:51单片机  data  idata  xdata  pdata 引用地址:51单片机中data,idata,xdata,pdata的区别

上一篇:MCS-51单片机的存储器结构---单片机基础
下一篇:51单片机常用SFR(特殊功能寄存器)的功能及作用介绍

推荐阅读最新更新时间:2024-03-16 14:27

51单片机测量温度 显示时间和日期 OLED显示 通过蓝牙发送
单片机源程序如下: #include reg52.h #include oled.h #include bmp.h #include ds18b20.h #include stdio.h #include ds1302.h sbit key_s2 = P2^0;//独立按键S2 //串口初始化 void UARTInit() { SM0 = 0; SM1 = 1;//串口工作方式1,8位UART波特率可变 TR1 = 1;//启动定时器1 TMOD |= 0x20;//定时器1,工作模式2 8位自动重装 TH1 = 0xfd; TL1 = 0xfd;//
[单片机]
<font color='red'>51单片机</font>测量温度 显示时间和日期 OLED显示 通过蓝牙发送
Proteus仿真51单片机C语言-单片机向主机发送字符串
简介:单片机向主机发送字符串:单片机按一定的时间间隔向主机发送字符串,发送内容在虚拟终端显示。
[单片机]
Proteus仿真<font color='red'>51单片机</font>C语言-单片机向主机发送字符串
89c51单片机的复位电路,89c51复位电路图详解
  复位电路的目的就是在上电的瞬间提供一个与正常工作状态下相反的电平。一般利用电容电压不能突变的原理,将电容与电阻串联,上电时刻,电容没有充电,两端电压为零,此时,提供复位脉冲,电源不断的给电容充电,直至电容两端电压为电源电压,电路进入正常工作状态。   这篇文章我们就一起来了解一下关于89C51单片机的复位电路方面的消息,希望可以给你带来惊喜。   89c51复位电路图详解   复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。   图1所示的RC复位电路可以实现上述基本功能,图
[单片机]
89c<font color='red'>51单片机</font>的复位电路,89c51复位电路图详解
单片机的 data/idata/xdata/pdata/bit/code
DATA: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。 DATA是 在 0 到 127 之间的一个数据存储器地址,或者加 128 .. 255 范围内的一个特殊功能寄存器(SFR)地址。两者访问的方式不同。实际上由于PSW的复位设置PSW.3=RS0和PSW.4=RS1皆为0,所以通用工作寄存器区就是第0区,所以DATA的00--07H部分是与REG栏中的R0--R7对应的。以后的则仅代表低128字节的内部RAM。 IDATA:固定指前面0x00-0xff的256个RAM,其中前128和DATA的128完全相同,只是因为访问的方式不同。IDATA是用类似C中的指针方式
[单片机]
keil中 code、dataidata的区别
存储器类型   本C51编译器支持8051及其派生类型的结构能够访问8051的所有存储器空间具有下表列出的存储器类型的变量都可以被分配到某个特定的存储器空间。 存储器类型        描述 code        程序空间64 Kbytes ;通过MOVC @A+DPTR 访问 data        直接访问的内部数据存储器;访问速度最快128 bytes idata       间接访问的内部数据存储器 ;可以访问所有的内部存储器空间 256 bytes bdata       可位寻址的内部数据存储器;可以字节方式也可以位方式访问16bytes xdata       外部数据存储器64 Kbytes ;通过MOVX @D
[单片机]
基于51单片机-C语言之预处理总结
简介:编译预处理器是C语言编译器的一个重要组成部分。很好的利用C语言的预处理命令可以增强代码的可读性,灵活性,和易于修改等特点,便于程序的结构化。 预处理命令由符号“#”开头,包括宏定义,文件包含,条件处理三个部分。 其中条件编译我还没有用过,所以就详细介绍一下宏定义和文件包含。 一.宏定义 宏定义命令为#define,它的作用就是实现用一个简单易读的字符串来代替 另一个字符串。增加程序的可读性,和维护性。 宏定义分为不带参数的宏定义,和带参数的宏定义。 不带参的宏定义: 一般格式:#define 标识符 常量表达式 例如用一个字符代替一个常数 #define PI 3.1415926
[单片机]
51单片机直流电机调速源程序
单片机源程序如下: #include reg52.h sbit IN1=P1^1; sbit IN2=P1^2; sbit IN3=P1^3; sbit IN4=P1^4; unsigned char pwm_val_right=0; unsigned char push_val_right=0; unsigned int time=0; unsigned char pwm_val_left=0; unsigned char push_val_left=0; bit right_moto_stop=1; sbit right_moto_pwm=P2^0; bit left_moto_stop=1; sbit left_mot
[单片机]
51单片机开发环境搭建方法
前言 上至航天,下至儿童玩具,凡事沾一点智能的东西,都离不开单片机的身影......,本文开始,我们学习单片机的相关知识,我们采用的是由普中科技开发的A7开发板,该开发板搭载了STC89C52或STC89C516两块芯片,这款单片机属于8051系列和STC8系列的单片机,51单片机作为入门级单片机不仅在教学实验中应用广泛,在实际项目中应用亦是十分广泛。 一、基础知识 1.什么是单片机? 单片机是一个单片微型计算机,由中央处理器CPU、数据存储器RAM、程序存储器ROM、输入/输出设备(键盘、显示屏等)等集成到一块芯片上组成。 2.单片机能做什么? 前言中开篇便比较好的阐释了单片机的功能,凡是沾点智能的影子的东西,都离不开单片机
[单片机]
<font color='red'>51单片机</font>开发环境搭建方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved