你的位置:首頁(yè) > 測(cè)試測(cè)量 > 正文
由MOVX指令深入分析51單片機(jī)總線時(shí)序及擴(kuò)展
發(fā)布時(shí)間:2021-02-20 責(zé)任編輯:wenwei
【導(dǎo)讀】分析了MCS單片機(jī)" title="51單片機(jī)" target="_blank">51單片機(jī)訪問(wèn)外部存儲(chǔ)器指令MOVX的執(zhí)行過(guò)程,介紹了51系列單片機(jī)使用的四要素;分析了51單片機(jī)在外部擴(kuò)展、總線時(shí)序、地址譯碼方法重點(diǎn)以及對(duì)超過(guò)64 KB地址空間訪問(wèn)的方法。并以實(shí)驗(yàn)室研制的MCS51單片機(jī)實(shí)驗(yàn)儀為例,分析了外部空間開展的重要性、方法和原理,給出了單片機(jī)系統(tǒng)擴(kuò)展框圖和地址譯碼表。
AT89C51單片機(jī)是ATMEL公司設(shè)計(jì)生產(chǎn)的與MCS51內(nèi)核兼容的51系列單片機(jī)之一,該系列單片機(jī)以其優(yōu)越的性能和成熟的技術(shù)在控制和自動(dòng)化應(yīng)用領(lǐng)域占有著較大的市場(chǎng);除此以外,51單片機(jī)有著計(jì)算機(jī)系統(tǒng)中經(jīng)典的總線結(jié)構(gòu),即:數(shù)據(jù)總線、地址總線和控制總線。
在實(shí)際應(yīng)用中,單片機(jī)的4個(gè)端口中,P0口通常是作為地址/數(shù)據(jù)總線復(fù)用;P2口作為高8位地址總線,高8位地址線在有多余I/O的情況下,配合外部的組合邏輯電路一起構(gòu)成外部總線譯碼使用;P3口通常作為第二功能使用,則提供給用戶使用的I/O僅僅是P1口。在多數(shù)應(yīng)用場(chǎng)合下是不能滿足要求的,因此51單片機(jī)系統(tǒng)就或多或少地需要進(jìn)行系統(tǒng)擴(kuò)展。另外,由于其內(nèi)部的RAM只有128 B,在使用C語(yǔ)言進(jìn)行程序設(shè)計(jì)時(shí)顯得比較不足,必要時(shí)需進(jìn)行外部RAM擴(kuò)展,方法與擴(kuò)展外部I/O相同。實(shí)際應(yīng)用中,使用總線方法可以較容易地實(shí)現(xiàn)51單片機(jī)外部的I/O、RAM、LCD、ADC、DAC等等外設(shè)的操作,以彌補(bǔ)51單片機(jī)片內(nèi)外設(shè)的不足。
1 MCS51單片機(jī)系統(tǒng)的四要素
1.1 51單片機(jī)系統(tǒng)的啟動(dòng)
MCS51單片機(jī)上電正常工作,需具備以下四點(diǎn):
(1)電源。AT89S51系列單片機(jī)的第40引腳為VCC,外加電壓5 V工作電壓,另外,單片機(jī)的第20引腳是GND,須連接到系統(tǒng)的地。
(2)復(fù)位電路。任何處理器都需要在上電時(shí)進(jìn)行自身的復(fù)位,51單片機(jī)也不例外,上電復(fù)位電路是較為簡(jiǎn)單可靠的電路之一,不可缺少。復(fù)位電路如圖1所示,該圖為帶上電復(fù)位及手動(dòng)復(fù)位兩種結(jié)合,二極管D1在系統(tǒng)瞬間掉電能幫助系統(tǒng)快速放電,使系統(tǒng)重新復(fù)位,以提高系統(tǒng)的可靠性。
(3)振蕩電路。如圖2所示,51單片機(jī)的第18腳和第19腳為兩個(gè)外接振蕩的引腳,是內(nèi)部振蕩方式的典型電路, 外接的33 pF電容可以提高振蕩的穩(wěn)定性。
(4)EA。AT89S51單片機(jī)內(nèi)部有4 KB的程序存儲(chǔ)器,不需要外部的ROM空間,如果不夠可以選擇AT89S52或其他內(nèi)部存儲(chǔ)器更大的單片機(jī),所以接高電平,即:不使用外部ROM,只使用內(nèi)部的存儲(chǔ)器。
1.2 MCS51單片機(jī)系統(tǒng)的存儲(chǔ)器結(jié)構(gòu)
MCS51單片機(jī)的存儲(chǔ)器分為片內(nèi)和片外兩個(gè)部分,即:內(nèi)部的ROM/RAM和外部的ROM/RAM,編寫程序時(shí)必須清楚每一個(gè)存儲(chǔ)單元的用途和功能,這樣才能更好地進(jìn)行系統(tǒng)存儲(chǔ)器資源的分配。51單片機(jī)的另一個(gè)特點(diǎn)是外部的RAM空間和I/O空間共用外部的64 KB空間,因?yàn)橥獠靠偩€的地址線為16 bit,所以能夠訪問(wèn)的最大地址空間為64 KB。51單片機(jī)系統(tǒng)在進(jìn)行外部擴(kuò)展時(shí),所有外設(shè)的地址都分布在這64 KB的地址范圍內(nèi),對(duì)于RAM來(lái)說(shuō),地址是連續(xù)的;而對(duì)于LCD、ADC等等部件,地址是不連續(xù)的。
1.3 51單片機(jī)的中斷系統(tǒng)
AT89S51單片機(jī)為用戶提供了可屏蔽中斷源有5個(gè),分別是:外部中斷0(入口地址為:0003H)、外部中斷1(入口地址為:000BH)、定時(shí)器0(入口地址為:0013H)、定時(shí)器1(入口地址為:001BH)和串行中斷(入口地址為:0023H);不可屏蔽中斷為復(fù)位(入口地址為:0000H)。51系列單片機(jī)的其他型號(hào)所提供的中斷個(gè)數(shù)不盡相同,所有的單片機(jī)都包括上述這6個(gè)最基本的中斷源,不同公司生產(chǎn)的51內(nèi)核單片機(jī)中斷源上有略微的區(qū)別。
1.4 51單片機(jī)的總線結(jié)構(gòu)
由于51單片機(jī)真正可以作為雙向I/O口應(yīng)用的只有P1口,假設(shè)系統(tǒng)需要擴(kuò)展外部的鍵盤,I/O就所剩無(wú)幾了。因此,MCS51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)都不可避免地需要進(jìn)行系統(tǒng)的擴(kuò)展,而I/O的擴(kuò)展則是與系統(tǒng)總線緊密結(jié)合的。由于MCS51單片機(jī)的外部RAM和I/O口是統(tǒng)一編址的,因此,可以把單片機(jī)外部64 KB RAM空間的一部分作為擴(kuò)展外圍I/O口的地址空間。這樣,單片機(jī)系統(tǒng)就可以把額外的RAM空間用來(lái)進(jìn)行I/O空間的擴(kuò)展,使用總線方式對(duì)外設(shè)進(jìn)行訪問(wèn)[1]。
本文重點(diǎn)之一是介紹采用具有三態(tài)緩沖的74HC244芯片和輸出帶鎖存的74HC573芯片來(lái)擴(kuò)展一個(gè)4×4的小鍵盤,緩沖器和鎖存器分別占用外部I/O空間中的兩個(gè)地址。而無(wú)論是訪問(wèn)外部的RAM空間還是I/O空間,在進(jìn)行匯編語(yǔ)言編程時(shí)都是通過(guò)MOVX指令來(lái)實(shí)現(xiàn)讀寫的。在使用C語(yǔ)音進(jìn)行單片機(jī)程序設(shè)計(jì)時(shí),雖然語(yǔ)言改變了,但是C語(yǔ)言程序反匯編后,訪問(wèn)外部仍然使用的是MOVX指令。因此,分析過(guò)程及使用中,都是以匯編語(yǔ)言為例進(jìn)行擴(kuò)展設(shè)計(jì)的。
2 MOVX指令的執(zhí)行過(guò)程
MOVX指令是51單片機(jī)訪問(wèn)片外外設(shè)的唯一指令,與外部RAM或I/O空間進(jìn)行數(shù)據(jù)的讀寫或者ADC和DAC等都需要使用這條指令。MCS51單片機(jī)外部RAM的地址空間為64 KB,地址總線為16 bit,訪問(wèn)外設(shè)可執(zhí)行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寄存器,作為地址指針時(shí)僅存低8 bit地址。
MCS51執(zhí)行上述指令時(shí)分為兩個(gè)階段:首先,是從程序存儲(chǔ)器中取出指令代碼,并進(jìn)行譯碼;然后,執(zhí)行對(duì)外設(shè)數(shù)據(jù)的讀寫操作。在這兩個(gè)階段中,P0口在指令執(zhí)行過(guò)程中是分時(shí)復(fù)用口,指令前半個(gè)周期,低8 bit地址由地址鎖存允許信號(hào)ALE控制一個(gè)8 bit的鎖存器輸出,接著輸出8 bit數(shù)據(jù)至外部數(shù)據(jù)總線,P2口在此過(guò)程中一直輸出高8 bit地址。
由上所述,假設(shè)使用R0和R1對(duì)外設(shè)的進(jìn)行間接尋址方式的訪問(wèn),那么可看作是一種頁(yè)面尋址,將外部的64 KB空間分成了256頁(yè),每一頁(yè)有256 B地址。寄存器P2的當(dāng)前值決定了當(dāng)前的頁(yè)地址。MCS51單片機(jī)在復(fù)位時(shí),P2端口寄存器數(shù)值為FFH,若程序運(yùn)行中沒(méi)有改變P2中的值,則R0和R1只能對(duì)FF00H~FFFFH范圍的外部的間接尋址,即對(duì)第255個(gè)頁(yè)面進(jìn)行訪問(wèn)。往外部空間寫1 B時(shí)序圖如圖3所示。
因此,使用DPTR作為數(shù)據(jù)指針或者是RI,都可以實(shí)現(xiàn)對(duì)外部64 KB空間的訪問(wèn)。而指令都是使用MOVX,可見MCS51單片機(jī)系統(tǒng)中,MOVX指令有著非常重要的作用。
3 時(shí)序分析及系統(tǒng)擴(kuò)展
MCS51單片機(jī)的外部總線時(shí)序擴(kuò)展主要包括外部的譯碼電路、鎖存電路等組合邏輯電路,形成整個(gè)系統(tǒng)的外部總線,即:數(shù)據(jù)總線、地址總線、控制總線。
譯碼電路采用常用的74系列3/8線譯碼器74LS138,該芯片的A、B、C分別接地址的最高3位,即A13、A14、A15,譯碼電路如圖4所示;138的使能端E3接高電平,E1和E2接的是EN_138,該信號(hào)是由單片機(jī)系統(tǒng)的讀寫信號(hào)經(jīng)過(guò)組合得來(lái)的,當(dāng)系統(tǒng)對(duì)外部的總線進(jìn)行讀寫時(shí),讀/寫信號(hào)其中一個(gè)為低電平,使得EN_138控制信號(hào)輸出為一個(gè)低電平脈沖信號(hào),此時(shí),3/8線譯碼器的輸出Y0~Y7其中一個(gè)也會(huì)輸出一個(gè)低電平脈沖,用此脈沖就可以有效地對(duì)外部設(shè)備進(jìn)行片選。邏輯電路如圖5所示。
通過(guò)這樣的組合后就可以在總線上數(shù)據(jù)有效的時(shí)間內(nèi),通過(guò)74LS138的Y0~Y7控制外設(shè)的片選,實(shí)現(xiàn)有效的數(shù)據(jù)讀寫。尤其是在擴(kuò)展外部I/O口使用的74系列的邏輯電路芯片時(shí),這個(gè)方法尤為重要,因?yàn)檫@類芯片沒(méi)有外部的讀/寫信號(hào),只能通過(guò)單片機(jī)外部的組合邏輯電路輸出一個(gè)讀/寫信號(hào)寬度的脈沖用以控制此類I/O芯片。若外設(shè)信號(hào)控制信號(hào)為低電平脈沖,則剛好與3/8線譯碼器的輸出匹配,此時(shí)直接相連即可;若外設(shè)控制信號(hào)需要的是高脈沖信號(hào),則必須在3/8線譯碼器的輸出外面再加一級(jí)反相器電路,常用的反相器為74LS04。
以寫數(shù)據(jù)往外設(shè)為例,得到的時(shí)序流程如圖6所示。讀數(shù)據(jù)的時(shí)序與寫數(shù)據(jù)一致,只是將寫信號(hào)換成讀信號(hào)。
4 I/O擴(kuò)展實(shí)例
4.1 行列鍵盤擴(kuò)展
如前所述,51單片機(jī)供用戶使用的I/O只有P1端口的8個(gè)引腳,遠(yuǎn)不能滿足系統(tǒng)的需求,這樣就必須通過(guò)總線的方法進(jìn)行外部I/O擴(kuò)展。在這里需要注意的是,51單片機(jī)系統(tǒng)外部I/O空間是和外部的RAM空間共用外部64 KB空間的。使用74LS573和74LS244分別進(jìn)行行列的擴(kuò)展,其中573鎖存行信號(hào),244讀回?cái)?shù)據(jù),擴(kuò)展了端口,實(shí)現(xiàn)了4×4的矩陣式行列掃描鍵盤,如圖7所示。在此程序略,主要介紹擴(kuò)展的方法。
圖8所示為4×4矩陣鍵盤連接圖。
4.2 大于64 KB空間的擴(kuò)展
MCS51單片機(jī)是8位的微控制器,外部地址總線共16 bit地址,能訪問(wèn)的空間共為64 KB,但是如果系統(tǒng)中所有的外設(shè)加起來(lái)需要的地址空間超過(guò)64 KB時(shí)(如128 KB、256 KB的RAM或者需要更多的I/O空間等情況出現(xiàn))就需要使用P1口或者是P3口不使用的I/O口進(jìn)行線選法譯碼或者譯碼法進(jìn)行額外的擴(kuò)展來(lái)實(shí)現(xiàn)。
這種情況在單片機(jī)系統(tǒng)中經(jīng)常會(huì)遇到,本文中介紹一種基于分頁(yè)原理的擴(kuò)展方法。51單片機(jī)系統(tǒng)雖然只有16條地址總線,在系統(tǒng)需要較大的RAM或I/O空間時(shí),可以將系統(tǒng)中空余的I/O口作為額外的外部地址使用,例如:使用P1.0時(shí)進(jìn)行線選法譯碼時(shí),就可以擴(kuò)展外部的128 KB空間。當(dāng)P1.0為低電平時(shí),選擇第1個(gè)64 KB空間;當(dāng)P1.0為高電平時(shí), 選擇第2個(gè)64 KB空間。
以此類推,假設(shè)有更多的空間需求時(shí),還可使用專用譯碼器進(jìn)行譯碼,來(lái)進(jìn)行更多的選擇
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理。
推薦閱讀:
特別推薦
- AMTS 2025展位預(yù)訂正式開啟——體驗(yàn)科技驅(qū)動(dòng)的未來(lái)汽車世界,共迎AMTS 20周年!
- 貿(mào)澤電子攜手安森美和Würth Elektronik推出新一代太陽(yáng)能和儲(chǔ)能解決方案
- 功率器件熱設(shè)計(jì)基礎(chǔ)(六)——瞬態(tài)熱測(cè)量
- 貿(mào)澤開售Nordic Semiconductor nRF9151-DK開發(fā)套件
- TDK推出用于可穿戴設(shè)備的薄膜功率電感器
- 日清紡微電子GNSS兩款新的射頻低噪聲放大器 (LNA) 進(jìn)入量產(chǎn)
- 中微半導(dǎo)推出高性價(jià)比觸控 MCU-CMS79FT72xB系列
技術(shù)文章更多>>
- 意法半導(dǎo)體推出首款超低功耗生物傳感器,成為眾多新型應(yīng)用的核心所在
- 是否存在有關(guān) PCB 走線電感的經(jīng)驗(yàn)法則?
- 智能電池傳感器的兩大關(guān)鍵部件: 車規(guī)級(jí)分流器以及匹配的評(píng)估板
- 功率器件熱設(shè)計(jì)基礎(chǔ)(八)——利用瞬態(tài)熱阻計(jì)算二極管浪涌電流
- AHTE 2025展位預(yù)訂正式開啟——促進(jìn)新技術(shù)新理念應(yīng)用,共探多行業(yè)柔性解決方案
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
生產(chǎn)測(cè)試
聲表諧振器
聲傳感器
濕度傳感器
石英機(jī)械表
石英石危害
時(shí)間繼電器
時(shí)鐘IC
世強(qiáng)電訊
示波器
視頻IC
視頻監(jiān)控
收發(fā)器
手機(jī)開發(fā)
受話器
數(shù)字家庭
數(shù)字家庭
數(shù)字鎖相環(huán)
雙向可控硅
水泥電阻
絲印設(shè)備
伺服電機(jī)
速度傳感器
鎖相環(huán)
胎壓監(jiān)測(cè)
太陽(yáng)能
太陽(yáng)能電池
泰科源
鉭電容
碳膜電位器