<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 單片機的單CPU仿真器的設計

單片機的單CPU仿真器的設計

——
作者: 時(shí)間:2007-04-18 來(lái)源: 收藏
原理及系統結構

       工作時(shí),要把程序從PC機下載到的存儲器中。在此先詳細分析51單片的存儲器結構和尋址方法,再分析片外存儲器的擴展,最后給出設計原理并分析系統結構。




圖1 存儲空間分布

       51存儲器結構分析

       8051的存儲器在物理結構上分為程序存儲器空間和數據存儲器空間,共有4個(gè)存儲空間:片內程序存儲器、片外程序存儲器以及片內數據存儲器、片外數據存儲器空間。這種程序存儲和數據存儲分開(kāi)的結構形式被稱(chēng)為哈佛結構。但從用戶(hù)的角度,8051存儲器地址空間可分為3類(lèi):片內、片外統一編址0000H~FFFFH的64KB程序存儲器地址空間(用16位地址);64KB片外數據存儲器地址空間,地址也從0000H~FFFFH(用16位地址)編址;256B片內數據存儲器地址空間(用8位地址)。

       上述4個(gè)存儲空間地址是重疊的,如圖1所示。8051的指令系統設計了不同的數據傳送指令以區別這4個(gè)不同的邏輯空間:CPU訪(fǎng)問(wèn)片內、片外ROM指令用MOVC,訪(fǎng)問(wèn)片外RAM指令用MOVX,訪(fǎng)問(wèn)片內RAM指令用MOV。

       程序存儲器用于存放編好的程序和表格常數。程序通過(guò)16位程序計數器尋址,尋址能力為64KB。這使得指令能在64KB的地址空間內任意跳轉,但不能使程序從程序存儲器空間轉移到數據存儲器空間。

       實(shí)際上,當引腳EA接高電平時(shí),8051的程序計數器PC執行片內ROM中的程序,當指令地址超過(guò)片內ROM地址時(shí),就自動(dòng)轉向片外ROM中去取指令。當引腳EA接低電平(接地)時(shí),8051片內ROM不起作用,CPU只能從片外ROM中取指令,地址可以從0000H開(kāi)始編址。8051從片內程序存儲器和片外程序存儲器取指時(shí)的執行速度相同。

       存儲器外擴

用P0口作地址/數據復用總線(xiàn),用P2口的口線(xiàn)作高位地址線(xiàn),最多可以擴展64KB的存儲器??刂菩盘柧€(xiàn)包括:使用ALE作為地址鎖存的選通信號,以實(shí)現低8位地址的鎖存;以PSEN信號作為擴展程序存儲器的讀選通信號;以EA信號作為內、外程序存儲器的選擇信號;以EA和作為擴展數據存儲器和I/O端口的讀、寫(xiě)選通信號。執行MOVX指令時(shí),RD和WR信號分別自動(dòng)有效。片外數據存儲器RAM的讀和寫(xiě)由8051的RD(P3.7)和WR(P3.6)信號控制,而片外程序存儲器的輸出允許(OE)由讀選通PSEN信號控制。盡管片外數據存儲器和片外程序存儲器共處同一地址空間,但由于控制信號及使用的數據傳送指令不同,故不會(huì )發(fā)生總線(xiàn)沖突。

仿真器原理圖


圖2 原理圖

       仿真器原理與結構

       由于現在以8051為內核的幾乎都帶有內部的FLASH程序存儲器。如本設計中要用到的AT89C51或AT89S51均自帶4KB的FLASH程序存儲器,有的單片機帶有20KB甚至更大容量的程序存儲器。因此在單片機開(kāi)發(fā)中,很少用專(zhuān)門(mén)的程序存儲器芯片來(lái)擴展外部程序存儲器,通常也沒(méi)有必要?;谝陨线@些因素,下面分析本文中的仿真器實(shí)現的原理。

       下載程序時(shí),EA接高電平,單片機執行內部ROM中的程序,把PC機的程序數據下載到片外的RAM62256中;當程序數據下載完后,在保持RAM62256不掉電的情況下,將單片機的EA接低電平,并把單片機復位。這樣單片機就只能從片外存儲器中讀數據。然后利用RD與PSEN相“與”來(lái)選通RAM62256的讀允許片選端OE,使得單片機能夠從RAM62256中讀出程序。這樣就實(shí)現了仿真功能。因為單片機從片內程序存儲器和片外程序存儲器取指時(shí)的執行速度相同,所以這個(gè)設計方案下的仿真器性能比起傳統仿真器毫不遜色。

       總系統電路原理如圖2所示,系統由單片機AT89C51、地址鎖存器74LS373、片外存儲器62256、接口電平轉換芯片MAX232和相關(guān)控制電路組成。

       其中AT89C51就是仿真器的核心部件,晶體振蕩電路和復位電路與普通單片機系統相同。不同的是:EA接一個(gè)單刀雙投開(kāi)關(guān),表面上沒(méi)有擴展ROM。RAM62256的與OE普通單片機系統的接法有所不同,系統中把RD與PSEN相“與”,令其選通RAM62256的讀允許片選端OE,就能促成RAM(注意:整個(gè)過(guò)程中RAM不掉電)由數據空間的角色向程序空間的角色轉換。在執行MOVX指令時(shí),產(chǎn)生RD,WR信號,寫(xiě)入程序信息。在執行RAM中的程序時(shí),由PSEN信號與RD信號選通RAM62256的OE端,實(shí)現從RAM62256中程序的讀入。

       軟件設計

       PC機(上位機)軟件可以參考Windows驅動(dòng)程序開(kāi)發(fā)、串口調試助手等相關(guān)書(shū)籍;也可以利用現成的KEIL C51的Windows集成開(kāi)發(fā)環(huán)境~VISION51和軟件仿真器DSCOPE51完成。

       下位機軟件的主要任務(wù)就是設置串口和接收上位機串口發(fā)送來(lái)的數據,并將數據存入外部“數據”存儲器中。

       單片機主程序如下:

       MOV  SCON,#50H  ;串口方式 1
       MOV  TMOD,#20H  ;T1 方式 1
       MOV  TL1,#0FDH  ;波特率 9600 的常數
       MOV  TH1,#0FDH
       SETB  TR1          ;開(kāi)中斷
       SETB   ET1
       SETB    ES
       SETB    EA

       系統“寫(xiě)”時(shí)用如下指令:

       MOVX  @DPTR,A
       MOVX  @Ri, A

       在中斷服務(wù)子程序中,為區別所接收的信號是聯(lián)絡(luò )信號還是字節數、是數據還是校驗和,需要設立不同的標志位如下:

        FLAG0  BIT  00H ;接收聯(lián)絡(luò )信號標志位
        FLAG1  BIT  01H ;接收字節數標志位

 FLAG2  BIT  02H ;接收數據標志位
        FLAG3  BIT  03H ;接收文件結束標志位     

       程序流程如圖3所示,其中R7為接收到的字節數,接收的數據一定要存入片外RAM從0000H開(kāi)始的單元中。當單片機復位后,把RAM當作程序存儲器時(shí),PC是從0000H開(kāi)始的。 
 單片機接收中斷服務(wù)子程序流程圖



圖3 單片機接收中斷服務(wù)子程序流程圖


       幾點(diǎn)討論

       (1) 系統中不需要單獨的仿真器電源,也不需要晶振電路。

       (2) 下位機的片外存儲器在重復寫(xiě)數時(shí)不用擦除,每次重新下載程序時(shí),總是用覆蓋的方式。新下載的程序都有END為結束,就算新下載的程序比原來(lái)的短,也不會(huì )執行多余的代碼。

       (3) 在實(shí)際中,可以進(jìn)一步改進(jìn)電路,當文件下載完之后,通過(guò)串口備用的信號線(xiàn)產(chǎn)生控制信號來(lái)控制和復位,從而使得全過(guò)程均由上位機控制。

       (4) 由于內部結構的限制,被仿真的產(chǎn)品不能擴展片外的程序存儲器,但由于片外可以擴展64KB的數據存儲器,文中只用了32KB,因此還可以擴展一定的外設。 

       (5) 被仿真產(chǎn)品的E(--)A(--)的接法有一定的限制,不能直接接地或接電源正極,實(shí)際中只要加上一個(gè)合適的限流電阻(如10K?)就可以了。實(shí)際上這種方案可以適用于任何可以外擴存儲器的單片機。

       結束語(yǔ)

       對以上的設計進(jìn)行分析不難發(fā)現,整個(gè)系統各個(gè)功能模塊技術(shù)非常成熟:在硬件方面,各子電路均有現存的電路套用,而且各個(gè)元器件的參數容易確定;在軟件方面,僅涉及到COM口的串行通信程序及上位機的界面程序。在實(shí)際的制作過(guò)程中,系統的元器件數目少且價(jià)格低廉,容易調試,成功率高,性能穩定。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>