版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1第8章80C51單片機(jī)并行系統(tǒng)擴(kuò)展技術(shù)8.180C51系列單片機(jī)的并行系統(tǒng)擴(kuò)展概述8.1.180C51系列單片機(jī)的并行系統(tǒng)擴(kuò)展能力8.1.2地址的鎖存8.1.3存儲器空間地址8.2外部存儲器的擴(kuò)展方法8.2.1程序存儲器的擴(kuò)展8.2.2數(shù)據(jù)存儲器的擴(kuò)展8.2.3數(shù)據(jù)存儲器和程序存儲器的統(tǒng)一編址8.3外部I/0口的擴(kuò)展方法8.3.1對I/O口的編程指令8.3.2簡單并行I/O接口擴(kuò)展8.3.381C55可編程I/O接口及擴(kuò)展技術(shù)8.3.482C55可編程接口電路的擴(kuò)展目錄28.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述80C51系列單片機(jī)其芯片內(nèi)部集成了計算機(jī)的基本功能部件,如CPU、RAM、ROM、并行和串行I/O口以及定時/計數(shù)器,使用非常方便。對于小型的控制及檢測系統(tǒng),利用單片機(jī)自身的硬件資源就夠了,但對于一些較大的應(yīng)用系統(tǒng),往往還需要擴(kuò)展一些存儲器、及并行口等外圍芯片,以補充單片機(jī)硬件資源的不足。38.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述8.1.2地址的鎖存一、鎖存的作用
80C51系列單片機(jī)以三總線(地址總線、數(shù)據(jù)總線、控制總線)方法外擴(kuò)展存儲器及外部I/O口芯片時,數(shù)據(jù)總線(D7~D0)和地址總線(A7~A0)低8位通過P0口分時輸出,地址總線的高8位(A15~A8)通過P2口輸出。48.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述P0口采用分時復(fù)用的方法:
CPU先從P0口輸出低8位地址,從P2口輸出高8位地址,從而利用PO口線和P2口線的高低電平的狀態(tài)來確定具體訪問的存儲器空間位置,再從P0口讀寫數(shù)據(jù)。所以,只有通過地址鎖存器把P0口首先輸出的低8位地址鎖存起來,才能實現(xiàn)PO口的復(fù)用功能。單片機(jī)的ALE引腳一般與鎖存器的控制信號G相連接,在ALE的下降沿P0口的低8位地址信號進(jìn)入鎖存器,鎖存器輸出作為地址總線低8位的A7~A0。58.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述二、鎖存器
74LS373和74LS573等TTL芯片常用來完成上述的地址鎖存功能。兩者功能一樣,只是芯片引腳的排列不同,用戶可以根據(jù)印刷電路板的布線需要選用。它們都是帶有三態(tài)門的、雙列直插20引腳的8D鎖存器。68.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述74LS373其引腳圖如圖8-1所示,其內(nèi)部結(jié)構(gòu)圖如圖8-2所示。74LS373的引腳符號和功能如下:(1)D7~D0:三態(tài)門輸入端。(2)Q7~Q0:三態(tài)門輸出端。(3)GND:接地端。(4)VCC:電源端。(5):三態(tài)門使能端。,三態(tài)門輸出為標(biāo)準(zhǔn)TTL電平;=1,三態(tài)門輸出高阻態(tài)。78.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述(6)G:8D鎖存器控制端。當(dāng)G=1時,鎖存器處于透明工作狀態(tài),即鎖存器的輸出狀態(tài)隨數(shù)據(jù)輸入端的變化而變化,即Qi=Di(i=1,2…8)。當(dāng)G端由1變0時,數(shù)據(jù)被鎖存起來,此時輸出端Qi不再隨輸入端的變化而變化,而一直保持鎖存前的值不變。G端可直接與單片機(jī)的鎖存控制信號端ALE相連,在ALE的下降沿進(jìn)行地址鎖存。
圖8-174LS373引腳圖圖8-274LS373結(jié)構(gòu)圖
88.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述74LS373的邏輯功能表見表8-1。圖8-3是使用74LS373芯片作為80C51系列單片機(jī)P0口的低8位地址鎖存器的連接方法。
表8-174LS373的邏輯功能表圖8-374LS373與80C5198.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述8.1.3存儲器空間地址無論ROM和RAM哪種存儲器芯片只要連接在系統(tǒng)中,單片機(jī)對其任意一個單元操作都需要先確定其地址空間。如某11根地址線的存儲器芯片,其地址空間為2KB,如果系統(tǒng)中只有這一片芯片,那其地址范圍可以是(0000H~07FFH)。當(dāng)系統(tǒng)中擴(kuò)展的存儲器芯片多于一片時,對于同一種類(如:RAM)存儲器的每一個單元必須具有唯一的地址108.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述
學(xué)校只有一座2KB個房間的宿舍樓,沒有教學(xué)樓,則給宿舍的各個房間編號的方法非常簡單,只需要從0000H開始編寫到07FFH結(jié)束即可。只有一座教學(xué)樓無宿舍樓的情況相同。但如果同時有一座2KB的教學(xué)樓和一座2KB宿舍樓其地址都可以從0000H開始編寫到07FFH。雖然二者地址形式重疊,但是訪問ROM和RAM的控制總線不同、指令不同,因此CPU完全能夠準(zhǔn)確區(qū)分二者。118.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述
但是對于有兩座或兩座以上宿舍樓、教學(xué)樓的情況就要重新討論了。假設(shè)一個學(xué)校有兩座相同的宿舍樓,其每個樓有2KB個宿舍。那么在我們的生活經(jīng)驗中,會采用把其分成A、B座的方法。在單片機(jī)中也是采用這樣的思路。一般我們習(xí)慣于讓其與單片機(jī)的P2.2~P2.0和P0.7~P0.0低11位地址(即單片機(jī)的地址線A10~A0)連接;將單片機(jī)剩下的P2.7~P2.3地址線(即單片機(jī)的地址線A15~A11)留下來承擔(dān)區(qū)別芯片的任務(wù),即完成片選功能。擴(kuò)展芯片的片選方法分為線選法和譯碼法兩種類型。
128.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述一、線選法所謂線選方式,就是把一根高位地址線直接連到某個存儲器芯片的片選端。138.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述【例8-1】現(xiàn)有2K*8位存儲器芯片,需擴(kuò)展8K*8位存儲結(jié)構(gòu),要求采用線選法進(jìn)行擴(kuò)展。
解:擴(kuò)展8KB的存儲器結(jié)構(gòu)需2KB的存儲器芯片4片。2KB的存儲器共11根地址線與單片機(jī)P2口的低3位(P2.2、P2.1、P2.0)和PO口連接。單片機(jī)的P2.3、P2.4、P2.5、P2.6分別與4個芯片的片選端連接,如圖8-4所示。
148.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述
圖8-4用線選方式實現(xiàn)片選158.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述圖8-4中:地址線A10~A0實現(xiàn)片內(nèi)尋址,地址空間為2KB;用4根高位地址線P2.3、P2.4、P2.5、P2.6與4個芯片的端相連,實現(xiàn)片選,均為低電平有效。(P2.5、P2.6中有一根地址線為低電平時,其余三根地址線必須為高電平,即同類存儲器每次只能有一個芯片被選中工作)。現(xiàn)假設(shè)剩下的一根高位地址線A15接為低電平,這樣可得到如表8-2所示的四個芯片的地址分配。168.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述178.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述
可以看出,四個芯片的片內(nèi)尋址A10…A0都是從0…0(共11位),到1…1(共11位),為2KB空間,而依靠不同的片選信號——高位地址線A14、A13、A12、A11中的某一根為0,來區(qū)分這四個芯片的地址空間。線選方式的電路連接簡單,其缺點:芯片的地址空間相互之間可能不連續(xù)(如圖8-4所示的情況),不能充分利用微處理器的內(nèi)存空間。其原因是,用做片選信號的高位地址線的信號狀態(tài)得不到充分利用。188.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述
以圖8-4為例,當(dāng)A11為低電平選通芯片1時,此時A14、A13、A12必須為高電平,然而A15的電平可高可低。這樣對于芯片,實際上存在2個地址空間,它們是7000H~77FFH和F000H~F7FFH。同理,其它三個芯片也各有2個地址空間。對于地址重疊現(xiàn)象,編程者清楚即可,任意選定其中一個地址空間供編程用皆可。198.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述二、譯碼法采用譯碼方式編址可以克服線選方式的缺點,它通過譯碼器將高位地址線的狀態(tài)譯碼,然后用譯碼器輸出信號來選通相應(yīng)的存儲器芯片。常用的譯碼器有74LS139、74LS138等。
1.74LS139譯碼器
74LS139為雙2線-4線譯碼器。這兩個譯碼器完全獨立,分別有各自的數(shù)據(jù)輸入端、譯碼狀態(tài)輸出端以及數(shù)據(jù)輸入允許端。表8-3(只給出一組)為74LS139譯碼器的真值表。其引腳見圖8-5。208.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述
表8-374LS139真值表圖8-574LS139引腳圖218.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述【例8-2】現(xiàn)有2K*8位存儲器芯片,需擴(kuò)展8K*8位存儲結(jié)構(gòu),要求采用譯碼法進(jìn)行擴(kuò)展。解:擴(kuò)展8KB的存儲器結(jié)構(gòu)需2KB的存儲器芯片4片。2K的存儲器共11根地址線與單片機(jī)P2口的低3位(P2.2、P2.1、P2.0)和PO口連接。P2.3、P2.4作為二-四譯碼器的譯碼地址,譯碼輸出作為擴(kuò)展4個存儲器芯片的片選信號,P2.5、P2.6、P2.7懸空。擴(kuò)展連線圖如圖8-6所示。228.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述
圖8-674LS139譯碼法實現(xiàn)片選238.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述
根據(jù)譯碼器的邏輯關(guān)系和存儲器的片內(nèi)尋址范圍,當(dāng)未用的三位都取低電平0時,可以得到4個芯片的地址空間如表8-4所示:248.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述2.74LS138譯碼器
74LS138譯碼器屬于3線-8線譯碼器,有3個數(shù)據(jù)輸入端,經(jīng)譯碼產(chǎn)生8種狀態(tài)。真值表見表8-5。由表8-5可見,當(dāng)譯碼器的輸入為某一固定編碼時,其輸出僅有一個固定的引腳輸出為低電平,其余的為高電平。輸出為低電平的引腳就作為某一存儲器芯片的片選信號,引腳如圖8-7所示。258.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述表8-574LS138譯碼器真值表圖8-774LS138譯碼器引腳圖268.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述【例8-3】
要擴(kuò)8片8KB的存儲器芯片,如何通過74LS138把64KB空間地址分配給各個芯片?解:由74LS138真值表可知,把G1接到+5V,接地
P2.7、P2.6、P2.5(高3位地址線)分別接74LS138的C、B、A端,由于對高3位地址譯碼,這樣譯碼器有8個輸出~,分別接到8片存儲器的各“片選”端,實現(xiàn)8選1的片選。低13位地址A12~A0(P2.4~P2.0,P0.7~P0.0)完成對選中的8KB存儲器中的各個存儲單元的“單元選擇”。這樣就把64KB存儲器空間分成8個8KB空間了。連接線見圖8-8。278.180C51系列單片機(jī)并行系統(tǒng)擴(kuò)展概述
圖8-874LS138劃分存儲器地址
譯碼方式的優(yōu)點是:存儲器芯片的地址空間連續(xù),且唯一確定,不存在地址重疊現(xiàn)象,能夠充分利用內(nèi)存空間;當(dāng)譯碼器輸出端留有空余時,便于繼續(xù)擴(kuò)展存儲器或其他外圍器件。其缺點是電路連接復(fù)雜一些。288.2外部存儲器的擴(kuò)展方法8.2.1程序存儲器的擴(kuò)展
80C51單片機(jī)片內(nèi)有4KBROM,對于較大的系統(tǒng)若4KB不夠用,需在片外擴(kuò)展程序存儲器。外部擴(kuò)展程序存儲器的類型可以是EPROM、E2PROM或FlanshROM,其中使用較多EPROM。298.2外部存儲器的擴(kuò)展方法一、單片EPROM程序存儲器的擴(kuò)展方法1.常用EPROM的芯片及引腳
EPROM常用的是27系列產(chǎn)品,如:2716(2KB)、2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB)。型號27后面的數(shù)字是該芯片的位存儲容量。如2764中64表示該芯片的位存儲容量是64Kbit,該數(shù)值除以8所得即是該ROM能存放程序的K字節(jié)數(shù),因此2764芯片的容量為8KB(B表示字節(jié)單位)。圖8-9是這些芯片的引腳圖。308.2外部存儲器的擴(kuò)展方法318.2外部存儲器的擴(kuò)展方法其中各引腳功能如下:A15~A0:地址線引腳。它的數(shù)目由芯片的存儲容量決定,如27128有14根,27256有15根。用于進(jìn)行單元選擇。D7~D0:數(shù)據(jù)線引腳。一般與單片機(jī)的PO口之間連接。:片選控制端。其為低電平時程序存儲器被選中工作。:輸出允許控制端。其為低電平時程序存儲器允許指令從數(shù)據(jù)線引腳輸出。VCC:+5V,芯片的工作電壓。VPP:編程時,編程電壓(+12V或+25V)輸入端。GND:數(shù)字地。NC:無用端。328.2外部存儲器的擴(kuò)展方法2.程序存儲器的擴(kuò)展方法程序存儲器的數(shù)據(jù)線D7~D0與單片機(jī)的P0口的8根線對應(yīng)連接,作為擴(kuò)展系統(tǒng)的數(shù)據(jù)總線,該數(shù)據(jù)總線為單向數(shù)據(jù)總線,外部ROM中的指令通過該總線被讀入單片機(jī)。單片機(jī)PO口通過鎖存器的輸出端與程序存儲器地址線的低8位A7~A0連接;程序存儲器的高位地址線AX(X=9~15)~A8與單片機(jī)的P2口直接連接;程序存儲器的輸出允許端與單片機(jī)的相接;如果只有一片EPROM,其片選端一般固定接地。圖8-10為2764與單片機(jī)的連接圖,該存儲器的地址范圍見表8-6。338.2外部存儲器的擴(kuò)展方法348.2外部存儲器的擴(kuò)展方法表8-6中叉號代表沒有連接的P2.7、P2.6、P2.5位,三者可以有八種組合即:000、001、010……111。當(dāng)三者的組合是000時,該2764的地址范圍是0000H~1FFFH;二者的組合是001時,該2764的地址范圍是2000H~3FFFH;當(dāng)二者的組合是010時,該2764的地址范圍是4000H~5FFFH;當(dāng)二者的組合是111時,該2764的地址范圍是E000H~FFFFH。可見如果外擴(kuò)的ROM沒有用完所有的P2口地址時,ROM地址的范圍不固定,一般未用的高位地址常被選擇全部為0。圖8-10單片機(jī)擴(kuò)展一片2764電路圖358.2外部存儲器的擴(kuò)展方法
圖8-10單片機(jī)擴(kuò)展一片2764電路圖368.2外部存儲器的擴(kuò)展方法
若需要外部擴(kuò)展的EPROM的芯片為27128,則其與單片機(jī)的連接方法,只需要在圖8-10的基礎(chǔ)上增加一條地址線即可,將外部ROM的A13與單片機(jī)的P2.5連接(也可以選擇P2.6或P2.7,但習(xí)慣于選擇P2.5)。378.2外部存儲器的擴(kuò)展方法二、CPU從外部程序存儲器取指令的時序外部程序存儲器與內(nèi)部程序存儲器的功能都是用來存放編程人員編制的程序指令。因此CPU對其的操作只有讀出,沒有寫入,程序指令的代碼傳送的方向是單向的。當(dāng)CPU執(zhí)行外部ROM中的指令時,CPU將自動逐條讀取其內(nèi)的指令。在讀取指令的過程中,單片機(jī)的ALE、、將控制讀取過程。其中ALE用于低8位地址鎖存控制;是片外程序存儲器“讀選通”控制信號,它接外擴(kuò)EPROM的引腳。388.2外部存儲器的擴(kuò)展方法P2口用來輸出程序指令在ROM中存放單元地址的高8位,P0口分時用作低8位地址總線和數(shù)據(jù)總線。作低8位地址線時與P2口聯(lián)合形成16位的地址,這個16位地址就是指令在ROM中的存放地址,這個地址將指引CPU去該存儲單元取指令。P0口作數(shù)據(jù)線時的功能是指:CPU將P2、P0所指示外ROM單元地址中的指令代碼,從P0與EPROM的D0~D7的連接線上傳送到單片機(jī)內(nèi)部。398.2外部存儲器的擴(kuò)展方法【例8-4】
試?yán)L圖說明CPU從外部ROM2080H單元中讀取MOVR0,#30H的指令時序。解:圖8-11是該指令時序圖。該指令編譯后的機(jī)器碼是7830,依次占用外部ROM2080H和2081H單元。執(zhí)行該指令時CPU首先從P2口送出2080中的高8位地址20H,并將80H通過P0口送到74LS373鎖存器輸出端,ALE是高電平時74LS373處于直通狀態(tài),輸出等于輸入,在ALE的下降沿PO口送出的數(shù)據(jù)被鎖存在輸出端,這時PO口數(shù)據(jù)再變化,74LS373的輸出端仍然保持80H這一狀態(tài)。這樣P2口和P0口共同形成了16位地址2080H。408.2外部存儲器的擴(kuò)展方法隨后單片機(jī)將78H這一指令代碼通過P0口與外部ROM的D7~D0的連接線路讀入CPU。接著CPU將2081H這一地址再通過P2口和P0口送出,當(dāng)作為地址信號的P0口數(shù)據(jù)被鎖存后,CPU會將指令的第二個字節(jié)代碼30H通過P0口線讀入到CPU中。
圖8-11單片機(jī)外擴(kuò)程序存儲器的時序圖418.2外部存儲器的擴(kuò)展方法從圖8-11可以看出,80C51單片機(jī)的一個機(jī)器周期包含6個狀態(tài)S1~S6,ALE和在一個機(jī)器周期中都是兩次有效的。當(dāng)ALE有效(高電平)時,高8位地址(PCH)從P2口輸出,低8位地址(PCL)從P0口輸出。因此,可以在ALE的下降沿把P0口輸出的地址信號鎖存起來。然后利用信號按地址選通外部程序存儲器,將相應(yīng)單元的數(shù)據(jù)(指令代碼)送到P0口。CPU在上升沿完成對P0口的數(shù)據(jù)采樣。這樣就實現(xiàn)了P0口地址/數(shù)據(jù)的分時操作。428.2外部存儲器的擴(kuò)展方法對圖8-11有幾點值得注意:1)對應(yīng)于ALE下降沿時刻,出現(xiàn)在P0口上的信號必然是低8位地址信號A7~A0。2)對應(yīng)于上升沿時刻,出現(xiàn)在P0口上的信號必然是指令信號。438.2外部存儲器的擴(kuò)展方法三、擴(kuò)展多片EPROM程序存儲器當(dāng)擴(kuò)展一片EPROM不能滿足要求時,可以采用擴(kuò)展多片EPROM的方案。這時所有芯片的片選端都必須適當(dāng)連接,需要使用片內(nèi)尋址以外的高位地址線,以線選或譯碼方式提供片選信號。圖8-12是采用譯碼方式擴(kuò)展4片2764EPROM的連接圖。2764的地址線有13根,低8位地址線連接鎖存器的輸出端,其余5根地址線接到P2.0~P2.4;4片EPROM的數(shù)據(jù)線都直接與PO口連接;端都與連接。P2口剩下的2根高位地址線P2.6、P2.5(A14、A13)通過74LS139選通4片2764的片選信號,接到各片端。A15(P2.6)未用,可以取高電平也可以取低電平,一般來說我們習(xí)慣于把A15這樣未用的位取”0”。448.2外部存儲器的擴(kuò)展方法458.2外部存儲器的擴(kuò)展方法8.2.2數(shù)據(jù)存儲器的擴(kuò)展典型80C51單片機(jī)內(nèi)部有128B的RAM,用于小系統(tǒng)一般能滿足要求。如果不夠用,可在片外適當(dāng)擴(kuò)展數(shù)據(jù)存儲器。其擴(kuò)展的最大容量是64KB。在單片機(jī)應(yīng)用系統(tǒng)中,如果外部擴(kuò)展動態(tài)數(shù)據(jù)存儲器,還需要有對應(yīng)的硬件刷新電路。所以,在單片機(jī)外部擴(kuò)展的數(shù)據(jù)存儲器都不采用動態(tài)數(shù)據(jù)存儲器,而采用靜態(tài)數(shù)據(jù)存儲器(SRAM)。46一、外部數(shù)據(jù)存儲器的擴(kuò)展方法1.常用于外部RAM擴(kuò)展的芯片及引腳靜態(tài)數(shù)據(jù)存儲器常用的是62系列產(chǎn)品,如:6216(2KB)、6264(8KB)、128(16KB)、62256(32KB)、62512(64KB)。同樣型號62后面的數(shù)字是該芯片的位存儲容量。該數(shù)值除以8所得即是該RAM能存放數(shù)據(jù)的K字節(jié)數(shù),因此6264芯片的容量為8KB(B表示字節(jié)單位)。478.2外部存儲器的擴(kuò)展方法8.2.2數(shù)據(jù)存儲器的擴(kuò)展典型80C51單片機(jī)內(nèi)部有128B的RAM,用于小系統(tǒng)一般能滿足要求。如果不夠用,可在片外適當(dāng)擴(kuò)展數(shù)據(jù)存儲器。其擴(kuò)展的最大容量是64KB。在單片機(jī)應(yīng)用系統(tǒng)中,如果外部擴(kuò)展動態(tài)數(shù)據(jù)存儲器,還需要有對應(yīng)的硬件刷新電路。所以,在單片機(jī)外部擴(kuò)展的數(shù)據(jù)存儲器都不采用動態(tài)數(shù)據(jù)存儲器,用靜態(tài)數(shù)據(jù)存儲器(SRAM)。488.2外部存儲器的擴(kuò)展方法如圖8-13所示,常用62系列靜態(tài)存儲器芯片各引腳功能如下:D7~D0:雙向三態(tài)數(shù)據(jù)線。與單片機(jī)的P0口直接連接。A15~A0:地址輸入線。芯片容量不同,地址線數(shù)量不同。:片選信號輸入線。對6264芯片,當(dāng)26腳(CS)為高電平且為低電平時才選中該片。:讀選通信號輸入線,低電平有效。:寫允許信號輸入線,低電平有效。VCC:工作電源+5V。GND:地。498.2外部存儲器的擴(kuò)展方法508.2外部存儲器的擴(kuò)展方法2.?dāng)U展數(shù)據(jù)存儲器的連接電路數(shù)據(jù)存儲器的擴(kuò)展方法是:數(shù)據(jù)存儲器的數(shù)據(jù)線D7~D0與單片機(jī)P0口的8根線對應(yīng)連接;單片機(jī)PO口通過鎖存器的輸出端與數(shù)據(jù)存儲器地址線的低8位A7~A0連接;數(shù)據(jù)存儲器的高位地址線AX(X=9~15)~A8與單片機(jī)的P2口直接連接;片外數(shù)據(jù)存儲器RAM的寫允許腳信號與80C51單片機(jī)的(P3.6)相連接,單片機(jī)可以通過執(zhí)行MOVX寫出指令使得引腳低電平時,此時單片機(jī)會將數(shù)據(jù)從P0口送出;518.2外部存儲器的擴(kuò)展方法
與外擴(kuò)程序存儲器是單向總線不同,外擴(kuò)數(shù)據(jù)存儲器是雙向數(shù)據(jù)總線。單片機(jī)內(nèi)部的數(shù)據(jù)與外部RAM之間的數(shù)據(jù)交換均通過該總線完成,即從單片機(jī)內(nèi)部寫出的數(shù)據(jù)從該總線上進(jìn)入外部RAM,外部RAM的數(shù)據(jù)也是通過該總線進(jìn)入單片機(jī)內(nèi)部。P2、P0口形成16位地址,指示出與單片機(jī)進(jìn)行數(shù)據(jù)交換的外部RAM單元,該地址將出現(xiàn)在MOVX指令中。528.2外部存儲器的擴(kuò)展方法由于片外數(shù)據(jù)存儲器RAM的讀和寫由80C51單片機(jī)的(P3.7)和(P3.6)信號控制,而片外程序存儲器EPROM的輸出端允許()由80C51單片機(jī)的讀選通信號控制。因此即使外部RAM與EPROM的地址空間范圍都是相同的,但由于控制信號不同,故不會發(fā)生總線沖突。圖8-14為6264與單片機(jī)的連接圖,該存儲器的地址范圍是見表8-8。表8-8擴(kuò)展一片6264的地址值538.2外部存儲器的擴(kuò)展方法由表8-8知6264的地范圍隨A15A14A13的取值而變化,當(dāng)三者都取000時,其取值范圍固定為:0000H~1FFFH。
圖8-14外部擴(kuò)展一片6264與單片機(jī)的連接圖548.2外部存儲器的擴(kuò)展方法二、操作片外數(shù)據(jù)存儲器所用指令的時序
1.對外部RAM的操作指令可以完成80C51系列單片機(jī)與外部RAM進(jìn)行數(shù)據(jù)交換的指令如下:
MOVXA,@Ri;從外RAM讀輸入單片機(jī)
MOVX@Ri,A;從單片機(jī)寫出到外RAMMOVXA,@DPTR;從外RAM讀輸入單片機(jī)
MOVX@DPTR,A;從單片機(jī)寫出到外RAM這4條指令(實際上為6條,因為i=0,1)全為寄存器間接尋址操作,且全為累加器A與外部接口打交道。以上指令集統(tǒng)稱為“MOVX”類指令。前2條指令采用R0或R1間址。558.2外部存儲器的擴(kuò)展方法2.執(zhí)行與外部數(shù)據(jù)存儲器進(jìn)行數(shù)據(jù)交換指令的時序只有執(zhí)行MOVX類指令才能夠?qū)ν獠繑?shù)據(jù)存儲器進(jìn)行數(shù)據(jù)交換。當(dāng)執(zhí)行這些指令時CPU首先將MOVX指令從內(nèi)部ROM或外部R0M中取出。如果MOVX指令存放在內(nèi)部ROM中,其采用內(nèi)部總線完成指令操作,與P2、P0、ALE、等引腳無關(guān)。我們這里討論當(dāng)MOVX類指令存放在外部ROM中時,P2、P0、ALE、、、的時序關(guān)系。568.2外部存儲器的擴(kuò)展方法
當(dāng)MOVX類指令存放在外部ROM中時,第一個機(jī)器周期CPU首先執(zhí)行將指令從外部ROM取出的操作,其操作時序與例【例8-4】基本相同:在讀取指令的過程中單片機(jī)的ALE、將控制讀取過程,其中ALE用于低8位地址鎖存控制,且ALE在讀取MOVX指令時仍然保持一個機(jī)器周期中有兩次高電平有效,為低電平時,MOVX指令對應(yīng)的機(jī)器碼從P0口進(jìn)入單片機(jī)內(nèi)部。將指令代碼取入單片機(jī)內(nèi)部后,CPU將DPTR值的高8位DPH送到P2口,將DPTR的低8位送到單片機(jī)的P0口,從而確定與單片機(jī)進(jìn)行數(shù)據(jù)交換的外部數(shù)據(jù)存儲器的單元地址,PO口信號被ALE信號的下降沿鎖存。578.2外部存儲器的擴(kuò)展方法
如果執(zhí)行的是讀入指令,CPU會使得信號成為低電平,在此期間外部RAM單元中的數(shù)據(jù)被送到PO口線,單片機(jī)將其自動讀入到累加器A中。如果執(zhí)行的是寫出指令,則CPU將令信號有效,數(shù)據(jù)從累加器A輸出到P0口從而送入外部RAM的DPTR指出的單元中。588.2外部存儲器的擴(kuò)展方法【8-5】試?yán)L制執(zhí)行MOVXA,@DPTR的指令時序。設(shè)這條指令存放在外部ROM2080H單元,該代碼對應(yīng)的二進(jìn)制機(jī)器碼為EOH,且(DPTR)=3658H,(3658H)=28H。解:指令的時序關(guān)系如圖8-15所示。
圖8-15執(zhí)行讀入指令MOVXA,@DPTR的時序598.2外部存儲器的擴(kuò)展方法【例8-6】試?yán)L制執(zhí)行MOVX@DPTR,A的指令時序,設(shè)這條指令存放在外部ROM2066H單元,該指令對應(yīng)的機(jī)器碼為FOH,累加器A中存放的數(shù)值為68H,(DPTR)=3022H。
圖8-16執(zhí)行寫出指令MOVX@DPTR,A的時序608.2外部存儲器的擴(kuò)展方法如圖8-15和8-16所示,外部數(shù)據(jù)存儲器的讀/寫操作(執(zhí)行MOVX指令)包含兩個機(jī)器周期,第一個機(jī)器周期是從外部程序存儲器讀取指令操作碼,第二個機(jī)器周期才是從外部數(shù)據(jù)存儲器讀/寫數(shù)據(jù)。第一個機(jī)器周期的時序與8.2.1節(jié)所述的外部程序存儲器讀操作時序相似。但由于從S4狀態(tài)起就維持高電平,S6狀態(tài)不再能讀外ROM指令,而是在S5狀態(tài)輸出外部數(shù)據(jù)存儲器的地址,利用ALE下降沿鎖存。若執(zhí)行的是“MOVXA,@DPTR”或“MOVX@DPTR,A”
指令,則ALE鎖存的P0口地址是DPL,同時在P2口上出現(xiàn)DPH。若執(zhí)行的是“MOVXA,@Ri”或“MOVX@Ri,A”指令,則P0口地址是Ri的內(nèi)容,而在P2口上出現(xiàn)的是單片機(jī)P2口鎖存器的內(nèi)容。618.2外部存儲器的擴(kuò)展方法在第二個機(jī)器周期中,若是讀操作,則信號有效(低電平),P0口變?yōu)檩斎敕绞?,結(jié)合地址信號選通外部RAM的某個單元,在上升沿完成數(shù)據(jù)讀出操作;若是寫操作,情況相似,只是代替有效,P0口變?yōu)檩敵龇绞?。然后在S5狀態(tài),P0口和P2口分別出現(xiàn)PCL和PCH,利用ALE下降沿鎖存PCL,同時變?yōu)榈碗娖?,為下一條指令的讀出作好準(zhǔn)備。順便指出,從圖8-11可以看到,只要不是執(zhí)行外部RAM讀/寫操作,ALE信號總是每個機(jī)器周期出現(xiàn)兩次,其頻率為時鐘頻率的1/6,因此ALE可以作為外部定時信號。628.2外部存儲器的擴(kuò)展方法三、擴(kuò)展多片SRAM當(dāng)擴(kuò)展一片RAM不能滿足要求時,可以采用擴(kuò)展多片RAM的方案。這時所有芯片的片選端都必須適當(dāng)連接,要用到片內(nèi)尋址以外的高位地址線,以線選或譯碼方式提供片選信號。1.譯碼法擴(kuò)展多片RAM638.2外部存儲器的擴(kuò)展方法圖8-17是采用譯碼方式擴(kuò)展4片6264RAM的連接圖。6264的地址線有13根,低8位地址線連接鎖存器的輸出端,其余5根地址線直接接到P2.0~P2.4。4片RAM的數(shù)據(jù)線直接與單片機(jī)的PO口連接;、端分別與單片機(jī)的和對應(yīng)連接。P2口剩下的2根高位地址線P2.6、P2.5(A14、A13)通過74LS139選通4片6264的片選信號,接到各片端。P2.7未用可取0也可取1。
648.2外部存儲器的擴(kuò)展方法658.2外部存儲器的擴(kuò)展方法2.線選法擴(kuò)展多片RAM圖8-18是采用線選方式擴(kuò)展2片62128RAM的連接圖。同樣單片機(jī)的P0口經(jīng)鎖存器與62128的低8位地址線相連接,其余6根地址線直接接到P2.5~P2.0。2片RAM的數(shù)據(jù)線直接與單片機(jī)的PO口連接;、端分別與單片機(jī)的和對應(yīng)連接。P2口剩下的2根高位地址線P2.7、P2.6分別作為兩片62128的片選線。668.2外部存儲器的擴(kuò)展方法678.2外部存儲器的擴(kuò)展方法8.2.3數(shù)據(jù)存儲器和程序存儲器的統(tǒng)一編址圖8-19是80C51擴(kuò)展2片27128和2片62128作為外部程序存儲器和外部數(shù)據(jù)存儲器的電路圖。地址總線與數(shù)據(jù)總線公用,ROM(27128)用到,RAM(62128)用到,采用片選方式產(chǎn)生片選信號。一片62128和一片27128共用一個片選信號,其地址是重疊的。圖中IC127128和IC362128的地址均為8000H~BFFFHIC262128和IC462128的地址均為4000H~7FFFH由于訪問片外ROM與訪問片外RAM所用的控制線不同,且與、不會同時有效,所以雖然地址總線與數(shù)據(jù)總線公用,但不會引起混亂。688.2外部存儲器的擴(kuò)展方法698.3外部I/0口的擴(kuò)展方法8.3.1對I/O口的編程指令由于80C51系列單片機(jī)沒有專用的訪問I/O接口的指令,所以借用單片機(jī)訪問外部RAM的6條MOVX類指令,即將I/O接口視為外部數(shù)據(jù)存儲器的單元進(jìn)行訪問。708.3外部I/0口的擴(kuò)展方法8.3.2簡單并行I/O接口擴(kuò)展并行接口是使用最多的接口,80C51單片機(jī)共有四個8位并行I/O接口,但這些I/O口并不能完全提供給用戶使用,實際只有P1口是留給用戶使用的,因此需要用戶進(jìn)行并行口的擴(kuò)展。并行口的擴(kuò)展一般都利用PO口來完成。718.3外部I/0口的擴(kuò)展方法一、簡單并行口擴(kuò)展的要求在擴(kuò)展的I/O接口電路中輸出電路應(yīng)該具有數(shù)據(jù)鎖存器功能,以保證輸出數(shù)據(jù)能適應(yīng)慢速的接收設(shè)備。單片機(jī)讀入數(shù)據(jù)時,要求I/O接口電路能為數(shù)據(jù)輸入提供三態(tài)緩沖功能。P0是輸出和輸入的數(shù)據(jù)通道。利用鎖存器或三態(tài)門緩沖器可以實現(xiàn)簡單的并行I/O接口擴(kuò)展。常用的有74LS273、74LS244等。
728.3外部I/0口的擴(kuò)展方法知識點74LS244
:
74LS244為雙4位三態(tài)門緩沖器,三態(tài)門緩沖器常用作8位數(shù)據(jù)寄存器。它有兩個輸出控制端,均為低電平有效,分別控制2個4位三態(tài)門,使用時可將兩端連接在一起構(gòu)成8位數(shù)據(jù)控制端。知識點74LS273:
74LS273是帶有清除端CLR的8D觸發(fā)器。清除端為低電平時,輸出全部復(fù)位為0;只有在清除端CLR保持高電平時,才具有鎖存功能,鎖存控制端為11腳CLK,采用上升沿鎖存。因此74LS273作鎖存器時,與74LS373不同的是CPU的ALE信號必須經(jīng)過反相器反相之后才能與74LS273的控制端CLK端相連。738.3外部I/0口的擴(kuò)展方法二、簡單并行口擴(kuò)展電路圖8-20是一個簡單的并行I/O口擴(kuò)展電路圖,它采用74LS244作為擴(kuò)展輸入,74LS273作為擴(kuò)展輸出。P0口為雙向數(shù)據(jù)線,既能從74LS244輸入數(shù)據(jù),又能將數(shù)據(jù)傳送給74LS273輸出。此電路可以實現(xiàn)按鍵開、合及信號的采集和LED指示燈亮、暗的控制。748.3外部I/0口的擴(kuò)展方法758.3外部I/0口的擴(kuò)展方法輸入控制信號由P2.7和合成,當(dāng)二者同時為低電平時,“或”門輸出為0,選通74LS244,將外部信息輸入到總線。無鍵按下,輸入為全1;若按下某鍵,則對應(yīng)位輸入為0。輸出控制信號由P2.7和合成,當(dāng)二者同時為低電平時,“或”門輸出為0,當(dāng)后沿到來時,74LS273CLK端出現(xiàn)正跳變,將P0口數(shù)據(jù)鎖存到74LS273,其輸出控制發(fā)光二極管LED,當(dāng)某線輸出為低電平時,該線上的LED發(fā)光。由圖8-20可見,輸入控制和輸出控制都是在P2.7為0時有效,它們的端口地址為7FFFH,即輸入、輸出占有相同的地址空間,但因輸入和輸出分別由和信號控制,因此不會發(fā)生沖突。768.3外部I/0口的擴(kuò)展方法【例8-7】對于圖8-20,若實現(xiàn)按下一個任意鍵,對應(yīng)的LED發(fā)光(如按下S0號鍵,讓LED0點亮),試設(shè)計程序。解:程序段如下:LOOP:MOVDPTR,#7FFFH;指向擴(kuò)展I/O口地址
MOVXA,@DPTR;由244讀入數(shù)據(jù),檢測按鍵
MOVX@DPTR,A;向273輸出數(shù)據(jù),驅(qū)動LED778.3外部I/0口的擴(kuò)展方法8.3.381C55可編程I/O接口及擴(kuò)展技術(shù)以上的簡單接口,雖然可以實現(xiàn)數(shù)據(jù)的輸入或輸出,但它們的功能一旦確定,就不能再變動。如果希望一個接口既可以作為輸入接口、又可以作為輸出接口,就必須使用可編程接口。所謂可編程接口,就是指這些接口的功能可以通過軟件程序進(jìn)行設(shè)定。常用的并行可編程I/O接口有81C55、82C55等。81C55是Intel公司生產(chǎn)的一種通用的可編程并行接口芯片,其除了能擴(kuò)展并行口外,還能夠工作在RAM存儲器和定時/計數(shù)器工作方式。788.3外部I/0口的擴(kuò)展方法一、81C55的基本結(jié)構(gòu)及引腳功能1.81C55的基本結(jié)構(gòu)81C55共有三個基本組成部分。第一部分為可編程I/O接口,共有三個口,其中二個口(A口和B口)為8位口,一個口(C口)為’6位口;第二部分為256B的RAM;第三部分為1個14位可編程減1定時/計數(shù)器。使用81C55可以方便的進(jìn)行I/O口、RAM及定時/計數(shù)器的擴(kuò)展,其組成結(jié)構(gòu)及引腳如圖8-21所示。798.3外部I/0口的擴(kuò)展方法808.3外部I/0口的擴(kuò)展方法81C55芯片采取40引腳雙列直插式封裝,單一的+5V電源,其引腳排列如圖8-21(a)所示,內(nèi)部電路的邏輯框圖如圖8-21(b)所示。818.3外部I/0口的擴(kuò)展方法2.81C55的引腳功能81C55按其引腳功能大至可分為:(1)電源線兩條。為+5V電源輸入線,接地。(2)地址數(shù)據(jù)線:AD7~AD0(8條)是低8位地址線和數(shù)據(jù)線共用輸入口,當(dāng)ALE=1時輸入的是地址信息,否則是數(shù)據(jù)信息。雙向地址/數(shù)據(jù)總線,分時傳送單片機(jī)和81C55之間的地址、數(shù)據(jù)、命令、狀態(tài)信息。其與單片機(jī)的PO口連接。828.3外部I/0口的擴(kuò)展方法(3)端口線:I/O總線(22條),包括PA、PB口的各8根和PC口的6根。PA7~PA0為通用I/O線,用于PA口及與其連接的外部設(shè)備之間的數(shù)據(jù)傳送,數(shù)據(jù)傳送方向由寫入81C55的控制字決定;PB7~PB0為通用I/O線,用于PB口及與其連接的外部設(shè)備之間的數(shù)據(jù)傳送,數(shù)據(jù)傳送方向也由寫入81C55的控制字決定;PC5~PC0一方面可工作在通用I/O方式下,用作傳送I/O數(shù)據(jù);在需要有應(yīng)答聯(lián)絡(luò)信號的傳送方式下,用作傳送命令/狀態(tài)信息。838.3外部I/0口的擴(kuò)展方法(4)控制引腳ALE:為允許地址輸入線,高電平有效。在ALE下降沿80C51單片機(jī)從AD7~AD0上傳送的地址鎖存到81C55片內(nèi)“地址鎖存器”,否則81C55的鎖存器處于封鎖狀態(tài)。81C55的ALE常和80C51的ALE端相連。81C55的讀控制信號:當(dāng),時,81C55處于被讀出數(shù)據(jù)狀態(tài),即數(shù)據(jù)從81C55進(jìn)入單片機(jī)。81C55的寫控制信號:當(dāng),時81C55處于被寫入數(shù)據(jù)狀態(tài),即數(shù)據(jù)從單片機(jī)進(jìn)入81C55。81C55的片選信號:則80C51單片機(jī)選中81C55工作。I/O與RAM選擇信號IO/:這是一個特殊信號,因為81C55內(nèi)部的I/O接口與RAM是分開編址的,因此要求用控制信號進(jìn)行區(qū)分。IO/=0,對RAM進(jìn)行讀寫;IO/=1,對I/O口進(jìn)行讀寫。848.3外部I/0口的擴(kuò)展方法(4)控制引腳ALE:為允許地址輸入線,高電平有效。在ALE下降沿80C51單片機(jī)從AD7~AD0上傳送的地址鎖存到81C55片內(nèi)“地址鎖存器”,否則81C55的鎖存器處于封鎖狀態(tài)。81C55的ALE常和80C51的ALE端相連。81C55的讀控制信號:當(dāng),時,81C55處于被讀出數(shù)據(jù)狀態(tài),即數(shù)據(jù)從81C55進(jìn)入單片機(jī)。81C55的寫控制信號:當(dāng),時81C55處于被寫入數(shù)據(jù)狀態(tài),即數(shù)據(jù)從單片機(jī)進(jìn)入81C55。81C55的片選信號:則80C51單片機(jī)選中81C55工作。I/O與RAM選擇信號IO/:這是一個特殊信號,因為81C55內(nèi)部的I/O接口與RAM是分開編址的,因此要求用控制信號進(jìn)行區(qū)分。IO/=0,對RAM進(jìn)行讀寫;IO/=1,對I/O口進(jìn)行讀寫。858.3外部I/0口的擴(kuò)展方法復(fù)位信號RESET:81C55以600ns的正脈沖進(jìn)行復(fù)位,復(fù)位后A、B、C口均為輸入方式。定時/計數(shù)器脈沖輸入線TIMERIN:是外界向81C55輸入計數(shù)脈沖信號的輸入端,其上跳沿用于對81C55片內(nèi)的14位計數(shù)器減1。定時/計數(shù)器的脈沖輸出線
:是81C55向外部設(shè)備輸出脈沖和方波的輸出端。當(dāng)14位計數(shù)器減為0時就可以在該引線上述產(chǎn)生脈沖或方波。可以輸出單個脈沖、多個連續(xù)脈沖、單個方波及連續(xù)方波,通過設(shè)置定時/計數(shù)器的工作方式來產(chǎn)生對應(yīng)的波形。868.3外部I/0口的擴(kuò)展方法二、81C55的工作方式與基本控制/狀態(tài)寄存器1.81C55控制字寄存器81C55有一個控制字寄存器和一個狀態(tài)標(biāo)志寄存器。控制字寄存器只能寫入不能讀出,共8位。其低四位主要用來設(shè)置PA、PB、PC三個端口的工作方式;D5、D4用來確定A口、B口以選通輸入/輸出方式工作時是否允許中斷請求;D7、D6用來設(shè)置計數(shù)器的操作。控制字的位定義如圖8-22所示:878.3外部I/0口的擴(kuò)展方法圖8-2281C55控制字的位定義888.3外部I/0口的擴(kuò)展方法2.81C55狀態(tài)字寄存器81C55狀態(tài)字寄存器用來存入PA口和PB口的狀態(tài)標(biāo)志,它的地址與控制寄存器地址相同,80C51單片機(jī)只能對其讀出,不能寫入。81C55狀態(tài)字寄存器其位定義如圖8-23所示。其中D6位的說明如下:D6位為計數(shù)器中斷狀態(tài)標(biāo)志位TIMER。如計數(shù)器正在計數(shù)或開始計數(shù)前,則D6=0;若計數(shù)器的計數(shù)長度已經(jīng)計滿,即計數(shù)器減為0,則D6=1,它可作為計數(shù)器中斷請求標(biāo)志。在硬件復(fù)位或?qū)λx出后又恢復(fù)為0。898.3外部I/0口的擴(kuò)展方法
圖8-2381C55狀態(tài)字的位定義908.3外部I/0口的擴(kuò)展方法三、81C55的工作方式
81C55不但可以作為通用I/O口工作、也可以作為片外256BRAM及內(nèi)部定時/計數(shù)器方式工作。81C55在以這些方式進(jìn)行工作時,需要首先知道81C55內(nèi)部控制/狀態(tài)寄存器、三個端口、計數(shù)器的低8位、計數(shù)器的高6位及RAM工作時的地址。81C55用AD2~AD0這三條地址線來區(qū)分,端口地址分配表詳見表8-12。918.3外部I/0口的擴(kuò)展方法表8-1281C55端口地址分配表928.3外部I/0口的擴(kuò)展方法1.存儲器RAM方式81C55作為片外256BRAM使用時,需要將引腳置低電平,這時81C55只能做片外RAM使用。81C55內(nèi)部256B的RAM工作時,P2口中某條線需要與81C55的片選線連接,該條線必須設(shè)置為低電平,用這條高位地址線首先選中81C55工作;其次P2口中另有一條線與相連接,該P2口線也需要設(shè)置為低電平,使得81C55工作在RAM方式。因此RAM工作方式時的高8位地址,只需要限定P2口中與和連接的某兩位為低電平即可;81C55內(nèi)部256個字節(jié)的低8位地址由單片機(jī)PO口的8位確定。938.3外部I/0口的擴(kuò)展方法2.作為擴(kuò)展I/O口使用作為片外擴(kuò)展I/O口使用時,需要將引腳置高電平。這時PA、PB、PC口地址的的高8位中,只需要限定P2口中與連接的某位為低電平即可,其它未用的P2口線取0和1都可。PA、PB、PC口地址的低8位分別(假設(shè)AD7~AD3取0)為01H、02H、03H。948.3外部I/0口的擴(kuò)展方法81C55作為擴(kuò)展I/O口使用時,可以工作在四種方式。81C55的三個I/O口中PA、PB口可以工作在基本I/O和選通I/O方式,PC口即可以工作在基本I/O方式,也可以作為PA、PB口選通工作方式時的狀態(tài)控制信號。當(dāng)81C55被設(shè)定為方式1和方式2時,PA、PB、PC口均被定義為基本輸入輸出方式,由MOVX類指令進(jìn)行輸入/輸出操作;設(shè)定為方式3時,PA口定義為選通輸入/輸出,由PC口的低3位作為PA口的聯(lián)絡(luò)線,PC口的其余位作為I/O線,PB口還是基本輸入輸出;設(shè)定為方式4時,PA口、PB口均定義為選通輸入輸出方式,由PC口作為PA口、PB口的聯(lián)絡(luò)線。958.3外部I/0口的擴(kuò)展方法表8-13PC口各工作方式968.3外部I/0口的擴(kuò)展方法INTR:中斷請求輸出線,高電平有效,送給80C51單片機(jī)的外中斷引腳。當(dāng)81C55的PA口或PB口接收到設(shè)備輸入的數(shù)據(jù)或設(shè)備從緩沖器中取走數(shù)據(jù)時,中斷請求線INTR升高(僅當(dāng)命令寄存器相應(yīng)中斷允許位為1),向CPU請求中斷,CPU對81C55的相應(yīng)I/O口進(jìn)行一次讀寫操作后,INTR自動變?yōu)榈碗娖?。BF:緩沖器滿狀態(tài)信號(輸出),高電平有效。緩沖器存有數(shù)據(jù)時,BF為高電平,否則為低電平。
:選通信號(輸入),低電平有效。數(shù)據(jù)輸入操作時,是外設(shè)送來的選通信號;數(shù)據(jù)輸出操作時,是外設(shè)送來的應(yīng)答信號。978.3外部I/0口的擴(kuò)展方法3.81C55的定時/計數(shù)器(1)定時/計數(shù)器的結(jié)構(gòu)81C55的定時/計數(shù)器是一個14位的減法計數(shù)器,由兩字節(jié)組成。定時/計數(shù)器中的低14位組成計數(shù)器,剩下的兩個高位(M2、M1)用于定義輸出信號波形。定時器格式如下:988.3外部I/0口的擴(kuò)展方法(2)定時/計數(shù)器的使用81C55的定時/計數(shù)器與80C51單片機(jī)芯片內(nèi)部的定時/計數(shù)器在功能上是相同的,同樣具有定時和計數(shù)兩種功能,但是在使用方法上卻有許多不同之處,具體表現(xiàn)在以下幾點:81C55的定時/計數(shù)器是減法計數(shù),而80C51的定時/計數(shù)器則是加法計數(shù),因此確定計數(shù)初值的方法是不同的。80C51的定時/計數(shù)器有多種工作方式,而81C55的定時/計數(shù)器則只有一種固定的工作方式,即:14位計數(shù)。80C51的定時/計數(shù)器有兩種計數(shù)脈沖,當(dāng)工作在定時方式時,由芯片內(nèi)部按機(jī)器周期提供固定頻率的計數(shù)脈沖;而當(dāng)工作在計數(shù)方式時,則從芯片外部引入計數(shù)脈沖,但是,81C55的定時/計數(shù)器不論是定時工作還是計數(shù)工作,都由外部提供計數(shù)脈沖,其信號引腳就是TIMERIN。998.3外部I/0口的擴(kuò)展方法80C51的定時/計數(shù)器,其計數(shù)溢出自動置位TCON寄存器的計數(shù)溢出標(biāo)志位(TFX,X=0或1),供用戶以查詢或中斷方式使用。但81C55的定時/計數(shù)器,計數(shù)溢出時則向芯片外輸出一個信號(TIMEROUT),而且這一輸出信號還有脈沖和方波兩種形式,可由用戶進(jìn)行選擇,由定時/計數(shù)器的M1和M2兩位定義4種輸出信號的波形。這4種輸出信號的波形如表8-14所示。
1008.3外部I/0口的擴(kuò)展方法1018.3外部I/0口的擴(kuò)展方法四、81C55與單片機(jī)的連接81C55的許多引腳可以與80C51單片機(jī)直接連接,表8-15列出了81C55與80C51直接連接的對應(yīng)引腳。
81C55的AD7~AD0是數(shù)據(jù)/地址復(fù)用線,由于81C55內(nèi)部已有鎖存器,可進(jìn)行地址鎖存,因此不需再外加地址鎖存器。1028.3外部I/0口的擴(kuò)展方法81C55的IO/引腳是用于區(qū)分81C55內(nèi)部的RAM單元和端口地址。81C55只有8位地址線(AD7~AD0),但需要尋址的地址單元卻有3個I/O端口及控制/狀態(tài)寄存器、定時器共6個端口和256個RAM單元,共262個地址單元,控制信號IO/就是為了解決這一問題而設(shè)立的。IO/=0,選中81C55內(nèi)部RAM;
IO/=1時,選中81C55的6個端口。80C51單片機(jī)產(chǎn)生IO/信號的有多種方法,不同的產(chǎn)生方法對應(yīng)’著不同的編址方式。1038.3外部I/0口的擴(kuò)展方法例如,采用線選法,以80C51的P2.0接IO/,則81C55與80C51的連接如圖8-24所示。其地址分配見表8-16。1048.3外部I/0口的擴(kuò)展方法例如,采用線選法,以80C51的P2.0接IO/,則81C55與80C51的連接如圖8-24所示。其地址分配見表8-16。1058.3外部I/0口的擴(kuò)展方法五、81C55初始化編程81C55在使用前應(yīng)根據(jù)需要進(jìn)行初始化,初始化的具體內(nèi)容就是寫入控制字或計數(shù)值,以下通過實例說明。1068.3外部I/0口的擴(kuò)展方法【例8-8】試?yán)脠D8-24的81C55與單片機(jī)的連接電路,要求使用定時/計數(shù)器對計數(shù)脈沖進(jìn)行千分頻,即計數(shù)1000后,TIMEOUT端的電平狀態(tài)發(fā)生變化,并重新置數(shù)以產(chǎn)生連續(xù)方波。設(shè)PA口為輸入方式,PB口為輸出方式,PC口為輸入方式,禁止中斷。試編寫81C55初始化程序。解:要編寫初始化程序,首先要確定計數(shù)值和控制字。由于要求輸出連續(xù)方波,因此計數(shù)器的最高二位M2M1=01。計數(shù)器的其他14位裝入計數(shù)值。由于是減法計數(shù)器,所以計數(shù)值應(yīng)為十進(jìn)制數(shù)1000,十六進(jìn)制數(shù)為03E8H。因此,合并M1M2位后,計數(shù)器高位字節(jié)為43H,低位字節(jié)為E8H。此外,按各口的工作方式要求,81C55的控制字應(yīng)為C2H??刂谱指魑粻顟B(tài)的確定方法如表8-17所示。1078.3外部I/0口的擴(kuò)展方法1088.3外部I/0口的擴(kuò)展方法由于圖8-24中81C55的命令/狀態(tài)寄存器的端口地址為4000H,則81C55初始化程序為:MOVDPTR,#4D00H;命令/狀態(tài)寄存器地址MOVA,#0C2H;控制字MOVX@DPTR,A;裝入控制字MOVDPTR,#4004H;計數(shù)器低8位地址MOVA,#0E8H;低8位計數(shù)值MOVX@DPTR,A;寫入計數(shù)值低8位INCDPTR;計數(shù)器高8位地址MOVA,#43H;高8位計數(shù)值MOVX@DPTR,A;寫入計數(shù)值高8位由于控制字的高2位D7D6=11,因此計數(shù)器在裝入計數(shù)值后即開始工作。1098.3外部I/0口的擴(kuò)展方法8.3.482C55可編程接口電路的擴(kuò)展
一、82C55的引腳及結(jié)構(gòu)
82C55是Intel公司生產(chǎn)的一種通用的可編程并行接口芯片,在單片機(jī)系統(tǒng)中被廣泛應(yīng)用。該芯片具有3個可編程并行I/O端口,A口、B口和C口。這3個8位I/O端口的功能完全由程序決定,但每個口都有自己的特點。1108.3外部I/0口的擴(kuò)展方法其組成框圖及引腳如圖8-25所示。(a)82C55引腳圖(b)82C55結(jié)構(gòu)圖1118.3外部I/0口的擴(kuò)展方法
(1)其中引腳26和6分別是電源VCC(+5V)和地線GND。
(2)數(shù)據(jù)總線:D0~D7、PAO~PA7、PB0~PB7、PC0~PC7,此32條數(shù)據(jù)線均為雙向三態(tài),其中DO~D7用于傳送CPU與82C55之間的命令與數(shù)據(jù),PAO~PA7、PBO~PB7、PCO~PC7分別簡稱為A、B、C口,用于82C55與外設(shè)之間傳送數(shù)據(jù)。(3)控制總線::讀控制端。當(dāng)這個引腳為低電平時,82C55輸出數(shù)據(jù)或狀態(tài)信息到CPU,即CPU對82C55進(jìn)行讀操作。:寫控制端。當(dāng)這個引腳為低電平時,82C55接收CPU輸出的數(shù)據(jù)或命令,即CPU對82C55進(jìn)行寫操作。
RESET:復(fù)位控制端。當(dāng)這個引腳為高電平時,82C55復(fù)位。復(fù)位狀態(tài)時所有82C55內(nèi)部寄存器都清零,所有通道都設(shè)置為輸入方式,24條I/O引腳為高阻狀態(tài)。1.82C55的引腳112
8.3外部I/0口的擴(kuò)展方法
(4)尋址線::片選控制端。當(dāng)這個引腳為低電平時,82C55被CPU選中。A1、A0:這是兩條輸入信號線,通常一一對應(yīng)接到單片機(jī)地址總線的的其中任意兩位上。當(dāng)有效時,這兩位的4種組合00、01、10、11分別用來選擇A、B、C口和控制寄存器,所以一片82C55共有4個地址單元。1138.3外部I/0口的擴(kuò)展方法2.82C55的結(jié)構(gòu)82C55可編程并行接口由以下4個邏輯結(jié)構(gòu)組成:(1)數(shù)據(jù)總線驅(qū)動器這是雙向三態(tài)的8位驅(qū)動器,用于和單片機(jī)的數(shù)據(jù)總線相連,以實現(xiàn)單片機(jī)與82C55之間的數(shù)據(jù)傳送。1148.3外部I/0口的擴(kuò)展方法(2)三個并行I/O端口A口:具有一個8位數(shù)據(jù)輸出鎖存/緩沖器和一個8位數(shù)據(jù)輸入鎖存器,是最靈活的輸入/輸出寄存器,為可編程8位輸入/輸出或雙向寄存器。B口:具有一個8位數(shù)據(jù)輸出鎖存/緩沖器和一個8位數(shù)據(jù)輸入緩沖器(不鎖存),為可編程8位輸入/輸出寄存器,但不能雙向輸入/輸出。C口:具有一個8位數(shù)據(jù)輸出鎖存/緩沖器和一個8位數(shù)據(jù)輸入緩沖器(不鎖存),這個口可分為兩個4位口使用。C口除做輸入輸出口使用外,還可以作為A口、B口選通方式操作時的狀態(tài)控制信號。1158.3外部I/0口的擴(kuò)展方法(3)讀/寫控制邏輯它用于管理所有的數(shù)據(jù)、控制字或狀態(tài)字的傳送。它接受單片機(jī)的地址信號和控制信號來控制各個口的工作狀態(tài)。1168.3外部I/0口的擴(kuò)展方法(4)A組和B組控制電路
這是兩組根據(jù)CPU的控制字控制82C55工作方式的電路。每組控制電路從讀、寫控制邏輯接收各種命令,從內(nèi)部數(shù)據(jù)總線接收控制字并發(fā)出適當(dāng)?shù)拿畹较鄳?yīng)的端口。A組控制電路,控制A口及C口的高4位。
B組控制電路,控制B口及C口的低4位。
1178.3外部I/0口的擴(kuò)展方法二、82C55的控制字
82C55的控制字有方式選擇控制字和C口置位/復(fù)位控制字。通過對方式選擇控制字的合理設(shè)置可以設(shè)定82C55各并口的工作方式,通過對82C55的C口的置位/復(fù)位控制字設(shè)置可以設(shè)置PC口任意一位的值。兩個控制字地址相同。通過控制字內(nèi)容的最高位來區(qū)分二者。當(dāng)最高位D7=1時,該控制字為方式控制字;當(dāng)D7=0時,該控制字為C口置位/復(fù)位控制字。1188.3外部I/0口的擴(kuò)展方法方式選擇控制字的格式與定義如圖8-26所示。圖8-2682C55控制字的格式與定義
1198.3外部I/0口的擴(kuò)展方法例如:當(dāng)控制字的內(nèi)容為83H(10000011B)時,82C55的A口被設(shè)置為方式0輸出方式,B口為方式0輸入方式,PC7~PC4為輸出方式,PC3~PC0為輸入方式。C口置位/復(fù)位控制字C口置位/復(fù)位控制字的格式及定義如圖8-27所示。1208.3外部I/0口的擴(kuò)展方法C口具有位操作功能,把一個置/復(fù)位控制字送入82C55的控制寄存器(控制口),就能把C口的某一位置1或清零而不影響其他位的狀態(tài)。例如,將07寫入控制寄存器后,82C55的PC3置1;寫入0EH時PC7復(fù)位為0。
1218.3外部I/0口的擴(kuò)展方法三、82C55的工作方式
82C55有3種工作方式,即方式0、方式1、方式2。方式0(基本輸入/輸出方式)A口、B口及C口的高4位和低4位都可以被設(shè)定為輸入或輸出。作為輸出口時,輸出的數(shù)據(jù)被鎖存;作為輸入口時,輸入的數(shù)據(jù)不鎖存。方式0適用于82C55與外設(shè)之間不需要任何應(yīng)答信號的無條件傳輸數(shù)據(jù)的情況,如讀入鍵盤狀態(tài)或控制發(fā)光二極管的亮滅等情況。方式1(選通輸入/輸出方式)122
8.3外部I/0口的擴(kuò)展方法(1)82C55方式1
方式1是一種采用應(yīng)答聯(lián)絡(luò)的輸入/輸出工作方式,PA口、PB口皆可設(shè)成這種工作方式。在這種方式下,A、B、C三個口將被分為兩組。A組包括A口和C口的高4位,A口可由編程設(shè)定為輸入口或輸出口,C口的高4位則用來作為輸入/輸出操作的控制和同步信號;B組包括B口和C口的低4位,B口可由編程設(shè)定為輸入口或輸出口,C口的低4位則用來作為輸入/輸出操作的控制和同步信號。方式1適用于82C55與外設(shè)之間需要應(yīng)答聯(lián)絡(luò)信號的有條件數(shù)據(jù)傳輸?shù)那闆r,如82C55與打印機(jī)等設(shè)備進(jìn)行數(shù)據(jù)傳輸時,需要知道每次送出的數(shù)據(jù)對方是否接收完等信息,這時與打印機(jī)連接的82C55的相應(yīng)端口應(yīng)采用該方式。1238.3外部I/0口的擴(kuò)展方法(2)方式1條件下PC口的聯(lián)絡(luò)信號功能在方式1下,82C55的PA口和PB口通常用于I/O數(shù)據(jù)的傳送,PC口用作PA口和PB口的應(yīng)答聯(lián)絡(luò)信號線,以利用中斷方式來傳送I/O數(shù)據(jù)。PC口的PC7~PC0的應(yīng)答聯(lián)絡(luò)線是規(guī)定好的,不作應(yīng)答聯(lián)絡(luò)用的仍可以作I/O口。1248.3外部I/0口的擴(kuò)展方法1258.3外部I/0口的擴(kuò)展方法以下介紹方式1輸入/輸出時的應(yīng)答聯(lián)絡(luò)信號與工作原
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年籃球運動場地安全設(shè)施安裝與檢修合同3篇
- 2025版土地整治工程土方運輸居間代理協(xié)議3篇
- 2025版教育培訓(xùn)投資入股合同范本大全3篇
- 2025年度個人與個人車輛購置借款合同2篇
- 2025版教職工宿舍分配與使用管理合同3篇
- 二零二五版留置車輛維修工程借款協(xié)議4篇
- 2024金融科技支付系統(tǒng)集成與運營合同
- 二零二五年度體育賽事官方運動服贊助合同示例3篇
- 渣土運輸及循環(huán)經(jīng)濟(jì)承包合同(二零二五年度)3篇
- 2025年達(dá)人帶貨直播平臺合作協(xié)議書2篇
- 2024企業(yè)答謝晚宴會務(wù)合同3篇
- 電氣工程及其自動化專業(yè)《畢業(yè)設(shè)計(論文)及答辯》教學(xué)大綱
- 《客艙安全管理與應(yīng)急處置》課件-第14講 應(yīng)急撤離
- 中華人民共和國文物保護(hù)法
- 節(jié)前物業(yè)安全培訓(xùn)
- 阿里巴巴國際站:2024年珠寶眼鏡手表及配飾行業(yè)報告
- 高甘油三酯血癥相關(guān)的器官損傷
- 手術(shù)室護(hù)士考試題及答案
- 牙膏項目創(chuàng)業(yè)計劃書
- 單位食堂供餐方案
- DB42-T 2204-2024 湖沼濕地溫室氣體通量監(jiān)測技術(shù)規(guī)范
評論
0/150
提交評論