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

2006-05-07 15:49:37来源: 国外电子元器件

    下面是访问数据存储器的C语言程序。

    程序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 W77E58双数据指针的应用

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

    W77E58有两个数据指针,一个是所有51系列CPU所共有的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个机器周期就可以了。很明显,随着数据块的增大,节省时间的效果将更加明显。

4 访问外部数据存储器的时间

    标准8052的MOVX指令运行时间固定为2个机器周期,而W77E58的MOVX指令运行时间则可以由软件选择。时钟控制字节CKCON中的MD2~MD0用以选择MOVX的机器周期和读写脉冲的宽度。具体数据如表1所列。

表1 具体数据

MD2 MD1 MD0 机器周期 RD或WR脉宽(时钟) RD或WR脉宽(时钟25MHz) RD或WR脉宽(时钟40MHz)
0 0 0 2 2 80ns 50ns
0 0 1 3(缺省) 4 160ns 100ns
0 1 0 4 6 320ns 200ns
0 1 1 5 12 480ns 300ns
1 0 0 6 16 640ns 400ns
1 0 1 7 20 800ns 500ns
1 1 0 8 24 960ns 600ns
1 1 1 9 28 1120ns 700ns

5 关于SFR

    SFR在位于地址c4h处的PMR格式为:

PMR,地址:c4h

D7 D6 D5 D4 D3 D2 D1 D0
CD1 CD0 SWB / XTOFF ALE OFF / DME0

    其中CD1,CD0为机器周期选择。改变机器周期时应先将机器周期改为时钟除4,然后再改为其它选择。如果把机器周期从时钟除64改为除1024,应先将除64改为除4,再从除4改为除2024,参见表2。

表2 机器周期选择

CD1 CD0 时钟/机器周期
0 0 保留
0 1 4
1 0 64
1 1 1024

    SWB:机器周期切回允许位。如SWB=1,当外中断或串行口激活时,强行选择机器周期为时钟除4,设置CD1=0,CD0=1。

    XTOFF:晶体振荡器禁止位。当CPU使用RC振荡器时,设置该位禁止外部晶体振荡器。

    若ALE_OFF=1:则片内程序区和数据区寻址时禁止ALE输出;若ALE-OFF=0:则允许ALE输出。

    在DME0=0时:选择片外SRAM,DME0=1:选择片内SRAM。

    SFR在地址8Eh处的CKCON格式如下:

CKCON,地址:8Eh

D7 D6 D5 D4 D3 D2 D1 D0
WD1 WD0 T2M T1M T0M MD2 MD1 MD0

    其中,WD1,WD0为看门狗模式选择,见表3。

表3 看门狗模式参数选择

WD1 WD0 中断时间 复位时间
0 0 2 17 2 17+512
0 1 2 20 2 20+512
1 0 2 23 2 23+512
1 1 2 26 2 26+512

    T2M、T1M和T0M:分别为定时器2、1和0时钟选择。为0:计数脉冲为时钟除4;为1:计数脉冲为时钟除12。

    MD2~MD0:MOVX指令运行时间选择。

编辑: 引用地址:http://www.eeworld.com.cn/designarticles/control/200605/1628.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved