有时候我必须选择一个人过冬 习惯在冰天雪地里追梦

心得总结:8051不同类型RAM区的访问区别

上一篇 / 下一篇  2007-05-30 16:15:36 / 个人分类:工作备忘

RAM

地址

访问指令举例

消耗CPU周期

速度

备注

DATA

00H7FH

MOV 01H,#21H

一个或两个

51MCU都有

SFR

80HFFH

MOV 80H,#21H

一个或两个

系统保留的硬件寄存器区,用户不能自由使用。

IDATA

80HFFH

MOV R0,#81H

MOV @R0,#21H

至少三个

8031AT89C2051IDATA8051STC2051

PDATA

00HFFH

MOVX R0,#81H

MOV @R0,#21H

至少三个

加强型51MCU才有PDATA,譬如STC89C51RC

XDATA

0000HFFFFH

MOVX DPTR,#101H

MOVX @DPTR,#21H

至少三个

加强型51MCU才有XDATA,譬如STC89C54RD+

从上表可以看出,不同的RAM区间在地址编排上有重复,为了区分各种RAM区的访问,51MCU从硬件上规定了访问不同的RAM区需要不同的指令,这就造成了不同的RAM区数据访问速度是不一样的,其中DATA区的数据访问速度最快,编程时如果追求效率,变量应尽量定义到这个区域,特别是需要频繁访问的变量。

 

把以下这几段C代码分别用Keil C51编译成汇编后,可以很容易看出不同的RAM区数据访问指令及访问速度的区别。


uchar data  tmpcode=0;

main()

{

tmpcode=10;

}


uchar  idata  tmpcode=0;

main()

{

tmpcode=10;

}


uchar  pdata  tmpcode=0;

main()

{

tmpcode=10;

}


uchar xdata  tmpcode=0;

main()

{

tmpcode=10;

}

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-03  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 28546
  • 日志数: 189
  • 图片数: 24
  • 文件数: 6
  • 书签数: 4
  • 建立时间: 2006-04-20
  • 更新时间: 2008-11-30

RSS订阅

Open Toolbar