DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 282|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:46:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
    摘要:W77E58是Winbond公司推出的新一代增强型51系列单片机,文中介绍了W77E58对存储器访问的特点,并举例给出多种有关的应用程序实例。
    关键词:单片机  存储器  程序  W77E58
    增强型51系列单片机W77E58可与标准的8052兼容,它内含4个8位I/O口、3个16位计数器和全双工串行通信接口。由于W77E58对处理器内核进行了重新设计,因而其性能较之于标准的8052有了很大提高。
    W77E58改进了传统处理器的时序。机器周期与时钟之比可以由软件来控制,最快时一个机器周期仅需4个时钟,最慢时一个机器周期需1024个时钟。在同样的时钟频率下,当时钟/机器周期等于4时,W77E58的指令速度比传统的51单片机提高了1.5"3倍(平均2.5倍)。如果以时钟/机器周期等于4为正常工作方式,那么时钟/机器周期等于1024就可以认为是经济模式了。W77E58为全静态CMOS设计,其工作时钟最高为40MHz,最低可以为0,因此W77E58可以工作在空闲方式和掉电方式。
    W77E58片内的可多次编程的程序存储器为32kB,还具有1kB的片内数据存储器。在大程序量和稍大数据量的应用时,W77E58不需要扩展外部程序外储器和数据存储器,因而可为用户节省出较多的I/O线。为了方便程序对数据的操作,W77E58增加了一个数据指针(DPtr1)和一条指针运算指令(DEC DPtr)。
    W77E58还另外增加了一个串口中,因而它具有两个全双工的串行接口,从而大大增强了其在通信方面的能力。值得注意的是,W77E58新增的串行口只能以Timer1做波特率发生器。此外W77E58还增加了一个片内的看门狗。
1 W77E58的程序存储器
    W77E58对程序存储器的寻址能力为64kB。片内程序存储器的使用和8052基本相同,区别是程序存储器的容量由8kB增加到32kB。如果访问程序存储器的地址超出了32kB,则W77E58自动寻址外部的程序存储器,这时端口P0和P2将参与访问操作。使用MOV C指令可以访问存放在片内程序存储器中的数据。
    下面是访问程序存储器中数据的C语言程序。
    程序1:访问程序存储器中数据的方法
    unsigned char code * code message [ ]={ /*程序存储器数据的初始化*/
    “r”,
    “W77E58 C51 Program”,
    “Written by Hu You Nong”,
    “1999-7”,
    };
    unsigned char code seg-table [ ] ={0x3f,0x06,0x6b,0x4f,0x66,0x6d,0x7d};
    x=seg-table[2]; /*程序存储器数据的引用*/
2 W77E58的数据存储器
    W77E58对数据存储器的寻址能力为64kB,与传统51系列芯片不同的是:W77E58增加了1kB的片内SRAM,位于地址0000H"03FFH之间,对此存储器的访问只能用MOVX指令。由于片内SRAM与片外扩展SRAM共同使用0000H"03FFH同一个地址空间,且都用MOVX指令访问,因此具体访问到哪个存储器还需通过设置有关SFR来决定。然而,当寻址超出3FFH后,W77E58将自动访问片外SRAM,这时端口P0和P2将参与访问操作。此外,W77E58还具有标准的256B的RAM,访问这256RAM的方法与普通8052系列CPU的操作相同。方法是:对低128B(00H"7FH)RAM的访问可以使用直接寻址或间接寻址的指令,但用直接寻址的指令读写高128B(80H"FFH)RAM时,访问的是SFR,用间接寻址的指令读写高128B(80H"FFH)RAM时,访问的是数据存储单元。
    图1是W77E58数据存储器的结构示意图:


    下面是访问数据存储器的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 具体数据
[table]


MD2[/td]
MD1[/td]
MD0[/td]
机器周期[/td]
RD或WR脉宽(时钟)[/td]
RD或WR脉宽(时钟25MHz)[/td]
RD或WR脉宽(时钟40MHz)[/td][/tr]

0[/td]
0[/td]
0[/td]
2[/td]
2[/td]
80ns[/td]
50ns[/td][/tr]

0[/td]
0[/td]
1[/td]
3(缺省)[/td]
4[/td]
160ns[/td]
100ns[/td][/tr]

0[/td]
1[/td]
0[/td]
4[/td]
6[/td]
320ns[/td]
200ns[/td][/tr]

0[/td]
1[/td]
1[/td]
5[/td]
12[/td]
480ns[/td]
300ns[/td][/tr]

1[/td]
0[/td]
0[/td]
6[/td]
16[/td]
640ns[/td]
400ns[/td][/tr]

1[/td]
0[/td]
1[/td]
7[/td]
20[/td]
800ns[/td]
500ns[/td][/tr]

1[/td]
1[/td]
0[/td]
8[/td]
24[/td]
960ns[/td]
600ns[/td][/tr]

1[/td]
1[/td]
1[/td]
9[/td]
28[/td]
1120ns[/td]
700ns[/td][/tr]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-25 10:18 , 耗时 0.087595 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表