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

2006-11-7 14:33 14040 9 11 分类: MCU/ 嵌入式

在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, 建议少用。但也有他的优点,具体用法属于中级问题,这里不提。


startup.a51的作用 和汇编一样,在C中定义的那些变量和数组的初始化就在startup.a51中进行,如果你在定义全局变量时带有数值,如unsigned char data xxx="100";,那startup.a51
中就会有相关的赋值。如果没有=100,startup.a51就会把他清0。(startup.a51==变量的初始化)。 这些初始化完毕后,还会设置SP指针。对非变量区域,如堆栈区,将不会有赋值或清零动
作。 有人喜欢改startup.a51,为了满足自己一些想当然的爱好,这是不必要的,有可能错误的。比如掉电保护的时候想保存一些变量, 但改startup.a51来实现是很笨的方法,实际只要利用非变量区域的特性,定义一个指针变量指向堆栈低部:0xff处就可实现。, 为什么还要去改? 可以这么说:任何时候都可以不需要改startup.a51,如果你明白它的特性。

文章评论2条评论)

登录后参与讨论

1989tie_959541171 2012-7-17 09:41

谢谢,博主, 以前没注意过,他们的不同

用户377235 2012-6-12 15:56

HAO

相关推荐阅读
用户59811 2006-11-09 08:48
Latchup现象和预防措施
Latch up 最易产生在易受外部干扰的I/O电路处, 也偶尔发生在内部电路?? Latch up 是指cmos晶片中, 在电源power VDD和地线GND(VSS)之间由于寄生的PNP和NPN双...
用户59811 2006-11-09 08:43
典型ASIC设计主要流程
典型ASIC设计主要流程      典型ASIC设计具有下列相当复杂的流程:      1) 、结构及电气规定。        2)、RTL级代码设计和仿真测试平台文件准备。      3)、为具有存...
用户59811 2006-11-09 08:38
数字电路笔试题库
数字电路1、同步电路和异步电路的区别是什么?(仕兰微电子)2、什么是同步逻辑和异步逻辑?(汉王笔试)同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。電路設計可分類為同步電路...
用户59811 2006-11-09 08:27
珠海炬力笔试题目
1.        降低NMOS的开启电压VT的方法,哪种无效?A.        减少衬底的P型掺杂浓度B.        减少氧化层厚度C.        增加源漏极的N型掺杂浓度D.      ...
用户59811 2006-11-07 15:06
0欧姆电阻的作用
大概有以下几个功能:①做为跳线使用。这样既美观,安装也方便。②在数字和模拟等混合电路中,往往要求两个地分开,并且单点连接。我们可以用一个0欧的电阻来连接这两个地,而不是直接连在一起。这样做的好处就是,...
用户59811 2006-11-07 15:05
volatile的用法和测试方法
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可...
我要评论
2
9
关闭 站长推荐上一条 /2 下一条