51单片机W77E58的存储器访问

发布者:MysticJourney最新更新时间:2018-01-17 来源: eefocus关键字:51单片机  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 具体数据

MD2MD1MD0机器周期RD或WR脉宽(时钟)RD或WR脉宽(时钟25MHz)RD或WR脉宽(时钟40MHz)
0002280ns50ns
0013(缺省)4160ns100ns
01046320ns200ns
011512480ns300ns
100616640ns400ns
101720800ns500ns
110824960ns600ns
1119281120ns700ns

5 关于SFR

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

PMR,地址:c4h

D7D6D5D4D3D2D1D0
CD1CD0SWB/XTOFFALE OFF/DME0

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

表2 机器周期选择

CD1CD0时钟/机器周期
00保留
014
1064
111024

    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

D7D6D5D4D3D2D1D0
WD1WD0T2MT1MT0MMD2MD1MD0

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

表3 看门狗模式参数选择

WD1WD0中断时间复位时间
002 172 17+512
012 202 20+512
102 232 23+512
112 262 26+512

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

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


关键字:51单片机  W77E58  存储器 引用地址:51单片机W77E58的存储器访问

上一篇:24LCxx读写EEPROM的实例(C语言)
下一篇:LabTool-48编程器对SST89C58编程经验

推荐阅读最新更新时间:2024-03-16 15:53

8051单片机操作K9KF5608 FLASH存储器程序
//-----------------------函数声明,变量定义-------------------------------------------------------- #include reg51.h #include stdio.h #include intrins.h #include reg51.h sbit FLASH_CLE=P1^0; sbit FLASH_ALE=P1^1; sbit FLASH_WE=P1^2; sbit FLASH_WP=P1^3; sbit FLASH_CE=P1^4; sbit FLASH_RD=P1^5; sbit FLASH_RB=P1^6; void WriteCom
[单片机]
51单片机中断笔记
一、中断的概念 对于单片机中断,可以简单理解为在看电视的过程中,突然蹦出一个广告,广告过了在继续播放之前的节目。CPU在处理事件A时,发生了另一事件B,请求CPU迅速去处理(中断发生),CPU中断当前的工作,转去处理事件B(中断响应和中断服务),待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回)。 二、基本中断源 1.51单片机中的5个重要中断 单片机的应用与开发,实际上就是通过单片机的三个重要外设,即外部中断、定时器/计数器和串口来实现对寄存器的操作。 三、中断结构图 四、特殊功能寄存器 IE :中断控制寄存器 IP :中断优先级寄存器 TCON :中断状态标志寄器 TMOD :定
[单片机]
基于51单片机的智能大棚水量温度控制系统设计
一.系统概述 系统使用的模块有AT89C51单片机+LCD1602显示屏+ADC0832模数转换+电机模拟浇水+小灯模拟加热。 系统使用AT89C51单片机作为主控,LCD1602会显示温度的变化,通过ADC0832和电位器来模拟大棚内的水量的变化,使用按键可以设置温度阈值,通过DS18B20检测大棚内的温度,当检测到水量过低则控制电机进行浇水,当检测到温度过低则控制小灯进行加热。 二.仿真概述 1.使用LCD1602显示环境实时温度和温度阈值。 2.通过按键可以设置温度的阈值。 3.当检测到温度低于温度阈值时加热小灯亮。 4.当检测到水量低于阈值时就开始控制电机浇水。 三.程序设计 使用Keil 51进行
[单片机]
基于<font color='red'>51单片机</font>的智能大棚水量温度控制系统设计
51单片机 串口
串口这货,重要性就不用说了。哪里有单片机,哪里就有串口了。 直接上代码: #include #define uint unsigned int #define uchar unsigned char uint flag; //串口中断标志变量 uchar accept_data; //串口接收到的数据 uint i; //用于把 I get 六个字符型数据发送出去 uchar code table = I get ; //字符型编码数组 void init();
[单片机]
51单片机的输入/输出口(IO口)
MCS-51单片机有4个双向的8位I/O口的P0~P3口为三态双向口 P1,P2,P3口为准双向口(用作输入时,口线被拉成高电平,所以称为准双向口)。 P0口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。 P0口还可以用来输出外部存储器的第8位地址。 由于是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。 P1口是专门供用户使用的I/O口,用户可以利用它作为I/O口线使用。P1口是准双向口。每一位均由锁存器(SFR)、输出驱动器和输入缓冲器组成。 它们的上拉电阻实际上不是线性电阻,而是由场效应管构成 ,每位锁存器均由D触发器组成。 每个I/O口都有两种读入方法:读锁存
[单片机]
武汉2019规划:提速存储器新基地建设,培育“芯”产
集微网消息(文/春夏)1月5日,武汉在第十四届人民代表大会第四次会议上对2019年重点任务进行部署。 据中国光谷报道,其中就包括提速存储器等国家新基地建设,培育“芯”产业集群,落地落实“一芯驱动、两带支撑、三区协同”。 “一芯驱动”即大力发展以集成电路为代表的高新技术产业、战略性新兴产业和高端成长型产业,培育国之重器的“芯”产业集群,将武汉、襄阳、宜昌等地打造成为综合性国家产业创新中心、“芯”产业智能创造中心、制造业高质量发展国家级示范区,加快形成中心带动、多极支撑的“心”引擎,加快形成高质量发展的“新”动能体系。 长江存储是我国三大存储器晶圆厂之一,由紫光集团联合国家集成电路产业投资基金、湖北集成电路产业投资基金、湖北省科技投资
[手机便携]
51单片机之IO口扩展——74HC165芯片并行转串行实验
我们都知道通信从大的方面有两种:串行和并行。串行的最大优点是占用总线少,但是传输速率低;并行恰恰相反,占用总线多,传输速率高。市面上有很多这样的芯片,有串入并出的(通俗讲就是 一个一个进,最后一块出来),有并入串出的(相对前者而言)。具体用哪种类型要根据我们得实际情况。比如利用单片机显示数码管单纯的显示一个数码管如果仅仅是为了显示 那么动用单片机一个端口(如P0或P1/P2/P3)那没有什么,当然这里我说的数码管是8段的(如果利用BCD类型 16进制数码管那么只需四个即可)就拿51类型的单片机来说,总共32个I/O口,一般如果不是做太大的工程是完全够用的,但有些时候你会恨单片机怎么不多长几条“腿”,怎么省还是不够用。这个时候就需要
[单片机]
<font color='red'>51单片机</font>之IO口扩展——74HC165芯片并行转串行实验
一种并行存储器系统的FPGA实现
   摘 要: 介绍一种可在现代小卫星上应用的高(低)位交叉并行存储系统,并给出了该存储系统控制器的FPGA实现。该系统的应用将极大地增强星上计算机的数据通信和图象处理的能力,并提高整个系统的可靠性。     关键词: 现代小卫星 星载计算机 并行存储系统 FPGA 硬件描述语言     现代小卫星,通常指80年代以后发展起来的小卫星。它建立在微电子技术,计算机(包括软件)、微型光学和机械、轻型复合材料及高精机械加工的基础上,是航天高技术发展的产物。虽然现代小卫星的体积和重量很小,成本和风险都很低,但由于选用了高新技术,整个小卫星的容量和性能,即小卫星的功能密度是很高的。而且小卫星组成星座可拓宽全新的应用领
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved