新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 增强型51系列单片机W77E58的存储器访问

增强型51系列单片机W77E58的存储器访问

作者:时间:2012-03-15来源:网络收藏

程序2:数据的方法
#define mem ((unsigned char xdata)0x0) /*定义数据指针,片内或片外*/
PMR 1 =1; /*选择片内SRAM*/
Mem[12]=0x34; /*数据0x34存入片内SRAM地址为12的单元中*/
Mem[1200]=0x56; /*由于地址超出1FFH,数据0x56存入片外SRAM*/
PMR =0xfe; /*选择片外SRAM*/
Mem[12]=0x78; /*数据0x78存入片外SRAM地址为12的单元中*/

3 双数据指针的应用

与标准的8052相同,也使用MOVX指令外部数据。MOVX指令有两种:MOVX@Ri和MOVX@DPTR。用MOVX@Ri 指令对数据进行时,16位的寻址地址由两部分组成,其中地址的低8位存在Ri中,而地址的高8位由P2口提供。用MOVX@DPTR指令对数据存储器进行访问时,16位地址全部由数据指针DPTR提供。

有两个数据指针,一个是所有51CPU所共有的DPTR,另一个是W77E58增加的DPTR1。用MOVX@DPTR对数据存储器访问时,究间是DPTR起作用,还是DPTR1起作用,应由数据指针选择位DPS来决定。当DPS=0时,DPTR有效;DPS=1,DPTR1有效。改变 DPS的最快捷的方法是使用INC指令。

下面的程序段是使用两个数据指针进行数据块移动的例子,我们可以发现两个数据指针的使用为程序编写带来了极大方便。

程序3:两个数据指针的应用
MOV R2,#CNT ;R2是循环变量,装入需要移动的字节数
MOV DPS,#00H ;清除DPS,使DPTR有效
MOV DPTR,#DHDL ;DPTR中装入块移动的目的地址
INC DPS ;设置DPS,使DPTR1有效
MOV DPTR,#SHSL ;DPTR中装入块移动的源地址
LOOP:
MOVC A,@DPTR ;从源地址中取数据
INC DPTR ;源地址+1
DEC DPS ;清除DPS,使DPTR有效
MOVX @DPTR,A ;数据存入目的地址
INC DPTR ;目的地址+1
INC DPS ;设置DPS,使DPTR1有效
DJNZ R2,LOOP ;循环直到所有移动操作完成

在进行块长度为50的数据移动时,如果用标准的8052,需要15720个机器周期;如果用W77E58和一个数据指针,则需要5240个机器周期;而上例中W77E58使用两个数据批针,因而只需要3048个机器周期就可以了。很明显,随着数据块的增大,节省时间的效果将更加明显。



评论


相关推荐

技术专区

关闭