基于8051单片机DPTR扩展设计介绍

发布者:RadiantGlow最新更新时间:2023-10-26 来源: elecfans关键字:单片机 手机看文章 扫描二维码
随时随地手机看文章

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


关键字:单片机 引用地址:基于8051单片机DPTR扩展设计介绍

上一篇:8051单片机进行8路LED模拟分支控制
下一篇:在嵌入FPGA的IP核8051微处理器上实现UIP协议栈的设计方法

推荐阅读最新更新时间:2024-11-16 21:26

基于单片机的无线传感器网络节点制作及组网设计方案
1. 引言   早在上世纪70年代,就出现了采用点对点传输、连接传感控制器而构成的传感器网络雏形,我们把它归之为第一代传感器网络。随着相关学科的不断发展和进步,传感器网络同时还具有了获取多种信息信号的综合处理能力,并通过与传感器控制器的相联,组成了有信息综合和处理能力的传感器网络,这是第二代传感器网络。到了20世纪90年代后期,随着传感器技术的发展,智能传感器采用现场总线连接传感控制器构成局域网,这就是第三代传感器网络。现在,传感器网络以无线传感器网络为标志,它正处于研究和发展的阶段,我们称之为第四代传感器网络。无线传感器网络是新一代的传感器网络,可以应用在军事:环保,医疗以及空间探索等许多领域,可以说它具有非常广泛的应用前景
[单片机]
基于<font color='red'>单片机</font>的无线传感器网络节点制作及组网设计方案
23-基于51单片机的智能电子秤设计
具体实现功能 系统由STC89C51单片机+最小系统+LCD1602液晶显示模块+HX711AD模块+LED模块+蜂鸣器+按键模块+10kg压力传感器构成。 具体功能: 1、数码管显示当前的重量,单位是g; 2、有去皮和清零功能,可以通过三个按键微调校准重量; 3、最大称重9.999kg,超过最大量程声光报警。 设计背景 秤是一种在实际工作和生活中经常用到的测量器具。随着计量技术和电子技术的发展,传统纯机械结构的杆秤、台秤、磅秤等称量装置逐步被淘汰,电子称量装置电子秤、电子天平等以其准确、快速、方便、显示直观等诸多优点而受到人们的青睐。 和传统秤相比较,电子秤利用新型传感器、高精度AD转换器件、单片机设计实
[单片机]
23-基于51<font color='red'>单片机</font>的智能电子秤设计
如何降低需要监视外部输入的MCU系统功耗
目前几乎没有应用不需要降低能耗。对于便携设备和电池供电设备的设计师来说,这是影响所设计产品的最佳性能与可用性的一个约束条件。在美国国内,诸如能源之星(EnergyStar)等计划使得消费者能够更好地理解这个问题,即不仅要降低设备正常使用时的功耗,而且要降低待机模式下的功耗。越来越多的人认识到能源是一种宝贵且有限的资源。 影响系统总体能耗的主要因素之一是位于系统核心的微控制器(MCU)的性能。因此,设计师一直致力于尽最大可能地减小MCU功耗,他们主要关注三个关键领域。 首先是工作能耗,即在给定能量输入条件下MCU能够提供的有用处理工作量,显然这是非常重要的。可以用每兆赫兹(MHz)的电流消耗来衡量MCU的这个指标,32位Corte
[单片机]
如何降低需要监视外部输入的<font color='red'>MCU</font>系统功耗
基于SPMC75单片机的LIN Bus系统
  1.1 引言   LIN 是低成本网络中的汽车通讯协议标准,LIN(Local Interconnect Network)是低成本的汽车网络,它是现有多种汽车网络在功能上的补充由于能够提高质量、降低成本,LIN 将是在汽车中使用汽车分级网络的启动因素。LIN 的标准化将简化多种现存的多点解决方案且将降低在汽车电子领域中的开发生产服务和后勤成本。   LIN 标准包括传输协议规范、传输媒体规范、开发工具接口规范和用于软件编程的接口LIN在硬件和软件上保证了网络节点的互操作性并有可预测EMC的功能。   1.2 芯片简介   SPMC75系列MCU是凌阳科技公司设计开发的高性能16位通用MCU,具有很强的抗干扰性能、丰富易
[单片机]
基于SPMC75<font color='red'>单片机</font>的LIN Bus系统
皮带输送机故障显示智能控制器的设计
皮带运输机是一种摩擦驱动以连续方式运输物料的机械,可以将物料在一定的输送线上,从最初的供料点到最终的卸料点间形成一种物料的输送流程。皮带运输机如今被广 泛的用在码头、煤矿和工业配料等方面,皮带运输机的安全高效运行直接影响着生产的效率。对于多条皮带运输机组成的长距离运输系统,其中一条发生故障如不能及时预报排除,将会对整个生产线造成影响。 1 皮带运输机故障分析 由于海绵垫在生产中需要进行烘干的处理,而刚生产出来的海绵垫由于自身水分过大,不能承受过大的张力,否则会拉断,所以在工业生产中选择皮带作为传动过程的载体。皮带在运行过程中容易发生打滑、过负荷和断带等故障,这些故障都可以通过对皮带速度的检测进行判断。 皮带打滑主要是由于皮带与
[单片机]
皮带输送机故障显示智能控制器的设计
51单片机对继电器的控制
典型的弱电控制强点途径。 怎么样理解这个电路图? 要理解这个电路,其实也比较容易.那么请您按照我的思路来,应该没有问题: 首先的,里面的三极管很重要.三极管是电子电路里很重要的一个元件.怎么样理解三极管呢? 简单的来说三极管有两个作用一个是放大作用,一个是开关作用.(严格来讲开关作用是放大作用的极限情况,不过没关系,把两者分开,更便于理解它的工作原理).在这里,我们只了解它跟本电路有关的开关作用. 首先把三极管想成一个水龙头. 简单C代码 主要功能:对白炽灯的控制,闪烁,时隔3秒 #include reg52.h sbit jdq_1=P1^0; void delay(void) //延时3S 误差 0us { u
[单片机]
51<font color='red'>单片机</font>对继电器的控制
MSP430单片机的 振荡器与系统时钟
简介: 我们这节课的主要内容有: ·时钟源与时钟信号 ·时钟部分的控制寄存器 ·程序中对时钟的操作 1,时钟源与时钟信号 MSP430f149有着丰富的时钟源,作为一代超低功耗的MCU,可以在不同的场合,不同的应用环境下为不同的系统时钟选择不同的时钟源,并对这些时钟源进行多种多样的操作。对于MSP430来说,其时钟系统由低速晶体振荡器LFXT1、高速晶体振荡器XT2和数控振荡器DCO组成。 而三个时钟发生系统所产生的时钟经选择和处理后将分别作为辅助时钟ACLK、主系统时钟MCLK和子系统时钟SMCLK。 MSP430这种多时钟源、多系统时钟的特点,使得它能够很容易实现系统的超低功耗和功耗控制:当系统需要进行数
[单片机]
MSP430<font color='red'>单片机</font>的 振荡器与系统时钟
基于51单片机的温室测试系统
设施农业是世界现代农业发展的主要方向之一,我国农业正处于从传统也向高产、优质、高效为目的的现代化农业转化新阶段,设施农业是我国今后比较长的时间内农业发展的个主要方向。 环境控制对果树生产的重要作用已经为国内外大量的科学实验和生产的实践所证实。只有在适宜的生长环境下果疏才能充分发挥其高产潜力。多年的有关果树生长环境的研究,不仪知道了农业生产,也为温室环境测控的研究提供了理论和依据。但如何利用传感器技术,白动检测技术,通讯技术,计算机技术的发展和温室栽培的推广研制出对温室温度,湿度,二氧化碳浓度的智能测控系统,为果树提供最佳的生长环境,一直是农业研究者面临的重要课题。 虽然国外采用了全智能控制,但是他们的成本太高,不适合我国国情,
[测试测量]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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