精品国产成人一区二区三区-女子十八毛片-欧洲性猛交-无码不卡一区二区三区在线观看-www.四虎在线-伊人网国产-国精产品自偷自偷综合下载-不卡av网站-俄罗斯黄色大片-一本久久知道综合久久-国产精品日韩一区二区-日韩精品色-免费人成网ww555kkk在线-黄色在线观看免费-日韩在线免费-久久久久99人妻一区二区三区-十八禁真人啪啪免费网站

機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
8051單片機中DPTR的擴展設計
8051單片機中DPTR的擴展設計
 更新時間:2008-8-19 13:24:37  點擊數(shù):96
【字體: 字體顏色
摘要 首先對比分析在執(zhí)行大規(guī)模數(shù)據(jù)轉(zhuǎn)移時,傳統(tǒng)8051單片機和進行DPTR擴展后的8051單片機在數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率上的差別。通過詳細分析DPTR操作所涉及的因素,具體實現(xiàn)對DPTR的擴展,并進行實際仿真測試。

關鍵詞 8051單片機 DPTR 數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率

  單片機的出現(xiàn)是計算機技術發(fā)展史上的一個里程碑,它使計算機從海量數(shù)值計算進入到控制領域。在單片機中,以8051系列最為經(jīng)典,至今仍是最普及、廣泛使用的8位MCU架構。業(yè)界許多技術人員在其基礎上不斷進行性能擴展,使得8051系列芯片不斷完善,從而形成一個龐大的體系。在傳統(tǒng)的8051系列單片機中,設置了一組雙字節(jié)寄存器(數(shù)據(jù)指針DPTR),用于訪問外接的64 KB數(shù)據(jù)存儲器和I/O接口電路;但在現(xiàn)今的8051單片機應用中,特別是在嵌入式系統(tǒng)中,往往涉及大規(guī)模的數(shù)據(jù)轉(zhuǎn)移操作,而傳統(tǒng)8051的一組數(shù)據(jù)指針使用起來則顯得捉襟見肘,因此若在8051設計中將數(shù)據(jù)指針設計為兩組或多組,則在執(zhí)行大規(guī)模數(shù)據(jù)轉(zhuǎn)移操作時會相當簡便、迅速。在這種背景下,本文首先以數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率為衡量標準,分析了DPTR擴展的意義,并在Oregano公司的MCS8051核[1]上實現(xiàn)了DPTR擴展。

1 DPTR擴展意義

  為描述8051中的DPTR擴展的意義,我們針對實現(xiàn)大規(guī)模數(shù)據(jù)轉(zhuǎn)移,分別對DPTR擴展前后作了對比。為使對比更加清晰明了,提出了數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率的概念。

  數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率v定義為進行單字節(jié)數(shù)據(jù)轉(zhuǎn)移所耗費的機器周期數(shù),即v=nt。其中,n表示所轉(zhuǎn)移數(shù)據(jù)字節(jié)數(shù);t表示所耗費的機器周期,可設定其單位為字節(jié)/機器周期。

  在未進行DPTR擴展的8051中,可通過設置地址緩沖區(qū)的方法來實現(xiàn)大規(guī)模的數(shù)據(jù)轉(zhuǎn)移。具體的例程如下:

  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用于存放數(shù)據(jù)源地址s_adr(s_adrh為高字節(jié), s_adrl為低字節(jié)),52H、53H用于存放數(shù)據(jù)目的地址t_adr(t_adrh為高字節(jié), t_adrl為低字節(jié)),實現(xiàn)將源地址起始64字節(jié)數(shù)據(jù)轉(zhuǎn)移至目的地址。在8051中,執(zhí)行n字節(jié)數(shù)據(jù)移位操作耗費(14+28×n+2)個機器周期,數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率為v=n/(14+28×n+2)。在本例程中,n為64,計算得出共需耗費1 808個機器周期,執(zhí)行效率v約為0.035 4字節(jié)/機器周期,而且在此實現(xiàn)方法中需占用8051的4個片內(nèi)存儲器(RAM)單元。

  如8051中擁有兩組DPTR,并可通過特殊指令來實現(xiàn)DPTR選取。可設定SETDPTR0指令表示選取DPTR0,SETDPTR1指令表示選取DPTR1,#s_adr表示數(shù)據(jù)源地址,#t_adr表示數(shù)據(jù)目的地址,則程序可設計為:

  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狀態(tài),并對此SFR進行操作,以實現(xiàn)DPTR選取。因此DPTR選取指令可由3字節(jié)指令實現(xiàn),則在兩組DPTR情況下執(zhí)行大規(guī)模數(shù)據(jù)轉(zhuǎn)移需耗費(14+12×n+2)個機器周期,數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率為v=n/(14+12×n+2)。在本例程中,執(zhí)行64字節(jié)數(shù)據(jù)轉(zhuǎn)移需耗費784個機器周期,執(zhí)行效率約為0.085 64字節(jié)/機器周期。

  通過以上對比發(fā)現(xiàn),擁用兩組DPTR的8051比傳統(tǒng)8051在大規(guī)模數(shù)據(jù)傳輸時的數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率比為(14+28×n+2)/(14+12×n+2)。由圖1可知,隨著所轉(zhuǎn)移數(shù)據(jù)量的不斷加大,即n值增大時,執(zhí)行效率比也不斷增大,且最后趨近于2.33。


圖1 數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率對比圖

  經(jīng)過以上分析得出:在8051中設置兩組DPTR將會使其在數(shù)據(jù)轉(zhuǎn)移執(zhí)行效率上有很大提高。從資源占用方面考慮,使用擴展DPTR的方式來實現(xiàn)數(shù)據(jù)轉(zhuǎn)移,僅需在8051中添加一個SFR,因此在8051中實現(xiàn)DPTR擴展,可在資源占用很少的條件下,明顯加快數(shù)據(jù)轉(zhuǎn)移速率。這對于在嵌入式系統(tǒng)應用中,進行大規(guī)模數(shù)據(jù)轉(zhuǎn)移意義重大。

2 具體設計實現(xiàn)

  在8051中對DPTR實現(xiàn)擴展,首先需要對DPTR的相關指令進行分析,再確定對其進行擴展會影響到哪些指令操作;并根據(jù)其所涉及的指令,分析相應的模塊,最后針對各模塊分別進行設計修改。

2.1 相關指令分析

  在8051標準指令集的111條指令中,與DPTR有關的指令共有5類,分別為:

 、 程序存儲器查表指令,“MOVC A,@A+DPTR”;
 、 片外RAM傳送指令,“MOVX A, @DPTR”和“MOVX @ DPTR , A”;
 、 寄存器數(shù)據(jù)傳送指令,即可對DPTR進行讀寫操作,在8051中DPTR由DPH(DPTR高8位字節(jié))和DPL(DPTR低8位字節(jié))構成,且DPH和DPL與一般的SFR一樣,都可作為寄存器進行讀寫、壓棧等操作;
 、 程序轉(zhuǎn)移指令,“JMP @A+DPTR”;
 、 運算指令,可分別對DPH和DPL進行運算操作。

  通過對以上與DPTR相關的5類指令分析可知:第③類指令和第⑤類指令是將DPTR作為SFR進行操作的。第①類指令和第④類指令都是DPTR與PC指針進行的數(shù)據(jù)傳送操作;第②類指令是對片外RAM地址寄存器進行的數(shù)據(jù)傳送操作。因此,DPTR的操作具體涉及8051中以下3個模塊:SFR讀寫模塊、PC指針模塊及片外RAM地址模塊,故對DPTR的擴展也在這3個模塊中進行。

2.2 具體模塊設計

  對于DPTR狀態(tài)寄存器可設為dptr_sel,通過對DPTR狀態(tài)標志位dps操作,實現(xiàn)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中數(shù)據(jù)傳送給數(shù)據(jù)暫存寄存器S_REGDATA,再通過對S_REGDATA進行讀操作來實現(xiàn)的,因此可在進行DPTR數(shù)據(jù)暫存前,利用選擇位dps來對DPTR進行選取。具體示意如圖2所示。

  在對DPTR進行寫操作時,實際上是對DPH和DPL進行操作(DPH地址為83H,DPL地址為82H),因此對DPTR進行寫操作時需對DPH和DPL分別進行操作。在MCS8051中對SFR的寫操作,實際上是先將要寫入的數(shù)據(jù)暫存在S_DATA寄存器中,再通過將S_DATA數(shù)據(jù)分別寫入DPH和DPL來實現(xiàn)的。因此可在S_DATA數(shù)據(jù)寫入前對DPTR0和DPTR1進行選擇判斷,來實現(xiàn)對DPTR0和DPTR1的寫操作,即dps=1時,將S_DATA數(shù)據(jù)寫入DPH1和DPL1;dps=0時,將S_DATA數(shù)據(jù)寫入DPH0和DPL0,具體結(jié)構如圖3所示。

[1] [2] [3]  下一頁
  • 上一篇: 電力操作電源智能電池巡檢系統(tǒng)的設計
  • 下一篇: 基于ADuC841的膜片鉗放大器的設計
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1
    太保市| 拜城县| 西平县| 红安县| 开化县| 曲沃县| 江津市| 大田县| 巧家县| 南通市| 芜湖县| 耒阳市| 榆林市| 延津县| 石屏县| 阳泉市| 阿拉善左旗| 鄂尔多斯市| 庆阳市| 阿鲁科尔沁旗| 靖远县| 利辛县| 云阳县| 普安县| 浮山县| 通辽市| 佛坪县| 嘉兴市| 永新县| 惠安县| 宜都市| 大城县| 多伦县| 车致| 葵青区| 维西| 育儿| 邻水| 怀化市| 南昌市| 青阳县|