历史上的今天
返回首页

历史上的今天

今天是:2025年01月17日(星期五)

正在发生

2018年01月17日 | 51单片机W77E58的存储器访问

2018-01-17 来源:eefocus

  增强型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指令运行时间选择


推荐阅读

史海拾趣

DUBILIER公司的发展小趣事

在电子行业的早期,DUBILIER公司以其卓越的技术创新能力脱颖而出。当时,市场上对高可靠性电子元件的需求日益增长,而DUBILIER公司凭借其独特的生产工艺和材料科学,成功研发出了一系列高性能的电阻器和电容器。这些产品不仅满足了市场的需求,还为公司赢得了良好的声誉。通过不断的技术创新,DUBILIER公司逐渐在电子行业中确立了其领导地位。

意华(CZT)公司的发展小趣事

为了提高产品质量,意华先后通过了ISO9001、ISO14001、IECQC080000等多项国际质量管理体系认证。这些认证不仅证明了公司的质量管理水平,也为客户提供了更可靠的产品保障。通过持续的质量改进和过程控制,意华的产品质量得到了显著提升,赢得了更多客户的认可。

GSN Electronics公司的发展小趣事

意华在发展过程中,积极拓展国内外市场,与华为、中兴、富士康等知名企业建立了长期稳定的合作伙伴关系。这些合作伙伴的加入,不仅为意华带来了更多的订单和业务机会,也促进了公司技术的交流和提升。通过与这些行业巨头的合作,意华在电子连接器领域的影响力逐渐扩大。

广芯电子(BROADCHIP)公司的发展小趣事

为了进一步扩大规模和提升竞争力,意华先后成立了多家子公司,包括苏州意华电工有限公司、东莞意兆电子科技有限公司等。这些子公司的成立,不仅实现了公司在不同地域的资源整合和优势互补,也加速了公司的集团化发展进程。通过集团化管理,意华能够更好地协调各子公司之间的业务和资源,提高整体运营效率。

CommScope Inc公司的发展小趣事

CommScope Inc公司的前身可以追溯到1953年,在北卡罗莱纳州的山核桃成立的高级电缆公司。这个公司以其卓越的电话线产品赢得了市场的认可。到了1964年,康普的产品线开始使用高级电缆和同轴电缆,标志着公司在电缆技术领域的突破。随着技术的不断革新,1966年,康普在卡托巴县的福特社区开始数控制造,进一步提升了生产效率。1976年,大陆高级康普部门被Frank Drendel领导的投资者集团收购,这为公司日后的发展奠定了坚实的基础。

德艺隆(DEALON)公司的发展小趣事

面对数字化转型和智能化升级的大趋势,德艺隆不甘落后。他们引进先进的生产设备和技术,提高了生产效率和产品质量;同时,公司还加大了对数字化和智能化技术的研发和应用力度,推出了一系列智能化产品解决方案。这些举措不仅提升了公司的竞争力,也为公司的未来发展奠定了坚实的基础。

问答坊 | AI 解惑

带有饱和处理功能的并行乘加单元设计

带有饱和处理功能的并行乘加单元设计 本文介绍了一种48bit+24bit×24bit带饱和处理的MAC单元设计。在乘法器的设计中,采用改进的booth 算法来减少部分积的数目,用由压缩单元组成的Wallace tree将产生的部分积相加,并将被加数作为乘法器的一个部 ...…

查看全部问答>

简易数字存储示波器设计

拜托!!!!!!求一份“简易数字存储示波器设计”的论文,不胜感激!!!253182669@qq.com再次感谢!!!…

查看全部问答>

控制面板程序源程序

想在控制面板上的声音和音频属性设置中加一个设置的选项,但是系统是通过调用mmsys.cpl的,但是mmsys.cpl只有500多K的大小,我想应该是调用了系统其他应用程序,不知道这个程序在什么地方,关于这方面的还请各位大侠能指点一下呀!不知道哪有源代码 ...…

查看全部问答>

咨询 OPC 客户端连 OPC服务的问题

    我按网络上的DCOM配置配好后可以连上OPC SERVER 可是客户机(PC)的用户名跟密码要跟OPC SERVER机子管理员的密码要一样才行,如果配不同的连不上,这是为什么呢?我现在需要的就是用不同的用户跟密码可以连上opc server     ...…

查看全部问答>

请教调试时出现的DrawText的问题?

程序中有 pDC->DrawText(rcClient.Width()-size.cx,size.cy,str); 编译时显示 int __thiscall CDC::DrawTextW(const class CString &,struct tagRECT *,unsigned int)\' : cannot convert parameter 2 from \'long\' to \'struct tagRECT *\' & ...…

查看全部问答>

如何在pc上用tcp/ip/ppp,at指令控制gprsmodem拨号上网

谁能提供给我,我愿意出点费用作为报酬 tel:13430835720…

查看全部问答>

perl,tcl和Shell的区别

perl,tcl,shell这三种语言在应用时有什么区别?各自优点是什么,侧重于哪方面的设计应用,比如界面设计。。。 谢谢…

查看全部问答>