《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 由MOVX指令深入分析51單片機總線時序及擴展
由MOVX指令深入分析51單片機總線時序及擴展
來源:微型機與應用2013年第20期
周姝穎, 林凡強, 何凌霄, 富 饒
(成都理工大學 信息科學與技術學院,四川 成都610059)
摘要: 分析了MCS51單片機訪問外部存儲器指令MOVX的執行過程,介紹了51系列單片機使用的四要素;分析了51單片機在外部擴展、總線時序、地址譯碼方法重點以及對超過64 KB地址空間訪問的方法。并以實驗室研制的MCS51單片機實驗儀為例,分析了外部空間開展的重要性、方法和原理,給出了單片機系統擴展框圖和地址譯碼表。
Abstract:
Key words :

摘  要: 分析了MCS單片機" title="51單片機" target="_blank">51單片機訪問外部存儲器指令MOVX的執行過程,介紹了51系列單片機使用的四要素;分析了51單片機在外部擴展、總線時序、地址譯碼方法重點以及對超過64 KB地址空間訪問的方法。并以實驗室研制的MCS51單片機實驗儀為例,分析了外部空間開展的重要性、方法和原理,給出了單片機系統擴展框圖和地址譯碼表。
關鍵詞:單片機; 總線; 時序; 存儲器空間; 譯碼

    AT89C51單片機是ATMEL公司設計生產的與MCS51內核兼容的51系列單片機之一,該系列單片機以其優越的性能和成熟的技術在控制和自動化應用領域占有著較大的市場;除此以外,51單片機有著計算機系統中經典的總線結構,即:數據總線、地址總線和控制總線。
    在實際應用中,單片機的4個端口中,P0口通常是作為地址/數據總線復用;P2口作為高8位地址總線,高8位地址線在有多余I/O的情況下,配合外部的組合邏輯電路一起構成外部總線譯碼使用;P3口通常作為第二功能使用,則提供給用戶使用的I/O僅僅是P1口。在多數應用場合下是不能滿足要求的,因此51單片機系統就或多或少地需要進行系統擴展。另外,由于其內部的RAM只有128 B,在使用C語言進行程序設計時顯得比較不足,必要時需進行外部RAM擴展,方法與擴展外部I/O相同。實際應用中,使用總線方法可以較容易地實現51單片機外部的I/O、RAM、LCD、ADC、DAC等等外設的操作,以彌補51單片機片內外設的不足。
1 MCS51單片機系統的四要素
1.1 51單片機系統的啟動

    MCS51單片機上電正常工作,需具備以下四點:
    (1)電源。AT89S51系列單片機的第40引腳為VCC,外加電壓5 V工作電壓,另外,單片機的第20引腳是GND,須連接到系統的地。
    (2)復位電路。任何處理器都需要在上電時進行自身的復位,51單片機也不例外,上電復位電路是較為簡單可靠的電路之一,不可缺少。復位電路如圖1所示,該圖為帶上電復位及手動復位兩種結合,二極管D1在系統瞬間掉電能幫助系統快速放電,使系統重新復位,以提高系統的可靠性。

    (3)振蕩電路。如圖2所示,51單片機的第18腳和第19腳為兩個外接振蕩的引腳,是內部振蕩方式的典型電路, 外接的33 pF電容可以提高振蕩的穩定性。

    (4)EA。AT89S51單片機內部有4 KB的程序存儲器,不需要外部的ROM空間,如果不夠可以選擇AT89S52或其他內部存儲器更大的單片機,所以接高電平,即:不使用外部ROM,只使用內部的存儲器。
1.2 MCS51單片機系統的存儲器結構
    MCS51單片機的存儲器分為片內和片外兩個部分,即:內部的ROM/RAM和外部的ROM/RAM,編寫程序時必須清楚每一個存儲單元的用途和功能,這樣才能更好地進行系統存儲器資源的分配。51單片機的另一個特點是外部的RAM空間和I/O空間共用外部的64 KB空間,因為外部總線的地址線為16 bit,所以能夠訪問的最大地址空間為64 KB。51單片機系統在進行外部擴展時,所有外設的地址都分布在這64 KB的地址范圍內,對于RAM來說,地址是連續的;而對于LCD、ADC等等部件,地址是不連續的。
1.3 51單片機的中斷系統
    AT89S51單片機為用戶提供了可屏蔽中斷源有5個,分別是:外部中斷0(入口地址為:0003H)、外部中斷1(入口地址為:000BH)、定時器0(入口地址為:0013H)、定時器1(入口地址為:001BH)和串行中斷(入口地址為:0023H);不可屏蔽中斷為復位(入口地址為:0000H)。51系列單片機的其他型號所提供的中斷個數不盡相同,所有的單片機都包括上述這6個最基本的中斷源,不同公司生產的51內核單片機中斷源上有略微的區別。
1.4 51單片機的總線結構
    由于51單片機真正可以作為雙向I/O口應用的只有P1口,假設系統需要擴展外部的鍵盤,I/O就所剩無幾了。因此,MCS51單片機應用系統設計都不可避免地需要進行系統的擴展,而I/O的擴展則是與系統總線緊密結合的。由于MCS51單片機的外部RAM和I/O口是統一編址的,因此,可以把單片機外部64 KB RAM空間的一部分作為擴展外圍I/O口的地址空間。這樣,單片機系統就可以把額外的RAM空間用來進行I/O空間的擴展,使用總線方式對外設進行訪問[1]。
    本文重點之一是介紹采用具有三態緩沖的74HC244芯片和輸出帶鎖存的74HC573芯片來擴展一個4×4的小鍵盤,緩沖器和鎖存器分別占用外部I/O空間中的兩個地址。而無論是訪問外部的RAM空間還是I/O空間,在進行匯編語言編程時都是通過MOVX指令來實現讀寫的。在使用C語音進行單片機程序設計時,雖然語言改變了,但是C語言程序反匯編后,訪問外部仍然使用的是MOVX指令。因此,分析過程及使用中,都是以匯編語言為例進行擴展設計的。
2 MOVX指令的執行過程
    MOVX指令是51單片機訪問片外外設的唯一指令,與外部RAM或I/O空間進行數據的讀寫或者ADC和DAC等都需要使用這條指令。MCS51單片機外部RAM的地址空間為64 KB,地址總線為16 bit,訪問外設可執行4條匯編指令:(1)MOVX A,@DPTR;(2)MOVX @DPTR, A;(3)MOVX A, @RI;    (4)MOVX @RI, A。其中DPTR為16 bit地址寄存器,地址高8 bit存于DPH,地址低8 bit存于DPL,Ri(i=0,1)是8 bit寄存器,作為地址指針時僅存低8 bit地址[2]。
    MCS51執行上述指令時分為兩個階段:首先,是從程序存儲器中取出指令代碼,并進行譯碼;然后,執行對外設數據的讀寫操作。在這兩個階段中,P0口在指令執行過程中是分時復用口,指令前半個周期,低8 bit地址由地址鎖存允許信號ALE控制一個8 bit的鎖存器輸出,接著輸出8 bit數據至外部數據總線,P2口在此過程中一直輸出高8 bit地址。
    由上所述,假設使用R0和R1對外設的進行間接尋址方式的訪問,那么可看作是一種頁面尋址,將外部的64 KB空間分成了256頁,每一頁有256 B地址。寄存器P2的當前值決定了當前的頁地址。MCS51單片機在復位時,P2端口寄存器數值為FFH,若程序運行中沒有改變P2中的值,則R0和R1只能對FF00H~FFFFH范圍的外部的間接尋址,即對第255個頁面進行訪問。往外部空間寫1 B時序圖如圖3所示。

    因此,使用DPTR作為數據指針或者是RI,都可以實現對外部64 KB空間的訪問。而指令都是使用MOVX,可見MCS51單片機系統中,MOVX指令有著非常重要的作用。
3 時序分析及系統擴展
    MCS51單片機的外部總線時序擴展主要包括外部的譯碼電路、鎖存電路等組合邏輯電路,形成整個系統的外部總線,即:數據總線、地址總線、控制總線。
    譯碼電路采用常用的74系列3/8線譯碼器74LS138,該芯片的A、B、C分別接地址的最高3位,即A13、A14、A15,譯碼電路如圖4所示;138的使能端E3接高電平,E1和E2接的是EN_138,該信號是由單片機系統的讀寫信號經過組合得來的,當系統對外部的總線進行讀寫時,讀/寫信號其中一個為低電平,使得EN_138控制信號輸出為一個低電平脈沖信號,此時,3/8線譯碼器的輸出Y0~Y7其中一個也會輸出一個低電平脈沖,用此脈沖就可以有效地對外部設備進行片選。邏輯電路如圖5所示。

    通過這樣的組合后就可以在總線上數據有效的時間內,通過74LS138的Y0~Y7控制外設的片選,實現有效的數據讀寫。尤其是在擴展外部I/O口使用的74系列的邏輯電路芯片時,這個方法尤為重要,因為這類芯片沒有外部的讀/寫信號,只能通過單片機外部的組合邏輯電路輸出一個讀/寫信號寬度的脈沖用以控制此類I/O芯片。若外設信號控制信號為低電平脈沖,則剛好與3/8線譯碼器的輸出匹配,此時直接相連即可;若外設控制信號需要的是高脈沖信號,則必須在3/8線譯碼器的輸出外面再加一級反相器電路,常用的反相器為74LS04。
    以寫數據往外設為例,得到的時序流程如圖6所示。讀數據的時序與寫數據一致,只是將寫信號換成讀信號[2]。

 

 

4 I/O擴展實例
4.1 行列鍵盤擴展

    如前所述,51單片機供用戶使用的I/O只有P1端口的8個引腳,遠不能滿足系統的需求,這樣就必須通過總線的方法進行外部I/O擴展。在這里需要注意的是,51單片機系統外部I/O空間是和外部的RAM空間共用外部64 KB空間的。使用74LS573和74LS244分別進行行列的擴展,其中573鎖存行信號,244讀回數據,擴展了端口,實現了4×4的矩陣式行列掃描鍵盤,如圖7所示。在此程序略,主要介紹擴展的方法[3]。

    圖8所示為4×4矩陣鍵盤連接圖。

4.2 大于64 KB空間的擴展
 MCS51單片機是8位的微控制器,外部地址總線共16 bit地址,能訪問的空間共為64 KB,但是如果系統中所有的外設加起來需要的地址空間超過64 KB時(如128 KB、256 KB的RAM或者需要更多的I/O空間等情況出現)就需要使用P1口或者是P3口不使用的I/O口進行線選法譯碼或者譯碼法進行額外的擴展來實現。
    這種情況在單片機系統中經常會遇到,本文中介紹一種基于分頁原理的擴展方法。51單片機系統雖然只有16條地址總線,在系統需要較大的RAM或I/O空間時,可以將系統中空余的I/O口作為額外的外部地址使用,例如:使用P1.0時進行線選法譯碼時,就可以擴展外部的128 KB空間。當P1.0為低電平時,選擇第1個64 KB空間;當P1.0為高電平時, 選擇第2個64 KB空間。
    以此類推,假設有更多的空間需求時,還可使用專用譯碼器進行譯碼,來進行更多的選擇。如此看來,就像其他處理器系統中類似地有著多余16條地址線一樣。因此,在MCS51單片機系統中,實現大于64 KB空間的使用是很容易實現的,51單片機系統是使用非常成熟的系統了,而且,這樣的使用可以給設計時提供了更多的選擇,最大程度地降低設計成本和系統開發的難度,以及開發周期等[4]。
4.3 單片機實驗儀實例開發
    在單片機實驗儀上,使用了總線方式進行擴展的模塊單元還有LCD顯示模塊、AD/DA模塊、流水燈模塊等部分。
    表1給出了實驗儀上所有的通過總線方式進行外部擴展的單元及其地址和片選信號線,其中,各個模塊的訪問地址實際上是一個地址的范圍,這里只給出一個。沒有使用到的地址線默認為0。

    在使用C語言進行程序設計時,訪問外部的總線也是非常方便的,只需要在程序中包含頭文件absacc.h。該文件定義了訪問外部空間的方法,如進行LCD的設計時,定義下面條語句:
     #define   com_lcd   XBYTE[0xe001]        //命令地址
     #define   data_lcd   XBYTE[0xe000]        //數據地址
  #define   read_lcd   XBYTE[0xe003]        //讀狀態地址
  之后,通過對定義的3個地址變量的訪問,即可實現對外設的訪問,非常方便。因此,在單片機適應的場合,對外設較多的情況之下, 只要在速度等要求不高的情況下,采用51單片機也是可以實現高效的控制系統[5]。
    通過上述分析及實際應用設計,可以看出MOVX指令在MCS51單片機系統中的重要地位,尤其是進行系統擴展時,其地位顯得尤為重要。雖然,現在控制系統多采用了C語音進行設計,但是萬變不離其宗,了解和掌握單片機系統底層的指令系統及其應用方法是非常重要的。只要使用外部總線擴展,本文提到的邏輯擴展方法都是非常可行的,而這些都是建立在對MOVX指令的使用和研究上。因此可以說,掌握了MOVX指令的使用,就掌握了MCS51單片機系統總線及時序擴展的方法。
參考文獻
[1] 何立民.單片機應用文集[M].北京:北京航空航天大學出版社,1992.
[2] 何立民.單片機高級教程——應用與設計[M].北京:北京航空航天大學出版社,2000.
[3] 張毅坤.單片微型計算機原理及應用[M].西安:西安電子科技大學出版社,2002.
[4] 胡漢才.單片機原理及其接口技術(第2版)[M].北京:清華大學出版,2004.
[5] 譚浩強. C程序設計[M].北京:清華大學出版社,1996.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美日韩理论| 国产一区二区剧情av在线| 久久精品国产亚洲5555| 在线亚洲免费| 一区二区三区四区五区在线| 亚洲日本欧美在线| 亚洲国产精品国自产拍av秋霞| 欧美一区二区视频免费观看| 午夜精品久久久久久久男人的天堂 | 老司机精品视频网站| 久久精品亚洲热| 久久国产精品第一页| 欧美在线观看天堂一区二区三区| 亚洲欧美一级二级三级| 欧美亚洲免费电影| 欧美在线观看日本一区| 久久精品国产清高在天天线| 久久久999国产| 亚洲欧洲三级| 免费h精品视频在线播放| 久久大逼视频| 久久久久一区| 久久综合国产精品台湾中文娱乐网 | 亚洲一区二区三区四区五区黄| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲精品中文字幕女同| 亚洲视频二区| 欧美一区二区视频观看视频| 久久久精品tv| 欧美.日韩.国产.一区.二区| 欧美精品日韩www.p站| 欧美三级第一页| 国产精品视频网站| 国产专区综合网| 亚洲二区视频在线| 亚洲精品欧美极品| 亚洲午夜激情网站| 久久精品二区三区| 亚洲日本乱码在线观看| 亚洲一区亚洲二区| 久久精品日产第一区二区| 免费成人黄色片| 欧美日精品一区视频| 国产视频精品xxxx| 在线免费不卡视频| 一本在线高清不卡dvd| 亚洲视频一区在线观看| 欧美在线一二三| 日韩视频国产视频| 欧美亚洲综合久久| 免费观看在线综合| 欧美私人啪啪vps| 狠狠色狠狠色综合| 99在线热播精品免费99热| 午夜精品久久久久久久久久久久 | 国产精品毛片| 一区二区在线看| 在线一区二区三区做爰视频网站 | 欧美成人亚洲成人| 国产精品mv在线观看| 国际精品欧美精品| 一区二区免费在线视频| 久久精品国产99国产精品澳门| 日韩视频在线一区| 久久九九免费| 欧美午夜精品理论片a级按摩| 狠狠综合久久av一区二区老牛| 99精品国产热久久91蜜凸| 欧美中文日韩| 亚洲欧美日韩成人高清在线一区| 美女视频黄免费的久久| 国产精品久在线观看| 亚洲激情成人| 欧美专区亚洲专区| 亚洲伊人网站| 欧美国产日本| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲视频1区2区| 亚洲国产精品高清久久久| 午夜日韩视频| 欧美精品亚洲一区二区在线播放| 国产偷国产偷精品高清尤物| 99这里有精品| 日韩午夜在线| 久久综合导航| 国产人久久人人人人爽| 日韩午夜视频在线观看| 亚洲国产成人精品久久| 午夜久久资源| 欧美三日本三级三级在线播放| 伊人久久久大香线蕉综合直播| 亚洲免费影视| 亚洲一区二区高清| 欧美久久久久久蜜桃| 精品成人国产在线观看男人呻吟| 亚洲欧美日韩另类精品一区二区三区| 一区二区精品在线观看| 欧美a级一区| 激情丁香综合| 欧美亚洲一区二区三区| 亚洲自拍偷拍一区| 欧美日韩性生活视频| 亚洲日本欧美| 日韩一区二区高清| 欧美国产一区二区三区激情无套| 永久91嫩草亚洲精品人人| 亚洲第一色在线| 久久久亚洲综合| 国产亚洲综合精品| 午夜宅男欧美| 久久精品中文字幕免费mv| 国产精品免费一区豆花| 中文网丁香综合网| 亚洲一区免费网站| 国产精品成人一区二区三区夜夜夜| 91久久在线| 一本色道久久综合亚洲精品不| 欧美精品激情在线| 亚洲欧洲日本mm| 亚洲最新视频在线播放| 欧美日韩国产成人在线91| 亚洲精品乱码久久久久久| 99热免费精品在线观看| 欧美日韩国产一区精品一区| 亚洲精品久久久久| 亚洲图片欧美午夜| 国产精品久久久久一区二区三区| 在线亚洲观看| 欧美自拍偷拍| 一区二区三区自拍| 亚洲精品一区在线| 欧美精品一区三区| 99成人免费视频| 亚洲免费在线| 国产日韩欧美在线观看| 亚洲高清不卡在线| 欧美极品影院| 一本色道久久综合亚洲精品小说| 亚洲一区在线视频| 国产区精品在线观看| 亚洲电影在线免费观看| 欧美mv日韩mv国产网站| 日韩亚洲综合在线| 亚洲欧美日韩直播| 国产一区二区精品久久91| 久久精品一区二区三区不卡| 你懂的一区二区| 日韩视频免费在线| 午夜精品在线| 激情久久综合| 在线亚洲+欧美+日本专区| 国产精品一二一区| 亚洲电影免费在线| 欧美日韩综合视频网址| 欧美亚洲日本网站| 欧美激情第10页| 亚洲一区中文字幕在线观看| 久久男女视频| 亚洲美女黄网| 欧美在线一级视频| 亚洲国产日韩欧美在线图片| 亚洲一区免费| 韩日欧美一区| 国产精品99久久久久久www| 国产农村妇女精品一区二区| 亚洲精品国偷自产在线99热| 国产精品美女在线观看| 亚洲国产99| 欧美视频二区36p| 亚洲大胆美女视频| 欧美色精品在线视频| 久久9热精品视频| 欧美视频在线观看一区| 久久国产免费| 国产精品久久久久婷婷| 亚洲精品一品区二品区三品区| 国产精品久久久久久久久免费| 亚洲福利视频二区| 国产精品久久久| 亚洲毛片在线看| 韩国三级在线一区| 亚洲欧美一区二区三区极速播放 | 久久精品亚洲精品国产欧美kt∨| 欧美日韩一区二区精品| 久久国产精品一区二区三区| 欧美视频专区一二在线观看| 亚洲高清资源| 国产欧美日韩视频| 99精品久久| 尹人成人综合网| 欧美一区二区三区四区在线观看地址 | 国产欧美在线观看| av成人免费| 伊人成人开心激情综合网| 亚洲免费在线观看| 亚洲伦理自拍| 欧美韩日一区| 亚洲国产经典视频| 国产午夜精品视频| 亚洲欧洲av一区二区三区久久|