单片机信息网:深圳市今科电子有限公司
网站地图 RSS订阅
高级搜索 收藏本站
会员中心 欢迎投稿
首页 | 业界动态 | 解决方案 | 技术文献 | 下载中心 | 单片机学习 | 单片机原理 | 单片机编程 | 单片机设计 | 单片机开发 | 技术专题 | 单片机论坛 |单片机博客| 联系我们
单片机新闻 | 单片机学习 | 单片机编程 | 单片机设计 | 单片机开发 | 单片机原理 | 单片机解密 | 芯片解密 | IC解密 | 单片机方案 | 51单片机 | AVR单片机 | PIC单片机
单片机程序实例大全 | 潜入式系统 | PCB设计 | 单片机资料下载 | 工具/软件下载 | 技术经验分享 | 单片机技术人生 | IC资料下载 | 数字电路 | 模拟电路 | 单片机空间
当前位置:主页>单片机设计>文章内容
8051单片机中DPTR的扩展设计
来源:单片机信息网 作者:徐柳茂 蒋念东 黄永强 发布时间:2007-10-16 阅读次数: 【大 中 小】【收藏本文】 【打印

8051单片机中DPTR的扩展设计

摘要 首先对比分析在执行大规模数据转移时,传统8051单片机和进行DPTR扩展后的8051单片机在数据转移执行效率上的差别。通过详细分析DPTR操作所涉及的因素,具体实现对DPTR的扩展,并进行实际仿真测试。

关键词 8051单片机 DPTR 数据转移执行效率

  单片机的出现是计算机技术发展史上的一个里程碑,它使计算机从海量数值计算进入到控制领域。在单片机中,以8051系列最为经典,至今仍是最普 及、广泛使用的8位MCU架构。业界许多技术人员在其基础上不断进行性能扩展,使得8051系列芯片不断完善,从而形成一个庞大的体系。在传统的8051 系列单片机中,设置了一组双字节寄存器(数据指针DPTR),用于访问外接的64 KB数据存储器和I/O接口电路;但在现今的8051单片机应用中,特别是在嵌入式系统中,往往涉及大规模的数据转移操作,而传统8051的一组数据指针 使用起来则显得捉襟见肘,因此若在8051设计中将数据指针设计为两组或多组,则在执行大规模数据转移操作时会相当简便、迅速。在这种背景下,本文首先以 数据转移执行效率为衡量标准,分析了DPTR扩展的意义,并在Oregano公司的MCS8051核[1]上实现了DPTR扩展。

1  DPTR扩展意义

  为描述8051中的DPTR扩展的意义,我们针对实现大规模数据转移,分别对DPTR扩展前后作了对比。为使对比更加清晰明了,提出了数据转移执行效率的概念。

  数据转移执行效率v定义为进行单字节数据转移所耗费的机器周期数,即v=nt。其中,n表示所转移数据字节数;t表示所耗费的机器周期,可设定其单位为字节/机器周期。

  在未进行DPTR扩展的8051中,可通过设置地址缓冲区的方法来实现大规模的数据转移。具体的例程如下:

  MOVPRE:
    MOV50H, #s_adrh
    MOV51H, #s_adrl
    MOV52H,#t_adrh
    MOV53H,#t_adrl
    MOVR2, #64
  REMOVE:MOV DPH, 50H
    MOV DPL, 51H
    MOVX A, @DPTR
    INC DPTR
    MOV 50H, DPH
    MOV 51H, DPL
    MOV DPH, 52H
    MOV DPL, 53H
    MOVX @DPTR,A
    INC DPTR
    MOV 52H, DPH
    MOV 53H, DPL
    DJNZ R2, REMOVE

  在此例程中,50H、51H用于存放数据源地址s_adr(s_adrh为高字节, s_adrl为低字节),52H、53H用于存放数据目的地址t_adr(t_adrh为高字节, t_adrl为低字节),实现将源地址起始64字节数据转移至目的地址。在8051中,执行n字节数据移位操作耗费(14+28×n+2)个机器周期,数 据转移执行效率为v=n/(14+28×n+2)。在本例程中,n为64,计算得出共需耗费1 808个机器周期,执行效率v约为0.035 4字节/机器周期,而且在此实现方法中需占用8051的4个片内存储器(RAM)单元。

  如8051中拥有两组DPTR,并可通过特殊指令来实现DPTR选取。可设定SETDPTR0指令表示选取DPTR0,SETDPTR1指令表示选取DPTR1,#s_adr表示数据源地址,#t_adr表示数据目的地址,则程序可设计为:

  MOVPRE:
    SETDPTR0
    MOVDPTR,#s_adr
    SETDPTR1
    MOV DPTR,#t_adr
    MOV R2,#64
  REMOVE2:
    SETDPTR0
    MOVX A,@DPTR
    INC DPTR
    SETDPTR1
    MOVX @DPTR,A
    INC DPTR
    DJNZ R2,REMOVE2

  程序中, 对于特殊指令SETDPTR0和SETDPTR1,可通过设置特殊功能寄存器(SFR)以表示DPTR状态,并对此SFR进行操作,以实现DPTR选取。 因此DPTR选取指令可由3字节指令实现,则在两组DPTR情况下执行大规模数据转移需耗费(14+12×n+2)个机器周期,数据转移执行效率为v= n/(14+12×n+2)。在本例程中,执行64字节数据转移需耗费784个机器周期,执行效率约为0.085 64字节/机器周期。

  通过以上对比发现,拥用两组DPTR的8051比传统8051在大规模数据传输时的数据转移执行效率比为(14+28×n+2)/(14+12×n+2)。由图1可知,随着所转移数据量的不断加大,即n值增大时,执行效率比也不断增大,且最后趋近于2.33。

按此在新窗口浏览图片
图1  数据转移执行效率对比图

  经过以上分析得出:在8051中设置两组DPTR将会使其在数据转移执行效率上有很大提高。从资源占用方面考虑,使用扩展DPTR的方式来实现 数据转移,仅需在8051中添加一个SFR,因此在8051中实现DPTR扩展,可在资源占用很少的条件下,明显加快数据转移速率。这对于在嵌入式系统应 用中,进行大规模数据转移意义重大。

2  具体设计实现

  在8051中对DPTR实现扩展,首先需要对DPTR的相关指令进行分析,再确定对其进行扩展会影响到哪些指令操作;并根据其所涉及的指令,分析相应的模块,最后针对各模块分别进行设计修改。

2.1  相关指令分析

  在8051标准指令集的111条指令中,与DPTR有关的指令共有5类,分别为:

  ①  程序存储器查表指令,“MOVC A,@A+DPTR”;
  ②  片外RAM传送指令,“MOVX A, @DPTR”和“MOVX @ DPTR , A”;
  ③  寄存器数据传送指令,即可对DPTR进行读写操作,在8051中DPTR由DPH(DPTR高8位字节)和DPL(DPTR低8位字节)构成,且DPH和DPL与一般的SFR一样,都可作为寄存器进行读写、压栈等操作;
  ④  程序转移指令,“JMP @A+DPTR”;
  ⑤  运算指令,可分别对DPH和DPL进行运算操作。

  通过对以上与DPTR相关的5类指令分析可知:第③类指令和第⑤类指令是将DPTR作为SFR进行操作的。第①类指令和第④类指令都是DPTR 与PC指针进行的数据传送操作;第②类指令是对片外RAM地址寄存器进行的数据传送操作。因此,DPTR的操作具体涉及8051中以下3个模块:SFR读 写模块、PC指针模块及片外RAM地址模块,故对DPTR的扩展也在这3个模块中进行。

2.2  具体模块设计

  对于DPTR状态寄存器可设为dptr_sel,通过对DPTR状态标志位dps操作,实现DPTR选取。当dps=0时,选取DPTR0;当 dps=1时,选取DPTR1。在8051中,DPTR分别由DPH和DPL组成,因此对DPTR的选取实际上是对特殊功能寄存器DPH0、DPL0和 DPH1、DPL1的选取。

  基于以上的设计思路,笔者分别在涉及DPTR操作的3个模块中进行了相应的修改。本设计所选用MCS8051核由VHDL语言设计,完全兼容标准8051指令集。

  在SFR读写模块中,应针对读、写模块分别进行修改。通过分析MCS8051设计代码可知,对于DPTR的读操作,是通过将DPTR中数据传送 给数据暂存寄存器S_REGDATA,再通过对S_REGDATA进行读操作来实现的,因此可在进行DPTR数据暂存前,利用选择位dps来对DPTR进 行选取。具体示意如图2所示。

  在对DPTR进行写操作时,实际上是对DPH和DPL进行操作(DPH地址为83H,DPL地址为82H),因此对DPTR进行写操作时需对 DPH和DPL分别进行操作。在MCS8051中对SFR的写操作,实际上是先将要写入的数据暂存在S_DATA寄存器中,再通过将S_DATA数据分别 写入DPH和DPL来实现的。因此可在S_DATA数据写入前对DPTR0和DPTR1进行选择判断,来实现对DPTR0和DPTR1的写操作,即dps =1时,将S_DATA数据写入DPH1和DPL1;dps=0时,将S_DATA数据写入DPH0和DPL0,具体结构如图3所示。

按此在新窗口浏览图片
图2  DPTR读模块示意图    图3  DPTR写模块结构图

  在PC指针模块和片外RAM地址模块中,由于也是涉及DPTR的读操作,因此该模块的修改与SFR读模块中的修改类似,也是利用dps来实现DPTR0、DPTR1的选取。

3  仿真测试

  在MCS8051中,针对以上3个模块分别作了修改,将DPTR扩展为两组,通过对DPTR_SEL(设定为SFR的E1H)中DPTR状态标 志位dps进行操作,来实现对DPTR0和DPTR1的选取,并利用仿真软件Modelsim6.0进行了仿真测试。由于在实现DPTR扩展时主要针对 SFR读写模块、PC指针模块和片外RAM地址模块这3个模块进行了修改,因此对于DPTR扩展的仿真测试也分3个模块进行。

3.1  针对SFR读写模块的测试

  该模块的测试主要为测试DPTR0和DPTR1的数据传输。首先对DPTR状态标志dps位进行操作,分别选取DPTR0和DPTR1;其次分别对其进行写操作;最后将DPTR0和DPTR1中数据值依次输出寄存器A中。具体波形如图4所示。

按此在新窗口浏览图片
图4  SFR读写测试波形

  由图4可知,在执行指令75E100前后(即将dps复位,选取DPTR0),DPH和DPL输出(执行指令E583,E582)到寄存器A中 的值不同。指令75E100执行前DPH输出为55,DPL输出为66,执行后输出分别为11和22,因此表明通过dps进行DPTR选取,读写操作无 误,即对SFR读写模块的修改无误。

3.2  针对PC指针的数据查表测试

  针对此模块,进行了一个查表测试,即向DPTR0和DPTR1中分别写入data1和data2两个数据表的地址;而后利用dps选取DPTR0和DPTR1,再分别对其进行数据查表输出。具体波形如图5所示。

按此在新窗口浏览图片
图5  PC指针的数据查表波形

  选取DPTR1(已存入data2地址,执行指令75E180)后,将寄存器A清零(执行指令7400),并将查表数据输出(执行指令93), 输出数据为11H;而后选取DPTR0,再次将寄存器A清零,并进行查表输出,输出数据为44H。对比可发现输出数据与表中数据一致。由此表明,通过 dps选取DPTR0和DPTR1,进行数据查表操作无误,即对PC指针模块的修改无误。

3.3  片外RAM数据读写测试

  对于片外RAM数据读写测试,即大规模数据转移,测试方案为:首先将DPTR0和DPTR1中分别写入地址adr0和adr1,再分别对这两个 地址写入数据,最后将这两个地址的数据通过DPTR0和DPTR1读出,将读出的结果与写入结果对比,具体测试波形如图6所示。

按此在新窗口浏览图片
图6  片外RAM数据读写波形

  将dps置位(执行指令75E180)选取DPTR1后,将片外RAM中adr1数据读出,输出数据为77H;将dps复位(执行指令 75E100)选取DPTR0后,将adr0数据读出,输出数据为44H。经对比可发现与所写入的数据一致。由此可表明,通过dps选择DPTR0和 DPTR1对片外RAM进行数据读写无误,即表明对片外RAM地址模块的修改无误。

3.4  FPGA仿真测试

  基于MCS8051这款8051微控制器,我们还进行了实际的FPGA仿真测试。首先利用RS232接口,在从计算机上将大规模数据接收并写入 到MCS8051片外RAM的地址adr0中;再利用例程2所给方法,进行大规模数据转移,将数据转移写入到地址adr1中;最后通过RS232接口将 adr1中数据发送到计算机。通过对比发送和接收的数据发现,笔者对于DPTR的扩展无误。

结语

  通过扩展DPTR可使8051在大规模数据转移时的执行效率大大提高,这使得采用扩展8051作为微控制器的嵌入式系统,在大规模数据转移时,其处理速度将大大提高。利用文中所阐述的方法也可将DPTR扩展为多组,但其具体应用意义尚需进一步探讨。

参考文献

[1]  http://oregano.at/ip/ip12.htm.
[2]  卢毅,赖杰. VHDL与数字电路设计[M]. 北京:科学出版社,2001:99139.
[3]  吴炳胜,王桂梅.  80C51单片机原理与应用[M]. 北京:冶金工业出版社,2001.
[4]  王春玲. VHDL设计中电路优化问题探讨[J]. 单片机与嵌入式系统应用,2006(1):6971.

共2页: 上一页 1 [2] 下一页

上一篇:基于uClinux的GPSOne/GPS双定位信息接收   下一篇:RFM001射频模块感应电锁控制器的设计

标签:8051单片机 DPTR 数据转移执行效率 点此搜索本站更多相关信息...搜索更多相关内容..

您可能还感兴趣的内容: 深圳今科电子单片机解密、IC解密服务 今科电子单解机、IC解密业务是怎样的流程?

此页的访问者还关注了下面这些相关资讯


·RFM001射频模块感应电锁控制器的设计
·基于IRIG-A码输出的超小型GPS时钟设计
·基于高速传输技术的0FDM系统设计
·数字音频射频收发芯片nRF24Z1原理及应用
·数据监测模块的实时性分析与设计
·CBS算法的RTAI内核调度器设计
·单片机硬件系统设计原则
·HT46R22单片机在电磁炉功率控制中的应用
·PIC单片机 六挡调控电涡流缓速器
·基于W78E54B单片机电话计费器的设计
·具有波特率自适应功能的无线数据传输模块设计
·μPSD32xx单片机在税控器中的应用
·IC卡有线电视收费控制器的设计与研制
·MSP430单片机的加密熔断器设计
·内含CalmRISC CPU的8位单片机S3CK215及其应用
·基于Proteus软件的单片机实验室建设
·基于CDMA的移动无线数据传输系统
·单片机C8051F020及其在仪器和仪表中的应用
·Atmega16在开关磁阻电机调速系统中的应用
·单片机系统设计与C51编程实践
·基于51单片机的车用数字仪表设计与实现
·基于单片机和AD9858的4频点快速跳频设计
·用单片机和EDA协同设计温度采集系统
·基于GPRS的自动抄表系统设计
·基于ATmega162的智能仪器设计
·基于Atmega8的数字功放设计
·基于nRF905的无线数据传输设备设计
·单片机实现对CF卡的读写
·单片机软硬件联合仿真解决方案
·单片机应用系统设计(基于I2C总线的MSP430)
·基于ADV202的嵌入式视频压缩系统软硬件设计
·基于单片机PIC18F66J10的主动放线机设计
·PIC单片机的应用设计技巧
·一种实用的PIC编程嚣的设计方法
·一种用于单片机的红外串行通信接口
·用现场可编程门阵列实现的频率计
·基于单片机和DSP的被动声目标探测平台设计
·基于PNX1500的嵌入多媒体平台
·FPGA在语音存储与回放系统中的应用
·采用多单片机的液位监控仪


版权声明:
( 更多版权详述 | 隐私政策 )

1、凡本网注明“来源:单片机信息网”或“单片机论坛”的文字、图片和音视频作品,版权均属深圳市今科电子有限公司所有,任何媒体、网站或个人未经本网书面授权不得转载、链接、转贴或以其他方式使用;已经本网书面授权的,在使用时必须注明“来源:单片机信息网”或“单片机论坛””。
2、本网未注明“来源:单片机信息网”或“单片机论坛”的作品均为转载稿,本网转载稿件只为传递更多信息,并不意味着认同其观点或真实性。如其他媒体、网站或个人转载使用,必须保留本网注明的“稿件来源”,并自负法律责任。
3、对于单片机信息网通过单片机论坛发布的作品,本网受著作权人委托禁止任何媒体、网站或个人在未经书面授权的情况下转载使用。
4、为维护自身权益、尊重作者版权,单片机信息网特委托深圳市律师协会为本网站法律顾问。对于违反本声明的,单片机信息网律师将依法追究其责任;对于刊载作品涉及版权等问题的,请作者在两周内与网站管理或张朝阳律师联系。
责任编辑:今科电子
双击复制本文网址,发送给您QQ/MSN上的朋友:
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
§最新评论
今科热门解密系列
·PIC芯片DSP系列单片机解密PIC芯
·Freescale单片机解密飞思卡尔芯
·飞思卡尔(Freescale)单片机解密/
·pic18f系列单片机解密
·三星(Samsung)系列单片机极速解
·飞林Feeling芯片系列MCU单片机/I
·MICROCHIP微芯(PIC)系列单片机/M
·单片机破解的常用方法及应对策略
·IC卡预付费电度表的安全及防范技
·单片机解密 单片机解密方法 单片
·PHILIPS系列单片机解密
·独家STC单片机解密
·我对红外遥控信号的解码思路
·51系列单片机解密(数分钟搞定)
·芯片解密业务流程介绍
·单片机解密后提供什么文件?
·单片机解密后为何要提供厂家的专
·芯片是如何被解密的?
·SST系列MCU单片机/IC/芯片解密
·INTEL系列单片机/IC/芯片解密
·ISSI系列MCU单片机IC破解芯片解
·ZILOG系列MCU单片机IC破解芯片解
·MOTOROLA系列MCU单片机IC破解芯
·LG(HYUNDAI系列MCU单片机/IC破
·MCPLD/EPLD系列MCU单片机IC破解
·新茂系列MCU单片机IC破解芯片解
·PHILIPS系列MCU单片机IC破解芯片
·MXIC系列MCU单片机IC破解芯片解
·(ATMEL)51系列MCU单片机IC破解芯
·华邦芯片系列MCU单片机/IC/芯片
·(MICROCHIP)微芯(PIC)系列MCU单
·CYPRESS系列MCU单片机IC破解芯芯
·Sinowealih系列MCU单片机IC破解
·Tenx系列MCU单片机IC破解芯片解
·松翰(SONIX)系列MCU单片机IC破解
·义隆(EMC)系列MCU单片机IC破解
·合泰(HOLTEK)系列MCU单片机IC破
·麦肯(MDT)系列mcu单片机IC破解芯
·今科单片机解密服务
·单片机程序开发
热点技术文章文献
·单片机课程设计(直流风扇电机转
·单片机课程设计(报警器)
·单片机课程设计心得体会
·单片机课程设计(数字温度计设计)
·单片机课程设计(秒表的设计)
·步进电机单片机控制系统设计
·51单片机模拟SPI总线的方法
·51单片机汇编指令表
·单片机控制GSM手机的技术及应用
·单片机课程设计(秒表的设计程序)
·89S51看门狗功能的使用方法
·步进电机运行系统控制设计
·单片机键盘输入编程
·P1口八个LED灯做三路流水灯实验
·汇编语言及汇编过程
·C语言中嵌入汇编语言集锦
·基于单片机的真空冷冻干燥试验仪
·用C51实现单片机的中文输入法
·51单片机的寻址方式
·第八课:8051单片机I/O引脚工作原
·基于单片机的LED汉字显示屏设计
·用DS18B20构成测温系统
·第五课:常用逻辑电路
·基础实验一:一个外部中断实验
·C8051F与80C51系列单片机的不同
·C51串口输出输入函数
·基于单片机通用引脚的软件UART设
·浅析AT89S51与AT89C51单片机的
·C51中断函数
·基于看门狗芯片MAX708的数据保护
今科推荐产品
·51系列单片机解密(数分钟搞定)
·今科单片机解密服务
·单片机程序开发
·小家电(厨卫电器)系列产品
·灯饰控制系列产品
·四键遥控器系列产品
·红外遥控器系列产品
相关技术文献资讯
·RFM001射频模块感应电锁控制器的
·基于IRIG-A码输出的超小型GPS时
·基于高速传输技术的0FDM系统设计
·数字音频射频收发芯片nRF24Z1原
·数据监测模块的实时性分析与设计
·CBS算法的RTAI内核调度器设计
·单片机硬件系统设计原则
·HT46R22单片机在电磁炉功率控制
·PIC单片机 六挡调控电涡流缓速器
·基于W78E54B单片机电话计费器的
·具有波特率自适应功能的无线数据
·μPSD32xx单片机在税控器中的应
·IC卡有线电视收费控制器的设计与
·MSP430单片机的加密熔断器设计
·内含CalmRISC CPU的8位单片机S3
·基于Proteus软件的单片机实验室
·基于CDMA的移动无线数据传输系统
·单片机C8051F020及其在仪器和仪
·Atmega16在开关磁阻电机调速系统
·单片机系统设计与C51编程实践
·基于51单片机的车用数字仪表设计
·基于单片机和AD9858的4频点快速
·用单片机和EDA协同设计温度采集
·基于GPRS的自动抄表系统设计
·基于ATmega162的智能仪器设计
论坛最新讨论资讯
芯片解密常见问题
· 什么是单片机?
· 单片机要如何加密?
· 单片机芯片是如何被解密的?
· 单片机解密后提供什么文件?
· 芯片解密为何用专用格式文档?
· 芯片解密是怎样的业务流程?
首页 - 隐私政策 - 版权申明 - 网站地图 - 产品中心 - IC解密中心 - 企业文化 - 代理加盟 - 公司简介 - 人才招聘 - 常见问题 - 我要投稿 - 联系我们 - 返回顶部
[单片机信息网] .© 2006-2009 版权所有,严禁非法复制与建立镜像.运营商:[今科电子] 公司地址:中国.深圳/上海 E-Mail:renbangent#126.com sales#techmcu.com(换#为@)
深圳公司 电话热线:+86 0755-82964200 82964201 82964700 传真:+86 0755-82964432 技术支持:13684994966 业务QQ: 501995683 联系人:黄/陈小姐(工程师) 罗先生(高工)
上海公司 电话热线:+86 021-63062380 15001885509   传真:+86 021-63062380-6   技术支持:15001885509 业务QQ:xxxxxxxx   联系人:郑小姐(业务) 陆工(工程师)
Optimized for 1024x768 to Firefox,Opera and MS-IE6 or higher,Template designed by: Berlin Lee.Web Support[FuAn Network] ICP Record No.:07053756 Webmaster