在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于8051單片機DPTR擴展設計介紹

電子工程師 ? 來源:陳翠 ? 2019-05-01 15:35 ? 次閱讀

單片機的出現是計算機技術發展史上的一個里程碑,它使計算機從海量數值計算進入到控制領域。在單片機中,以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擴展為多組,但其具體應用意義尚需進一步探討。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638569
  • 8051
    +關注

    關注

    3

    文章

    310

    瀏覽量

    51627
收藏 人收藏

    評論

    相關推薦

    8051單片機

    8051單片機:
    發表于 07-25 17:28 ?0次下載
    <b class='flag-5'>8051</b><b class='flag-5'>單片機</b>

    8051單片機系統擴展與接口技術

    8051單片機系統擴展與接口技術:第一節   8051 單片機系統擴展概述第
    發表于 10-10 18:42 ?87次下載

    8051系列單片機應用系統的PROTEUS仿真設計

    8051系列單片機應用系統的PROTEUS仿真設計:介紹PROTEUS軟件的基礎上,以電扶梯單片機控制系統為實例來介紹如何采用PROTEUS
    發表于 11-14 13:00 ?133次下載

    8051單片機系統擴展

    本節介紹8051單片機系統擴展技術,主要介紹一下2點:1、存儲器的擴展   2、 I/
    發表于 07-09 23:38 ?33次下載

    8051單片機DPTR擴展設計

    摘要 首先對比分析在執行大規模數據轉移時,傳統8051單片機和進行DPTR擴展后的8051單片機
    發表于 03-29 15:15 ?1621次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>單片機</b>中<b class='flag-5'>DPTR</b>的<b class='flag-5'>擴展</b>設計

    單片機教程一:8051單片機引腳功能介紹

    單片機教程一:8051單片機引腳功能介紹 首先我們來連接一下單片機的引腳圖,如果,具體功能在下面都有
    發表于 05-15 22:57 ?1.3w次閱讀
    <b class='flag-5'>單片機</b>教程一:<b class='flag-5'>8051</b><b class='flag-5'>單片機</b>引腳功能<b class='flag-5'>介紹</b>

    C8051F單片機介紹

    概述 C8051F單片機的特點 C8051F單片機外設 適合各種應用的單片機系列 C8051F
    發表于 02-24 16:44 ?305次下載
    C<b class='flag-5'>8051</b>F<b class='flag-5'>單片機</b><b class='flag-5'>介紹</b>

    8051單片機的實踐與應用

    8051單片機的實踐與應用
    發表于 09-22 13:38 ?19次下載
    <b class='flag-5'>8051</b><b class='flag-5'>單片機</b>的實踐與應用

    8051單片機C語言軟件設計8051單片機C語言軟件設計

    8051單片機C語言軟件設計8051單片機C語言軟件設計
    發表于 10-16 11:25 ?92次下載
    <b class='flag-5'>8051</b><b class='flag-5'>單片機</b>C語言軟件設計<b class='flag-5'>8051</b><b class='flag-5'>單片機</b>C語言軟件設計

    8051單片機引腳圖及引腳功能介紹

    下面是8051單片機引腳圖及引腳功能介紹: 《單片機引腳圖》 40個引腳按引腳功能大致可分為4個種類:電源、時鐘、控制和I/O引腳。
    的頭像 發表于 07-15 10:37 ?7.1w次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>單片機</b>引腳圖及引腳功能<b class='flag-5'>介紹</b>

    單片機DPTR的使用方法

    DPTR是某些單片機中一個功能比較特殊的寄存器,是一個16位的特殊功能寄存器, 其高位字節寄存器用DPH表示,低位字節寄存器用DPL表示,DPTR既可以作為一個16位的寄存器來處理,也可以作為兩個獨立的8位寄存器來使用
    發表于 12-27 15:27 ?1.2w次閱讀
    <b class='flag-5'>單片機</b>雙<b class='flag-5'>DPTR</b>的使用方法

    8051系列單片機的原理和結構介紹

    單片機是一種控制芯片,一個微型的計算機,而加上晶振,存儲器,地址鎖存器,邏輯門,七段譯碼器(顯示器),按鈕(類似鍵盤),擴展芯片,接口等那是單片機系統,以下是8051系列
    的頭像 發表于 09-06 10:53 ?1.4w次閱讀
    <b class='flag-5'>8051</b>系列<b class='flag-5'>單片機</b>的原理和結構<b class='flag-5'>介紹</b>

    8051單片機行業應用

    介紹8051單片機相關行業的應用。
    發表于 03-30 10:01 ?15次下載
    <b class='flag-5'>8051</b><b class='flag-5'>單片機</b>行業應用

    8051單片機和PIC單片機的區別是什么

    8051單片機和PIC單片機都屬于單片機的一種,8051單片機和PIC
    的頭像 發表于 07-07 11:31 ?2327次閱讀

    8051單片機與ARM單片機的區別是什么

    單片機屬于集成電路(IC),相當小獨立的計算機,它被設計來執行嵌入式系統的特定任務。8051內核和ARM內核都屬于單片機成員,8051單片機
    的頭像 發表于 07-07 11:32 ?3257次閱讀
    主站蜘蛛池模板: 九九午夜 | 在线aa | 久久婷婷成人综合色 | 清纯唯美亚洲综合欧美色 | 亚洲精品私拍国产福利在线 | 最色网站 | 亚洲综合五月天欧美 | 午夜操一操| 好爽好紧好大的免费视频国产 | 国产人成精品免费视频 | 久久 在线播放 | 日本三级免费看 | 性欧美大战久久久久久久野外 | 国产精品福利久久 | 天天做夜夜爱 | 色综合亚洲天天综合网站 | 天天干网 | 全黄h全肉边做边吃奶在线观看 | 国产手机免费视频 | 日本一区二区三区四区视频 | 久久综合狠狠综合久久综合88 | 久久香蕉国产线看观看亚洲片 | 性久久久久久久 | 国产日韩欧美一区二区 | 久久青青草原精品老司机 | 国外精品视频在线观看免费 | 日本黄色免费大片 | 国产小片 | 亚洲婷婷综合中文字幕第一页 | 欧美一级片观看 | 在线最新版www资源网 | 亚洲一级免费视频 | 正在播放91大神调教偷偷 | 特级黄毛片 | 一级一片免费视频播放 | 91综合在线视频 | 国产乱人视频免费播放 | 99久久婷婷国产综合精品电影 | 黄色毛片大全 | 欧美3d成人动画在线 | 特级黄aaaaaaaaa毛片 |