單片機(jī)原理及應(yīng)用第6單元單片機(jī)并行總線擴(kuò)展_第1頁
單片機(jī)原理及應(yīng)用第6單元單片機(jī)并行總線擴(kuò)展_第2頁
單片機(jī)原理及應(yīng)用第6單元單片機(jī)并行總線擴(kuò)展_第3頁
單片機(jī)原理及應(yīng)用第6單元單片機(jī)并行總線擴(kuò)展_第4頁
單片機(jī)原理及應(yīng)用第6單元單片機(jī)并行總線擴(kuò)展_第5頁
已閱讀5頁,還剩146頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第6單元單片機(jī)并行總線擴(kuò)展理解并行擴(kuò)展總線的方法。了解程序存儲器和數(shù)據(jù)存儲器的根本知識。掌握存儲器擴(kuò)展的典型方法。理解單片機(jī)簡單I/O口和可編程I/O口的根本概念。掌握用TTL芯片進(jìn)行輸入/輸出口和總線驅(qū)動器的擴(kuò)展方法及根本程序的編制。理解81C55可編程并行接口的根本功能。掌握81C55芯片和單片機(jī)的典型連接電路及I/O接口程序的編制。應(yīng)知應(yīng)會要求:單片機(jī)片內(nèi)集成了計算機(jī)最根本的功能部件,如CPU、RAM、ROM、中斷、定時/計數(shù)器、并行口和串行口等,結(jié)構(gòu)緊湊、使用簡單,在一些功能要求較簡單的場合,直接使用單片機(jī)的片內(nèi)資源及少量的外接電路就可以進(jìn)行控制。對于較復(fù)雜的場合,還是需要對單片機(jī)系統(tǒng)進(jìn)行擴(kuò)展,以彌補(bǔ)片內(nèi)硬件資源的缺乏。本單元主要介紹并行總線擴(kuò)展技術(shù),包括存儲器的擴(kuò)展和I/O接口擴(kuò)展。6.1并行擴(kuò)展總線單片機(jī)并行擴(kuò)展總線遵守三總線原那么〔地址總線AB、數(shù)據(jù)總線DB、控制總線CB〕,所有外部芯片都通過這三組總線進(jìn)行擴(kuò)展。6.1.1 并行擴(kuò)展總線方法圖6-1單片機(jī)并行擴(kuò)展總線單片機(jī)由于受引腳數(shù)的限制,在進(jìn)行并行總線擴(kuò)展時,P0口和P2口固定地用來充當(dāng)?shù)刂房偩€和數(shù)據(jù)總線,不再作為I/O口使用。地址總線由P0口提供的低8位地址A7~A0和P2口提供的高8位地址A15~A8組成,總寬度為16位;數(shù)據(jù)總線D7~D0由P0口提供,寬度為8位;控制總線ALE、、、、等信號組成。其中,ALE作地址鎖存選通信號,實(shí)現(xiàn)低8位地址的鎖存〔P0口是數(shù)據(jù)、地址分時復(fù)用〕;作程序存儲器的讀選擇信號;作內(nèi)外程序存儲器的選擇信號,=0,只訪問外部程序存儲器,外部程序存儲器地址從0000H開始設(shè)置;=1,內(nèi)外存儲器統(tǒng)一編址,單片機(jī)執(zhí)行內(nèi)部程序存儲器中的命令,超出內(nèi)部ROM地址范圍,那么自動執(zhí)行片外程序存儲器中的命令。/作外部數(shù)據(jù)存儲器和I/O接口的讀/寫選通信號,當(dāng)執(zhí)行片外數(shù)據(jù)存儲器和I/O口的操作指令MOVX時,這兩個信號自動生成。注意,在實(shí)際應(yīng)用中,可根據(jù)系統(tǒng)擴(kuò)展的需要來確定P2口需要引出的口線數(shù),有時也可不需要P2口線。常用的地址鎖存器主要有74LS273、74LS373、8282等。74LS373是8D三態(tài)同相鎖存器,其引腳圖和功能表如圖6-2所示。當(dāng)門控端G輸入正脈沖,且輸出控制低電平有效時,D端的數(shù)據(jù)被鎖存到鎖存器的輸出端,當(dāng)G為低電平時,輸出Q保持不變;當(dāng)為高電平時,輸出Q是高阻態(tài)。圖6-274LS373引腳圖和功能表6.1.2 地址譯碼方法單片機(jī)擴(kuò)展多片外圍芯片時,CPU是根據(jù)地址訪問這些外圍芯片的,即由地址線上的信息來選中相應(yīng)的外圍芯片的對應(yīng)單元進(jìn)行讀寫操作。CPU發(fā)出的地址信號必須實(shí)現(xiàn)兩種選擇,首先是對芯片的選擇,也稱為片選,由高位地址線通過譯碼電路產(chǎn)生,這是需要自行設(shè)計的局部;被選中的芯片單元地址由低位地址譯碼確定,這局部譯碼電路不需用戶設(shè)計。片選信號產(chǎn)生的方法主要有線選法、全譯碼法和局部譯碼法等。1. 線選法線選法就是直接將系統(tǒng)高位地址線連接到所擴(kuò)展芯片的片選端,作為芯片的片選信號,一般一根地址線對應(yīng)一個片選端。片選端一般以、等符號表示,低電平有效。擴(kuò)展外圍芯片時,所用地址線最多為A0~Ai,那么片選線為A15~Ai+1。例如,i=12,那么只有A15、A14、A13可作為片選信號。圖6-3所示為線選法擴(kuò)展三片存儲器,各芯片對應(yīng)的地址范圍分別是:6000H~7FFFH、0A000H~0BFFFH、0C000H~0DFFFH,每塊芯片所占地址空間均為8KB,地址范圍的具體分析方法可參見6.2節(jié)存儲器擴(kuò)展。線選法不需另加外圍譯碼電路,結(jié)構(gòu)簡單,但各芯片間地址空間不連續(xù),同時不能充分利用CPU的最大地址空間,適用于比較簡單的系統(tǒng)擴(kuò)展。圖6-3線選法示意圖2. 全譯碼法全譯碼法是將片內(nèi)選址后剩余的高位地址線全部參與對芯片的譯碼,譯碼器的輸出再作為芯片的片選信號。其輸入地址線N與輸出狀態(tài)M之間的關(guān)系為,即2根地址線可以譯出4種狀態(tài),3根地址線可以譯出8種狀態(tài),以此類推。常用的譯碼芯片有74LS139〔雙2/4譯碼器〕、74LS138〔3/8譯碼器〕和74LS154〔4/16譯碼器〕。圖6-474LS138引腳圖表6-174LS138功能表控制端編碼端輸出E3CBA~10000011111110(僅有效)1

0000111111101(僅有效)10001011111011(僅有效)10001111110111(僅有效)10010011101111(僅有效)10010111011111(僅有效)10011010111111(僅有效)10011101111111(僅有效)非上述情況×××11111111(全無效)圖6-5為用74LS138譯碼器實(shí)現(xiàn)的4KB×3片的全譯碼電路。74LS138譯碼器的編碼端C、B、A分別接A14、A13、A12,輸出端僅用3根,、、分別接1#、2#、3#芯片的片選端,74LS138譯碼器的控制端、接A15,E3接高電平。三個存儲芯片的地址空間分別為0000H~0FFFH、1000H~1FFFH、2000H~2FFFH,地址范圍的具體分析方法也可參見6.2節(jié)存儲器擴(kuò)展。圖6-5全譯碼法示意圖全譯碼法和線選法相比,硬件電路稍微復(fù)雜一些,但可充分利用存儲空間,還可有效防止地址空間重疊現(xiàn)象。譯碼法的另一個優(yōu)點(diǎn)是譯碼器輸出端可保存假設(shè)干端線,便于系統(tǒng)的后續(xù)擴(kuò)展。3.局部地址譯碼法局部地址譯碼法是將高位地址線的一局部參與譯碼,另一局部那么懸空暫時不用。這樣既能利用單片機(jī)較大的地址空間,又可以簡化譯碼電路,但存在存儲器空間的重疊。6.1.3 總線驅(qū)動微機(jī)系統(tǒng)總線的負(fù)載能力是有限的。單片機(jī)的P0口可以驅(qū)動8個LSTTL電路,其它口能夠驅(qū)動4個LSTTL電路。當(dāng)總線的實(shí)際負(fù)載超過承受能力時,必須接入總線驅(qū)動器。單片機(jī)進(jìn)行系統(tǒng)擴(kuò)展時,有可能需要增加驅(qū)動能力的總線有:數(shù)據(jù)總線、地址總線和一局部控制總線〔、、〕。地址總線和控制總線上的信息流向是單向的,要擴(kuò)展的總線驅(qū)動器只需是單向的即可。常用的單向八總線驅(qū)動器有74LS240、74LS244等。數(shù)據(jù)總線上的信息流向是雙向的,要擴(kuò)展的總線驅(qū)動器也應(yīng)是雙向的三態(tài)門,常用的雙向總線驅(qū)動器如74LS245。74LS244是8同相三態(tài)緩沖器/線驅(qū)動器,片內(nèi)有兩組三態(tài)緩沖器。每組4個,輸入分別是1A1~1A4和2A1~2A4,輸出分別是1Y1~1Y41和2Y1~1Y4〔應(yīng)該為:1Y1~1Y4和2Y1~2Y4〕,分別由一個門控信號和控制,其引腳圖和功能表如圖6-6所示。圖6-674LS244引腳圖和功能表圖6-7為74LS245的引腳圖和功能表,圖中,為允許端,DIR為方向控制。圖6-774LS245引腳圖和功能表74LS244和74LS245的驅(qū)動能力相同,高電平時能輸出15mA電流,低電平時能吸收24mA電流,相當(dāng)于能驅(qū)動15個LSTTL電路。單片機(jī)擴(kuò)展74LS244和74LS245作為總線驅(qū)動器的連接圖如圖6-8所示。圖中74LS244的和固定接地,使驅(qū)動器處于開通狀態(tài)。74LS245的固定接地,其DIR端由單片機(jī)的和相“與〞后控制。當(dāng)CPU執(zhí)行讀外部數(shù)據(jù)存儲器〔=0〕或訪問外部程序存儲器〔=0〕時,DIR=0,驅(qū)動器導(dǎo)通方向?yàn)閺耐獠康絻?nèi)部總線;否那么,=1,=1,使DIR=1,驅(qū)動器導(dǎo)通方向?yàn)閺膬?nèi)部總線向外,可供CPU向外傳送數(shù)據(jù)。圖6-8擴(kuò)展74LS244和74LS245作總線驅(qū)動器本節(jié)思考題:單片機(jī)并行擴(kuò)展總線,為什么P0口要接一個8位鎖存器74LS373,而P2口卻可以不接?單片機(jī)什么情況下需要增加總線驅(qū)動器?對總線驅(qū)動器有什么要求?6.2 存儲器擴(kuò)展當(dāng)單片機(jī)片內(nèi)存儲容量不夠時,可對存儲器進(jìn)行外部擴(kuò)展。單片機(jī)存儲器的擴(kuò)展包括程序存儲器和數(shù)據(jù)存儲器的擴(kuò)展,最多可擴(kuò)展64KB的程序存儲器和64KB的數(shù)據(jù)存儲器。具體擴(kuò)充容量根據(jù)系統(tǒng)的要求而定。6.2.1 程序存儲器的擴(kuò)展當(dāng)單片機(jī)片內(nèi)程序存儲器容量不夠時,可以外接程序存儲器進(jìn)行擴(kuò)展,51系列單片機(jī)最多可以擴(kuò)充至64KB容量〔片內(nèi)外統(tǒng)一編址〕。1.程序存儲器常用芯片作為片外ROM的芯片主要有可編程只讀存儲器EPROM和電擦除的可編程只讀存儲器EEPROM。〔1〕EPROM存儲器EPROM是電寫紫外線擦除的只讀存儲器,芯片上有一個石英窗口,在紫外線下照射20分鐘左右,存儲器的所有單元信息全部變?yōu)椤?〞,即擦除了所有信息,這時可通過相應(yīng)的編程器將程序固化到芯片中。常用的EPROM芯片主要有2716〔2K×8位〕、2732〔4K×8位〕、2764〔8K×8位〕、27128〔16K×8位〕、27256〔32K×8位〕、27512〔64K×8位〕等。芯片的引腳圖如表6-2所示。表6-2常用EPROM芯片引腳2725627128276427322716引腳引腳2716273227642712827256VppVppVpp128VccVccVccA12A12A12227A14A7A7A7A7A7326VccVccNCA13A13A6A6A6A6A6425A8A8A8A8A8A5A5A5A5A5524A9A9A9A9A9A4A4A4A4A4623VppA11A11A11A11A3A3A3A3A3722A2A2A2A2A2821A10A10A10A10A10A1A1A1A1A1920A0A0A0A0A01019D7D7D7D7D7D0D0D0D0D01118D6D6D6D6D6D1D1D1D1D11217D5D5D5D5D5D2D2D2D2D21316D4D4D4D4D4GNDGNDGNDGNDGND1415D3D3D3D3D3*注意,表中2716和2732是24腳封裝,表中標(biāo)示的引腳3-14實(shí)際對應(yīng)的引腳編號為1-12,引腳15-28實(shí)際對應(yīng)的引腳編號為13-24。EPROM2764的工作方式如表6-3所示。其余芯片的工作方式根本類似,具體可參閱相關(guān)手冊。表6-32764工作方式工作方式引腳VppVccD7~D0讀出001VccVcc輸出維持1××VccVcc高阻編程01負(fù)脈沖VppVcc輸入編程校驗(yàn)001VppVcc輸出編程禁止1××VppVcc高阻

工作方式說明:讀出———當(dāng)片選信號和輸出允許信號都有效〔均為低電平〕,而編程信號無效〔為高電平〕時,芯片處于讀出數(shù)據(jù)的工作狀態(tài)。維持———無效,就使芯片進(jìn)入維持方式。此時數(shù)據(jù)線處于高阻狀態(tài),芯片功耗降為200mW。編程———當(dāng)有效而無效,編程電源Vpp端外接12.5V〔有些型號芯片為21V〕電壓,編程脈沖輸入端參加寬度為50ms〔45~55ms〕的TTL低電平編程脈沖時,芯片處于編程工作方式。需要注意的是,VPP不能超過允許值〔編程工作電流不超過50mA〕,否那么會損壞芯片。編程校驗(yàn)———此方式工作在編程完成之后,以檢驗(yàn)編程結(jié)果是否正確。各信號狀態(tài)和讀出方式近似,但為編程電壓。編程禁止———VPP雖然接編程電壓,但無效時,不能進(jìn)行編程操作?!?〕EEPROM存儲器EEPROM是電寫電擦除的只讀存儲器,既有ROM的非易失性,又具有RAM的隨機(jī)讀/寫特性,每個單元可以重復(fù)進(jìn)行1萬次改寫,保存信息的時間長達(dá)20年。EEPROM芯片有兩類接口,并行接口和串行接口。并行接口EEPROM芯片有2816〔2K×8位〕、2817〔2K×8位〕、2864〔8K×8位〕等,具有容量大、速度快、功耗大、讀寫簡單等特點(diǎn),芯片引腳如表6-4所示。串行EEPROM介紹見下章。表6-4常用EEPROM芯片引腳2864A2817A/28172816A/2816引腳引腳2816A/28162817A/28172864ANC128VccVccA12NC227A7A7A7326VccNCNCA6A6A6425A8A8A8A5A5A5524A9A9A9A4A4A4623

(Vpp)A11A11A3A3A3722A2A2A2821A10A10A10A1A1A1920A0A0A01019D7D7D7D0D0D01118D6D6D6D1D1D11217D5D5D5D2D2D21316D4D4D4GNDGNDGND1415D3D3D3圖中涉及的引腳符號功能如下:Ai~A0:地址輸入線,i=10〔2817A〕或12〔2864A〕。D7~D0:雙向三態(tài)數(shù)據(jù)線。:片選信號輸入端,低電平有效。:選通信號輸入端,低電平有效。:寫選通信號輸入端,低電平有效。:狀態(tài)輸出線,在寫操作時,其低電平不是“忙〞,寫入完畢后該線為高電平,表示“準(zhǔn)備好〞。Vcc:主電源,+5V。GND:接地端。EEPROM對硬件電路無特殊要求,操作簡單。型號中不帶〞A〞的為EEPROM早期產(chǎn)品,其擦/寫電壓高于5V,而型號中帶“A〞的改型芯片已經(jīng)將高壓電源集成在芯片內(nèi)部,可以直接使用單片機(jī)系統(tǒng)的+5V電源在線擦除和改寫。需要注意的是,EEPROM的讀、寫、擦除操作時間不一樣,讀出速度快,與EPROM相當(dāng),但寫入和擦除速度比讀出速度慢得多,實(shí)際使用時要保證足夠的擦除和寫入時間?,F(xiàn)以2816A為例,說明其工作方式,表6-5為2816A工作方式。表6-52816A工作方式工作方式引腳D7~D0讀出001輸出維持1××高阻字節(jié)擦除010DIN=VIN字節(jié)寫入011DIN整片擦除1+10V~+15V0DIN=VIN不操作011高阻工作方式說明如下:讀出———當(dāng)片選信號和輸出允許信號都有效〔均為低電平〕且寫入允許為高電平時,芯片處于讀出數(shù)據(jù)的工作狀態(tài)。維持———當(dāng)為高電平時,芯片進(jìn)入維持方式。此時芯片功耗下降。字節(jié)擦除———當(dāng)和為低電平而為高電平時,將數(shù)據(jù)線上的全“1〞信息寫入被選通的擦除單元,即實(shí)現(xiàn)字節(jié)擦除。2816A的字節(jié)擦除電壓為5V,所需時間最長為15ms。字節(jié)寫入———字節(jié)寫入方式與字節(jié)擦除方式相似,只是數(shù)據(jù)線上傳送的是要寫入的信息。寫入電壓和所需時間與字節(jié)擦除方式相同。整片擦除———這種方式與字節(jié)擦除的區(qū)別是在端加了+10V~+15V電壓。不操作———與字節(jié)擦/寫方式相比,此時無效,因此不進(jìn)行擦/寫操作,數(shù)據(jù)線為高阻狀態(tài)。2817A的工作方式根本上與2816A相同,其區(qū)別主要有兩點(diǎn)。一是2817A的字節(jié)操作是在字節(jié)寫入方式開始時自動進(jìn)行的,因此沒有單獨(dú)的字節(jié)擦除方法,在進(jìn)行字節(jié)改寫時不需要實(shí)現(xiàn)人為安排字節(jié)擦除操作;二是2817A的RDY/BUSY信號寫入過程中為低電平,在其他工作方式下為高阻狀態(tài),由此能夠判斷字節(jié)寫入操作是否已經(jīng)完成。2. 程序存儲器擴(kuò)展實(shí)例程序存儲器的擴(kuò)展遵守三總線原那么。數(shù)據(jù)線由P0口提供。地址線的第8位也由P0口提供〔分時復(fù)用〕,高位地址視程序存儲器的容量而定,如高位需要4根,那么順序由P2.0~P2.3提供。單片機(jī)控制線的ALE與地址鎖存器74LS373的門控端G相連,專用于鎖存低8為地址;單片機(jī)的與EPROM的輸出允許端相連;片選信號根據(jù)具體情況可選擇線選法、譯碼法或局部譯碼法。具體擴(kuò)展例如如下?!?〕線選法擴(kuò)展EPROM存儲器圖6-9為線選法擴(kuò)展三片2732EPROM,片外擴(kuò)展容量到達(dá)12KB。表6-6為三片2732的地址分配。圖6-9線選法擴(kuò)展三片EPROM電路表6-6線選法擴(kuò)展三片2732存儲器芯片地址分配表芯片二進(jìn)制表示地址范圍片外地址線片外地址線P2口P2口P1口76543210765432101#×1100000000000006000H~6FFFH…1111111111112#×1010000000000005000H~5FFFH…1111111111113#×0110000000000003000H~3FFFH…111111111111注:圖中的“×〞表示二進(jìn)制數(shù)為任意態(tài),可以為1也可以為0。由地址分配表可以看出,三片程序存儲器的地址不連續(xù),并且由于P2.7地址線沒有用,可以為任意態(tài),那么1#芯片對應(yīng)的地址范圍可以為6000H~6FFFH,也可以為0E000H~0EFFFH,出現(xiàn)了地址重疊現(xiàn)象,同理,2#和3#芯片也有地址重疊現(xiàn)象。地址不連續(xù)和地址重疊現(xiàn)象是線選法固有的問題,可能會浪費(fèi)單片機(jī)的地址空間,因此線選法只適用于小型的、比較簡單的系統(tǒng)擴(kuò)展?!?〕全譯碼法擴(kuò)展EEPROM存儲器圖6-10為全碼法擴(kuò)展三片2817EEPROM,片外擴(kuò)展容量到達(dá)6KB。使用74LS138譯碼器,譯碼輸出、、分別連接1#、2#、3#EEPROM芯片。各存儲器相應(yīng)的地址范圍如表6-7所示。圖6-10全選法擴(kuò)展三片EEPROM電路表6-7全譯碼法擴(kuò)展三片2817存儲器芯片地址分配表

芯片二進(jìn)制表示地址范圍片外地址線片內(nèi)地址線P2口P2口P0口76543210765432101#00000000000000000000H~07FFH…111111111112#00001000000000000800H~0FFFH…111111111113#00010000000000001000H~17FFH…11111111111從圖6-10可以看出,P2口剩余的高位地址線全部參與了譯碼器工作,因此可以保證每片存儲器地址的唯一性,防止地址空間重疊;合理選擇譯碼器輸出端和存儲器片選端的連接,可以保證地址的連續(xù)性。因此,全譯碼法需要增加一片譯碼芯片,但在需要較多片選端的較復(fù)雜的系統(tǒng)應(yīng)用中有一定的優(yōu)點(diǎn)。需要指出的是,隨著電子技術(shù)的飛速開展,大容量EPROM芯片價格大幅度下降,甚至比小容量EPROM還要低廉,具體存儲器擴(kuò)展時,應(yīng)盡量選擇容量大的芯片,同時應(yīng)根據(jù)應(yīng)用環(huán)境選擇適宜型號,并考慮其兼容性,使系統(tǒng)電路簡單,減少芯片組數(shù)量,提高系統(tǒng)穩(wěn)定性。本節(jié)的內(nèi)容主要是介紹一種并行擴(kuò)展的思路。本書所講授的P89C5X系列單片機(jī)的許多型號片內(nèi)已經(jīng)集成了一定容量的Flash存儲器,許多應(yīng)用系統(tǒng)都不再需要外擴(kuò)ROM。

6.2.2 數(shù)據(jù)存儲器的擴(kuò)展數(shù)據(jù)存儲器也稱為隨機(jī)存儲器RAM。單片機(jī)片內(nèi)的數(shù)據(jù)存儲器主要作為工作存放器、堆棧、軟件標(biāo)志和數(shù)據(jù)緩沖器使用。在一般應(yīng)用情況下,片內(nèi)數(shù)據(jù)存儲器能夠滿足系統(tǒng)的要求,但在進(jìn)行大量數(shù)據(jù)操作的系統(tǒng)種中,需要外擴(kuò)數(shù)據(jù)存儲器。1. 數(shù)據(jù)存儲器常用芯片隨機(jī)存儲器:動態(tài)RAM〔DRAM:DynamicRandomAccessMemory,即動態(tài)隨機(jī)存取存儲器〕靜態(tài)RAM〔SRAM:Staticrandomaccessmemory,即靜態(tài)隨機(jī)存取存儲器〕單片機(jī)系統(tǒng)常用的是SRAM,典型產(chǎn)品有6116〔2K×8位〕、6264〔8K×8位〕、62128〔16K×8位〕、62256〔32K×8位〕等。其引腳排列如表6-8所示。622566212862646116引腳引腳611662646212862256A14NCVpp128VccVccVccA12A12A12227A7A7A7A7326VccCSA13A13A6A6A6A6425A8A8A8A8A5A5A5A5524A9A9A9A9A4A4A4A4623A11A11A11A3A3A3A3722A2A2A2A2821A10A10A10A10A1A1A1A1920A0A0A0A01019D7D7D7D7D0D0D0D01118D6D6D6D6D1D1D1D11217D5D5D5D5D2D2D2D21316D4D4D4D4GNDGNDGNDGND1415D3D3D3D3*注意,表中6116是24腳封裝,表中標(biāo)示的引腳3-14實(shí)際對應(yīng)的引腳編號為1-12,引腳15-28實(shí)際對應(yīng)的引腳編號為13-24。表6-8常用SRAM芯片引腳表中涉及的引腳符號功能如下:Ai~A0:地址輸入線,i=10、12、13、14〔6116/6264/62128/62256〕。D7~D0:雙向三態(tài)數(shù)據(jù)線。:片選信號輸入端,低電平有效〔6264還有一個片選信號CS,高電平有效〕。:讀選通信號輸入端,低電平有效。:寫選通信號輸入端,低電平有效。CS:6264的片選信號輸入端,高電平有效,可用于掉電保護(hù)。VCC:主電源,+5V。GND:接地端。常用RAM芯片的工作方式見表6-9所示。表6-9常用RAM芯片的工作方式工作方式引腳D7~D0讀出001輸出寫入010輸入維持1××高阻工作方式中有兩點(diǎn)需要注意。一是和不能同時有效;二是6264有兩個片選信號和CS,當(dāng)兩個信號同時有效〔為低單片機(jī),CS為高電平〕時,芯片工作,當(dāng)兩個片選信號有一個無效時,芯片不工作,D7~D0高阻態(tài)。2.數(shù)據(jù)存儲器擴(kuò)展實(shí)例數(shù)據(jù)存儲器的擴(kuò)展一樣遵守三總線原那么。在擴(kuò)展時,數(shù)據(jù)存儲器和程序存儲器共用數(shù)據(jù)總線和地址總線,但數(shù)據(jù)存儲器使用、分別作為讀、寫的控制信號,訪問外部RAM時用MOVX指令。片選信號的擴(kuò)展和程序存儲器的擴(kuò)展方法一樣。圖6-13為單片機(jī)擴(kuò)展一片RAM芯片6264的典型電路,圖中6264的接片選信號,而CS那么接到高電平上。表6-10為6264的地址空間分配情況。圖6-11單片機(jī)擴(kuò)展一片6264典型電路表6-10單片機(jī)擴(kuò)展一片6264存儲器芯片地址分配表芯片二進(jìn)制表示地址范圍片外地址線片內(nèi)地址線P2口P2口P0口765432107654321062640××00000000000006000H~7FFFH…11111111111116.2.3同時擴(kuò)展程序存儲器和數(shù)據(jù)存儲器圖6-12為全碼法擴(kuò)展兩片2764EPROM和兩片6264RAM。從圖中可以看出,程序存儲器和數(shù)據(jù)存儲器共用了數(shù)據(jù)總線和地址總線,通過控制信號和的不同來分別訪問ROM和RAM。各存儲器相應(yīng)的地址范圍如表6-11所示。圖6-12同時擴(kuò)展ROM和RAM的電路表6-11同時擴(kuò)展二片2764和6264存儲器芯片地址分配表芯片二進(jìn)制表示地址范圍片外地址線片內(nèi)地址線P2口P2口P0口765432107654321027641#00000000000000000000H~1FFFH…111111111111127642#00100000000000002000H~3FFFH…111111111111162641#00000000000000000000H~1FFFH…62642#00100000000000002000H~3FFFH…1111111111111從表6-11可以看出,2764的1#芯片和6264的1#芯片地址重疊,2764的2#芯片和6264的2#芯片地址重疊,但因?yàn)槌绦虼鎯ζ骱蛿?shù)據(jù)存儲器的控制信號不一樣,選通ROM用信號,指令用MOVC類;選通RAM用和信號,指令用MOVX類,因此不會發(fā)生操作混亂的現(xiàn)象。本節(jié)思考題1.采用線選法并行擴(kuò)展多片存儲芯片時,為什么會出現(xiàn)地址空間不連續(xù)和“地址重疊〞現(xiàn)象?采用譯碼法是否一定可以消除這兩種現(xiàn)象?2.當(dāng)單片機(jī)應(yīng)用系統(tǒng)中程序存儲器和數(shù)據(jù)存儲器地址重疊時,它們的內(nèi)容讀取是否會發(fā)生沖突,為什么?6.3 并行I/O口擴(kuò)展單片機(jī)與外部設(shè)備〔鍵盤、顯示器等〕之間要進(jìn)行數(shù)據(jù)傳送必須要有輸入/輸出接口〔簡稱I/O接口〕,數(shù)據(jù)傳送的方式有并行傳送和串行傳送,本節(jié)主要介紹并行數(shù)據(jù)傳送,即多位數(shù)據(jù)在多條I/O口線上同時傳送的方式。單片機(jī)共有4個八位的并行口,在實(shí)際應(yīng)用系統(tǒng)中,P0口和P2口經(jīng)常用來構(gòu)造地址/數(shù)據(jù)線,留給用戶使用的I/O口只有P1口和未用作第二功能的P3口的局部口線,這往往不能滿足要求,因此,在許多情況下擴(kuò)展I/O口是必需的?,F(xiàn)在,許多I/O接口已經(jīng)系列化、標(biāo)準(zhǔn)化,并有可編程I/O芯片可以選擇。6.3.1I/O接口功能和數(shù)據(jù)傳送1.I/O接口的功能并行接口與單片機(jī)及外設(shè)連接的示意圖如圖6-13所示。從圖可以看出,單片機(jī)與外設(shè)間的數(shù)據(jù)傳送,實(shí)質(zhì)上是CPU與I/O接口間的數(shù)據(jù)傳送。I/O接口電路中能夠被CPU直接訪問的存放器稱為I/O端口。一個I/O接口芯片可以包含幾個I/O端口,包括可以輸入/輸出數(shù)據(jù)的數(shù)據(jù)端口、用來接收CPU命令的控制端口及提供各種狀態(tài)供CPU查詢的狀態(tài)端口。圖6-13單片機(jī)與I/O設(shè)備連接示意圖單片機(jī)I/O接口的功能如下:〔1〕對單片機(jī)輸出數(shù)據(jù)的鎖存因?yàn)閱纹瑱C(jī)對數(shù)據(jù)的處理速度比I/O設(shè)備快得多,因此單片機(jī)對I/O設(shè)備的訪問時間比I/O設(shè)備對數(shù)據(jù)的處理時間短得多,為了解決單片機(jī)與I/O口的速度協(xié)調(diào)問題,I/O端口要具有鎖存數(shù)據(jù)總線上瞬間出現(xiàn)的數(shù)據(jù)的能力?!?〕對單片機(jī)輸入設(shè)備的三態(tài)緩沖單片機(jī)系統(tǒng)的數(shù)據(jù)總線是所有I/O設(shè)備分時復(fù)用的。設(shè)備傳送數(shù)據(jù)時占用總線,不傳送數(shù)據(jù)時應(yīng)該和總線保持隔離狀態(tài),即對總線呈現(xiàn)高阻態(tài)。利用I/O接口的三態(tài)緩沖功能,可以實(shí)現(xiàn)I/O設(shè)備與數(shù)據(jù)總線的隔離,從而實(shí)現(xiàn)I/O設(shè)備的總線共享。〔3〕信號轉(zhuǎn)換由于I/O設(shè)備的多樣性,必須利用I/O接口實(shí)現(xiàn)單片機(jī)與I/O設(shè)備間信號類型〔數(shù)字與模擬、電流與電壓〕、信號電平〔高與低、正與負(fù)〕、線號格式〔并行與串行〕等的轉(zhuǎn)換?!?〕時序協(xié)調(diào)單片機(jī)輸入數(shù)據(jù)時,只有在確知輸入設(shè)備已經(jīng)向I/O接口提供了有效的數(shù)據(jù)后,才能進(jìn)行讀操作;單片機(jī)輸出數(shù)據(jù)時,只有在確知輸出設(shè)備已做好了接收數(shù)據(jù)的準(zhǔn)備后,才能堅持寫操作。不同的I/O設(shè)備的定時與控制邏輯是不同的,且與CPU的時序往往是不一致的,因此需要I/O接口進(jìn)行時序的協(xié)調(diào)。2.單片機(jī)與I/O設(shè)備的數(shù)據(jù)傳送方式單片機(jī)與I/O設(shè)備進(jìn)行數(shù)據(jù)交換的方式主要有無條件傳送、查詢狀態(tài)傳送以及中斷傳送方式傳送?!?〕無條件傳送無條件傳送方式不測試I/O設(shè)備的狀態(tài)CPU要進(jìn)行數(shù)據(jù)輸入時,認(rèn)為數(shù)據(jù)端口的數(shù)據(jù)已經(jīng)準(zhǔn)備好,即輸入設(shè)備的數(shù)據(jù)已送到I/O接口的數(shù)據(jù)端口,這時單片機(jī)可以直接執(zhí)行輸入指令;CPU要進(jìn)行數(shù)據(jù)輸出時,所選數(shù)據(jù)端口必須為空,即數(shù)據(jù)已被輸出設(shè)備取走,數(shù)據(jù)端口已經(jīng)處于準(zhǔn)備接受數(shù)據(jù)的狀態(tài),這時單片機(jī)可以直接執(zhí)行輸出指令。無條件傳送方式程序編寫簡單,適用于簡單的I/O設(shè)備〔如開關(guān)、LED顯示器、繼電器等〕的操作,或者I/O設(shè)備的定時固定〔或〕的場合?!?〕查詢狀態(tài)傳送查詢狀態(tài)傳送時,單片機(jī)在執(zhí)行輸入/輸出指令前,首先要查詢I/O設(shè)備的狀態(tài)端口的狀態(tài)。數(shù)據(jù)輸入時,用輸入狀態(tài)指示要輸入的數(shù)據(jù)是否已經(jīng)“準(zhǔn)備就緒〞,假設(shè)“準(zhǔn)備就緒〞,可執(zhí)行輸入指令;數(shù)據(jù)輸出時,用輸出狀態(tài)指示輸出設(shè)備是否“空閑〞,假設(shè)“空閑〞,可執(zhí)行輸出指令。否那么,單片時機(jī)一直進(jìn)行查詢。查詢狀態(tài)傳送的優(yōu)點(diǎn)是不需額外的硬件開銷,當(dāng)單片機(jī)工作任務(wù)較輕時,可以較好的協(xié)調(diào)慢速I/O設(shè)備與單片機(jī)之間的速度差異問題;缺點(diǎn)是單片機(jī)必須不斷測試I/O設(shè)備的狀態(tài),直至I/O設(shè)備為傳送的數(shù)據(jù)準(zhǔn)備就緒時為止。這種循環(huán)等待方式花費(fèi)時間較多,降低了單片機(jī)的運(yùn)行效率?!?〕中斷傳送方式采用中斷傳送方式時,當(dāng)外設(shè)數(shù)據(jù)未“準(zhǔn)備就緒〞或不“空閑〞時,CPU不用去等待,可以處理CPU現(xiàn)行程序;當(dāng)外設(shè)數(shù)據(jù)“準(zhǔn)備就緒〞或“空閑〞,要求CPU輸入或輸出數(shù)據(jù)時,使單片機(jī)的外中斷引腳有效,向CPU申請中斷,當(dāng)CPU對應(yīng)的中斷是開放的,CPU在執(zhí)行完當(dāng)前指令后,停下當(dāng)前的工作,響應(yīng)中斷,轉(zhuǎn)去執(zhí)行外設(shè)所要求的輸入或輸出操作。執(zhí)行完畢后CPU返回被中斷程序的斷點(diǎn)處繼續(xù)往下執(zhí)行。中斷傳送方式的優(yōu)點(diǎn)是可以及時響應(yīng)I/O設(shè)備的請求,并且在I/O設(shè)備處理數(shù)據(jù)期間,單片機(jī)不必浪費(fèi)大量的時間去查詢I/O設(shè)備的狀態(tài),可以提高單片機(jī)的運(yùn)行效率;缺點(diǎn)是需要占用單片機(jī)外中斷源,程序編寫較復(fù)雜。6.3.2 簡單I/O口的擴(kuò)展單片機(jī)擴(kuò)展I/O口分為不可編程和可編程兩大類。不可編程的I/O接口是指不能用軟件對其I/O口進(jìn)行設(shè)置和編輯,通常也稱為簡單I/O口,一般用TTL芯片。擴(kuò)展的輸入接口面向總線,必須是三態(tài)的。擴(kuò)展的輸出接口連接外圍設(shè)備,應(yīng)具有鎖存功能。假設(shè)輸入接口用于瞬態(tài)輸入,也應(yīng)具有鎖存功能。單片機(jī)系統(tǒng)的I/O口和數(shù)據(jù)存儲器統(tǒng)一編址,將擴(kuò)展的I/O口看作片外的數(shù)據(jù)存儲器,一個I/O口占用一個片外數(shù)據(jù)存儲器單元的地址。擴(kuò)展I/O口也使用、作為讀、寫控制信號,使用MOVX指令進(jìn)行訪問。1.輸入口的擴(kuò)展擴(kuò)展輸入口的典型芯片有74LS373和74LS244?!?〕74LS244擴(kuò)展輸入口74LS244是8同相三態(tài)緩沖器/線驅(qū)動器,其引腳圖和功能表如圖6-14所示。片內(nèi)有兩組三態(tài)緩沖器。每組4個,輸入分別是1A1~1A4和2A1~2A4,輸出分別是1Y1~1Y4和2Y1~1Y4〔應(yīng)該為:2Y1~2Y4〕,分別由一個門控信號和控制,當(dāng)門控端低電平有效時,輸入信號從輸出端輸出;門控端信號無效時,74LS244輸出端是高阻態(tài)。圖6-1474LS244引腳圖和功能表圖6-15是74LS244和單片機(jī)連接的典型應(yīng)用電路。圖中將74LS244的和連在一起,受單片機(jī)的P2.6和控制。這樣該擴(kuò)展口的地址為0BFFFH。輸入數(shù)據(jù)的操作指令如下:MOVDPTR,#0BFFFHMOVXA,@DPTR圖6-1574LS244擴(kuò)展輸入口用74LS244擴(kuò)展單片機(jī)輸入口的優(yōu)點(diǎn)是線路簡單、價格低廉、編程方便。缺點(diǎn)是P0口負(fù)載較重。P0口負(fù)載能力是8個LSTTL門,擴(kuò)展一片74LS244就減少一份負(fù)載能力,假設(shè)需要擴(kuò)展多個并行輸入口,可能會超出P0口負(fù)載能力?!?〕74LS373擴(kuò)展選通輸入口74LS373是常用的帶有三態(tài)門的8D鎖存器。其功能表在節(jié)已經(jīng)介紹過。由于其具有鎖存功能,所以能用來作為瞬態(tài)量的輸入接口。圖6-16所示為用74LS373擴(kuò)展的選通輸入口。當(dāng)外設(shè)將一個選通信號STB〔正脈沖〕送到74LS373的門控端G,在選通信號的下降沿,輸入數(shù)據(jù)進(jìn)入鎖存器中,同時向單片機(jī)的端發(fā)出中斷請求。單片機(jī)響應(yīng)中斷后從74LS373讀數(shù)。由于地址線是P2.6,所以74LS373的口地址為0BFFFH。74LS373擴(kuò)展輸入口的優(yōu)缺點(diǎn)與74LS244相同。單片機(jī)輸入口的擴(kuò)展也可使用其它的TTL芯片,但均不如74LS373和74LS244方便。圖6-16用74LS373擴(kuò)展選通輸入口2.輸出口的擴(kuò)展擴(kuò)展8位輸出口的典型常用芯片是74LS377。74LS377是帶有輸出允許控制的8D觸發(fā)器,上升沿觸發(fā),其引腳圖和功能表如圖6-17所示。CLK為時鐘脈沖輸入端,上升沿觸發(fā),8D共用;為輸出允許端,低電平有效。輸入端D的數(shù)據(jù)進(jìn)入輸出端的條件除了CLK端為脈沖上升沿以外,必須使輸出允許端為低電平。圖6-1774LS377引腳圖和功能表圖6-18是74LS377和單片機(jī)連接的典型應(yīng)用電路。單片機(jī)的寫信號與地址線P2.5分別與74LS377的CLK端和相連。P2.5決定了74LS377擴(kuò)展口的地址為0DFFFH,也可用P2.7~P2.0的任一端線作為74LS377的片選地址線。輸出數(shù)據(jù)的操作指令如下:MOVDPTR,#0DFFFHMOVX@DPTR,A;A中為要輸出的數(shù)據(jù)圖6-18用74LS377擴(kuò)展輸出口用74LS377擴(kuò)展輸出口的優(yōu)缺點(diǎn)與74LS244相同。輸出口的擴(kuò)展也可使用其它的TTL芯片,但均不如74LS377簡便。如使用74LS273要另外多用一只或門。有關(guān)利用其它TTL芯片擴(kuò)展輸出口的內(nèi)容可查閱相關(guān)書籍。6.3.3 可編程多功能接口81C55的擴(kuò)展81C55是一種可編程多功能接口芯片,內(nèi)部包含三個并行口,256×8位的靜態(tài)RAM和一個14位的減法定時/計數(shù)器〔簡稱計數(shù)器〕。81C55功能強(qiáng)大,使用方便,是單片機(jī)系統(tǒng)中廣泛使用的芯片之一。1.81C55的引腳與結(jié)構(gòu)81C55芯片采用40引腳雙列直插封裝,其引腳和內(nèi)部結(jié)構(gòu)如圖6-19所示。圖6-1981C55的引腳與內(nèi)部結(jié)構(gòu)框圖由圖可見,81C55的內(nèi)部主要包含:〔1〕并行I/O口兩個可編程8位口:PA0-PA7和PB0-PB7;一個可編程的6位口PC0-PC5;還有只允許寫入的8位命令存放器和只允許讀出的8位狀態(tài)存放器?!?〕256字節(jié)8位靜態(tài)RAM?!?〕一個14位減法計數(shù)器。81C55的40個引腳,分為與CPU連接的地址數(shù)據(jù)線、控制線,與外圍設(shè)備連接的I/O線。各引腳功能如下:AD0~AD7——三態(tài)地址/數(shù)據(jù)總線。地址鎖存允許信號ALE的下降沿將8位地址鎖存在內(nèi)部地址存放器中。由輸入的信號的狀態(tài)來決定該地址是作為256字節(jié)RAM的低8位地址,還是作為I/O口的通道地址。AD0~AD7傳送數(shù)據(jù)的方向由、信號控制。注意,81C55內(nèi)部有6個存放器:A口、B口、C口、命令狀態(tài)存放器、計數(shù)器低8位、計數(shù)器高6位加2位輸出信號形式,6個存放器的地址固定由AD0~AD2編址。如表6-12所示。AD2

AD1AD0寄存器名稱000命令/狀態(tài)寄存器001A口010B口011C口100定時器低8位101計數(shù)器高6位和輸出信號波形表6-1281C55存放器地址〔2〕——片選信號,輸入,低電平有效?!?〕——I/O口或RAM選擇信號,輸入。當(dāng)=1時,選擇I/O口;當(dāng)=0時,選擇81C55片內(nèi)256BRAM。〔4〕ALE——地址鎖存允許信號,輸入。在ALE信號下降沿,鎖存AD0~AD7線上的8位地址及信號。〔5〕——寫信號,輸入,低電平有效?!?〕——讀信號,輸入,低電平有效。

、、和四個信號的狀態(tài)與81C55操作功能關(guān)系如表6-13所示。表6-1381C55操作功能操作功能0001向RAM寫數(shù)據(jù)0010從RAM讀數(shù)據(jù)0101向I/O口寫數(shù)據(jù)0110從I/O口讀數(shù)據(jù)〔7〕RESET——復(fù)位信號,輸入,高電平有效。復(fù)位后81C55命令/狀態(tài)存放器清0,三個I/O口被置輸入工作方式,定時/計數(shù)器停止工作。〔8〕PA0~PA7——A口8位通用I/O線。數(shù)據(jù)的輸入/輸出的方向由可編程的命令存放器內(nèi)容決定?!?〕PB0~PB7——B口8位通用I/O線。數(shù)據(jù)的輸入/輸出的方向由可編程的命令存放器內(nèi)容決定?!?0〕PC0~PC5——C口6位數(shù)據(jù)/控制線,既可作通用I/O口,又可作A口和B口工作于選通方式下的控制信號。控制功能的實(shí)現(xiàn)由可編程命令存放器內(nèi)容決定。〔11〕TIMERIN——定時/計數(shù)器計數(shù)脈沖輸入端。〔12〕TIMEROUT——定時/計數(shù)器輸出引腳。其輸出信號是矩形還是脈沖,是輸出單個信號還是連續(xù)信號,由計數(shù)器的工作方式?jīng)Q定。2. 81C55與單片機(jī)的連接81C55與單片機(jī)的連接非常簡單,典型連接電路如圖6-20所示。擴(kuò)展一片81C55可使系統(tǒng)增加256字節(jié)的RAM、22根I/O口線及一個計數(shù)器。圖6-2081C55與MCS-51的連接電路根據(jù)圖6-20,可分析出81C55片內(nèi)I/O口及RAM的地址如表6-14所示。表6-1481C55的地址分配表A15A14…A9A8A7A6A5A4A3A3A1A0地址說明00000000007E00H~7EFFH256BRAM地址1111111110007FF8H命令/狀態(tài)口0017FF9HA口0107FFAHB口0117FFBHC口1007FFCH定時器低8位1017FFDH定時器低8位注:假設(shè)未用的地址線A14…A9,A7…A3的狀態(tài)為1。3. 81C55片內(nèi)RAM的使用對單片機(jī)來說,81C55片內(nèi)256BRAM屬于單片機(jī)片外RAM,應(yīng)使用MOVX指令讀寫。讀寫前,應(yīng)先置=0,否那么讀寫操作對象變?yōu)?1C55的I/O口。【例6-1】按圖6-20,要求檢驗(yàn)81C55片內(nèi)256BRAM能否正確寫入和讀出數(shù)據(jù)。具體方法是對相鄰兩單元分別寫入01H和FFH,然后分別讀出求和,看結(jié)果是否為零,依次檢查。程序如下:L61:MOVDPTR,#7E00H;置81C55片內(nèi)RAM首地址MOVR7,#80H;置循環(huán)操作次數(shù)128次LOOP:MOVA,#01HMOVX@DPTR,A;寫入01HMOVXA,@DPTR;讀出MOVB,A;暫存INCDPTR;指向81C55下一RAM單元MOVA,#0FFHMOVX@DPTR,A;寫入0FFHMOVXA,@DPTR;讀出ADDA,B;01H+FFHJNZERR;假設(shè)和不為0,出錯轉(zhuǎn)ERRINCDPTR;假設(shè)和為0,正確,指向下一RAM單元DJNZR7,LOOP;未檢測完畢,繼續(xù)循環(huán)OK:...;RAM讀/寫正確ERR:...;RAM讀/寫出錯4. 81C55的工作方式控制字和狀態(tài)控制字〔1〕工作方式控制字81C55的A口和B口都有兩種工作方式:根本輸入/輸出方式和選通輸入/輸出方式,每種方式都可置為輸入或輸出,以及有否中斷功能。C口能用作根本輸入輸出,也可為A口、B口工作于選通方式時提供控制線。81C55I/O口工作方式的選擇是通過寫入命令存放器的工作方式控制字來實(shí)現(xiàn)的,如圖6-21。各位的定義如下:PA、PB——A口和B口的數(shù)據(jù)傳送方向設(shè)置位。PC2、PC1——81C55的工作方式設(shè)置位。共有4種工作方式,用ALT1~ALT4表示。IEA、IEB——A口和B口的中斷允許設(shè)置位。TM2、TM1——定時/計數(shù)器工作方式設(shè)置位。圖6-2181C55工作方式控制字格式〔2〕端口和定時器狀態(tài)字81C55內(nèi)部還有一個狀態(tài)存放器〔狀態(tài)口〕,其內(nèi)容〔狀態(tài)字〕表示81C55A口、B口和定時/計數(shù)器的工作狀態(tài),如圖6-22所示。其各位定義如下:INTRA、INTRB——A口、B口有無中斷請求。BFB、BFA——端口緩沖器空/滿標(biāo)志。INTEA、INTEB——A口、B口中斷允許/禁止標(biāo)志TIMER——計數(shù)器計滿標(biāo)志。圖6-2281C55狀態(tài)字格式在這些狀態(tài)中,INTR、BF、INTE是端口A和端口B處于選通方式時才具有的工作狀態(tài)。注意,81C55命令存放器的內(nèi)容只能寫入,不能讀出,而狀態(tài)存放器的內(nèi)容只能讀出,不能寫入,因此,二者可以采用同一個通道地址,以簡化硬件設(shè)計,同時將兩個存放器簡稱為命令/狀態(tài)存放器。5. 81C55的I/O口的使用〔1〕根本輸入輸出方式81C55工作方式控制字的PC2和PC1兩位設(shè)置為00或11時,81C55工作于ALT1、ALT2方式。A口、B口均為根本輸入輸出方式,輸入或輸出由PA、PB位分別決定;C口在ALT1方式下為根本輸入方式,在ALT2方式下為根本輸出方式?!纠?-2】參照圖6-20,從81C55的A口依次讀入10個數(shù)據(jù),數(shù)據(jù)取反后從B口輸出,再除以8后從C口輸出。81C55工作方式控制字為0EH。程序如下:L62:MOVDPTR,#7FF8H;置81C55命令口地址〔無關(guān)位為1〕 MOVA,#0EH;A口輸入,B口、C口輸出,根本輸入輸出方式MOVX@DPTR,A;寫入工作方式控制字MOV R7,#10 ;置數(shù)據(jù)長度LOOP:MOVDPTR,#7FF9H;指向A口MOVXA,@DPTR;從A口讀入數(shù)據(jù)INCDPTR;指向B口 CPL A ;A口數(shù)據(jù)取反MOVX@DPTR,A;從B口輸出數(shù)據(jù)CLRCRRCACLRCRRCACLRCRRCA;數(shù)據(jù)再除以8INCDPTR;指向C口MOVX@DPTR,A;從C口輸出數(shù)據(jù)DJNZR7,LOOP;10個數(shù)據(jù)操作完否,未完,繼續(xù)RET〔2〕選通輸入輸出方式81C55工作方式控制字的PC2和PC1兩位設(shè)置為01或10時,81C55工作于ALT3、ALT4方式。ALT3方式下,A口為選通輸入輸出方式,B口為根本輸入輸出方式;ALT4方式下,A口、B口均為選通輸入輸出方式。選通方式下,C口的相應(yīng)口線作為A口或B口的應(yīng)答和控制線號,其功能定義如表6-15所示。表6-15C口的控制分配表工作方式PC5PC4PC3PC2PC1PC0ALT1輸入ALT2輸出ALT3輸出BFAINTRAALT4BFBINTRBBFAINTRA在選通方式下,C口相應(yīng)位定義如下:PC0——INTRA,A口中斷請求信號,輸出,高電平有效。PC1——BFA,A口緩沖器滿信號,輸出,高電平有效。PC2——,A口選通信號,輸入,低電平有效。PC3——INTRB,B口中斷請求信號,輸出,高電平有效。PC4——BFB,B口緩沖器滿信號,輸出,高電平有效。PC5——,B口選通信號,輸入,低電平有效。81C55選通方式的組態(tài)邏輯如圖6-23所示。圖6-2381C55選通方式的組態(tài)【例6-3】電路如圖6-24所示,試編制程序,將89C51單片機(jī)片內(nèi)70H~7FH單元的數(shù)據(jù)從81C55的A口以中斷方式輸出。由題意可知,可選擇ALT3方式,A口工作于中斷方式。此時,81C55的PC2自動變?yōu)橥鈬O(shè)備與81C55A口的聯(lián)絡(luò)信號,PC0自動變?yōu)锳口中斷請求信號INTRA。當(dāng)外圍設(shè)備讀取A口輸出數(shù)據(jù)后,向81C55發(fā)出低電平應(yīng)答信號,觸發(fā)81C55的INTRA向CPU發(fā)出中斷請求信號。81C55的控制字為:主程序:MAIN:MOVDPTR,#7FF8H;置81C55命令口地址

MOVA,#15H;A口ALT3輸出方式,允許中斷

MOVX@DPTR,A;寫入命令字

SETBIT0;置邊沿觸發(fā)方式

MOVR0,#70H;置數(shù)據(jù)區(qū)首址

MOVR7,#16;置數(shù)據(jù)長度

MOVIE,#81H;開放外中斷0MOVDPTR,#7FF9H;置81C55A口地址

MOVA,@R0;讀數(shù)據(jù)

MOVX@DPTR,A;從81C55A口輸出數(shù)據(jù)

INCR0;修改數(shù)據(jù)區(qū)地址

DECR7;修改數(shù)據(jù)長度

SJMP$;等待中斷中斷效勞程序:INT0:MOVDPTR,#7FF9H;置81C55A口地址MOVA,@R0;讀數(shù)據(jù)MOVX@DPTR,A;從81C55A口輸出數(shù)據(jù)INCR0;修改數(shù)據(jù)區(qū)地址DJNZR7,L1;判數(shù)據(jù)完成否CLREX0;傳送完畢,禁止中斷L1:RETI81C55A口和B口工作于選通輸入輸出方式時的狀態(tài),CPU可通過讀81C55狀態(tài)存放器的狀態(tài)字來查詢,狀態(tài)字已在前面講過,不再重復(fù)?!纠?-4】如圖6-25,81C55的A口以中斷方式輸入外圍設(shè)備發(fā)送的數(shù)據(jù),存在單片機(jī)片內(nèi)RAM70H,并從B口以查詢方式輸出。圖6-2581C55ALT4方式電路圖由題意可知,A口工作在中斷方式下,B口工作在選通方式下,應(yīng)該選擇ALT4方式。。此時,81C55PC口的6根口線自動變?yōu)锳口和B口的應(yīng)答和控制信號。其中,PC2〔〕和PC5〔〕分別為A口和B口與外設(shè)的聯(lián)絡(luò)信號;PC4〔BFB〕為81C55B口緩沖器滿信號;PC1〔INTRA〕為81C55A口中斷請求信號。81C55A口和B口工作于選通輸入輸出方式時的狀態(tài),CPU可通過讀81C55狀態(tài)存放器的狀態(tài)字來查詢,狀態(tài)字已在前面講過,不再重復(fù)??刂谱郑撼绦蛉缦拢?/p>

ORG0000H

LJMPMAINORG0003HLJMPIO8155ORG0100HSTART:MOVDPTR,#07FF8H;置81C55命令口地址

MOVA,#1AH;A口輸入,允許中斷,B口輸出,禁止中斷,ALT4方式

SETBIT0;置邊沿觸發(fā)

MOVIE,#81H;開放外中斷0SJMP$;等待中斷

ORG0200HIO8155:MOVDPTR,#07FF9H;置81C55A口地址

MOVXA,@DPTR;從A口輸入數(shù)據(jù)

MOV70H,A;存數(shù)據(jù)WAIT:JNBP1.0,WAIT;查詢B口緩沖器滿否

INCDPTR;指向81C55B口

MOVX@DPTR,A;發(fā)送數(shù)據(jù)

RETI注意,開機(jī)后,外圍設(shè)備應(yīng)向81C55的PC2發(fā)出一個低電平應(yīng)答信號,在條件滿足時,觸發(fā)CPU中斷。6. 81C55片內(nèi)計數(shù)器的使用81C55片內(nèi)有一個14位的計數(shù)器,采用的是減法計數(shù)。計數(shù)脈沖從TIMERIN引腳輸入,每次減1,減到0時溢出,從TIMEROUT引腳輸出矩形波或脈沖,可實(shí)現(xiàn)計數(shù)或定時功能。81C55計數(shù)器的工作狀態(tài)由81C55工作方式控制字的最高兩位,即TM2、TM1的狀態(tài)決定,前面已經(jīng)講過,在此不再復(fù)述。要對81C55的計數(shù)器進(jìn)行控制,和對I/O口的使用一樣,必須要進(jìn)行初始化,主要包括:設(shè)置計數(shù)初值;設(shè)置輸出波形;啟動計數(shù)器。計數(shù)初值由CPU分別寫入81C55計數(shù)器的低8位字節(jié)存放器和高6位字節(jié)存放器,其格式如圖6-26所示,該存放器地址的低3位分別為100和101,81C55定時計數(shù)的最大值為3FFFH〔16383〕。81C55允許從TIMERIN引腳輸入脈沖的最高頻率為4MHz。圖6-2681C55定時器低8位和高6位字節(jié)存放器81C55計數(shù)器計滿溢出不是和單片機(jī)的計數(shù)器一樣設(shè)置中斷標(biāo)志位,而是從TIMEROUT引腳輸出相應(yīng)的矩形波或脈沖,因此必須預(yù)先設(shè)置好輸出波形。計數(shù)器輸出波形的形式由81C55計數(shù)器初值存放器最高二位M2、M1決定,共有四種方式,如圖6-27所示。圖6-2781C55定時器的輸出波形形式輸出波形為方式0和方式2時,TIMEROUT端輸出單個方波或單個脈沖;輸出波形為方式1和方式3時,TOUT輸出連續(xù)方波或連續(xù)脈沖,在這種情況下,81C55定時器能像單片機(jī)定時/計數(shù)器方式2那樣,自動恢復(fù)定時器初值,重新開始計數(shù)。注意,TIMEROUT輸出的方波形狀與計數(shù)器初值有關(guān)。當(dāng)計數(shù)初值為偶數(shù)時,輸出的方波是對稱的;當(dāng)定時器初值為奇數(shù)時,輸出方波略有不對稱,高電平比低電平多一個計數(shù)間隔。當(dāng)硬件復(fù)位信號RESET到達(dá),會使計數(shù)器停止工作。計數(shù)器要再次啟開工作,必須由命令存放器再次發(fā)出啟動計數(shù)器命令?!纠?-5】電路如圖6-20,編程對81C55進(jìn)行初始化,使其A口為選通輸入,B口為根本輸出,C口作為控制聯(lián)絡(luò)信號端,并啟動計數(shù)器,從TIMEROUT引腳輸出周期20ms的連續(xù)方波,輸入時鐘頻率為從100KHz。TIMERIN端時鐘頻率為100kHz時,其周期為10μs,TIMEROUT端輸出波形周期為20ms,那么計數(shù)值為20ms/10μs=2000D=7D0H。計數(shù)器輸出波形設(shè)置為方式1,連續(xù)方波輸出。計數(shù)器初值存放器低8位應(yīng)設(shè)為為0D0H,計數(shù)器初值存放器高8位〔包括輸出波形方式〕應(yīng)該為01000111B=47H。81C55工作方式控制字應(yīng)設(shè)置為11000101B。程序如下:L65: MOVDPTR,#07FFCH ;81C55計數(shù)器低8位地址MOVA,#0D0H ;2000D=07D0HMOVX@DPTR,A;給計數(shù)器低8位賦值INCDPTRMOVA,#47H ;給計數(shù)器高6位賦值,同時設(shè)置連續(xù)方波工作方式,MOVX@DPTR,AMOVDPTR,#7FF8H ;81C55控制字地址MOVA,#0C6H ;A口選通輸入,B口根本輸出,禁止中斷,啟動計數(shù)器MOV@DPTR,A ;寫入控制字81C55是一款功能豐富、使用方便的多功能接口芯片,特別適合于需要進(jìn)行I/O口擴(kuò)展,且需要少量RAM和定時/計數(shù)器的場合。假設(shè)只需要進(jìn)行I/O口擴(kuò)展,也可選擇8255可編程接口芯片。二者I/O接口功能根本近似,關(guān)于8255芯片,讀者可以參考相關(guān)書籍,在此不再贅述。本節(jié)思考題1. 為什么輸入接口要具有三態(tài)緩沖功能,而輸出接口要具有鎖存功能?2. 81C55內(nèi)部結(jié)構(gòu)有什么特點(diǎn)?其定時/計數(shù)器與單片機(jī)內(nèi)部的定時/計數(shù)器有何異同?單片機(jī)片內(nèi)集成了計算機(jī)最根本的功能部件,但對于一些較復(fù)雜的應(yīng)用系統(tǒng),還是需要擴(kuò)展一些外圍接口芯片,以增加單片機(jī)的硬件資源。擴(kuò)展方法主要有并行接口擴(kuò)展和串行接口擴(kuò)展,本單元主要介紹的是并行總線擴(kuò)展技術(shù),包括存儲器的擴(kuò)展和I/O接口擴(kuò)展。單片機(jī)并行擴(kuò)展總線遵守三總線原那么,數(shù)據(jù)總線為8根,地址總線16根,控制總線主要有ALE、、、、。本單元小結(jié)單片機(jī)能夠擴(kuò)展的外部程序存儲器和數(shù)據(jù)存儲器最大容量均為64KB,地址都是0000H~0FFFFH。單片機(jī)的程序存儲器采用片內(nèi)外統(tǒng)一編地址的方法,訪問外ROM時由選通ROM的端,執(zhí)行MOVC指令。單片機(jī)的外RAM和I/O接口采用統(tǒng)一編址的方法,由單片機(jī)的、選通外RAM或的、端〔應(yīng)該為:〕,執(zhí)行MOVX指令。P89C5X系列單片機(jī)片內(nèi)集成有一定容量的FlashMemory,一般不需要外擴(kuò)ROM。如果需要擴(kuò)展,最常選用的芯片有EPROM中的2764和EEPROM中的2867A。擴(kuò)展外RAM常用的芯片有靜態(tài)RAM中的6116和6264。外RAM最多也可以擴(kuò)展到64KB。擴(kuò)展外ROM和擴(kuò)展外RAM時,通常選用一片容量足夠的芯片,而不采用多片小容量芯片擴(kuò)展疊加。擴(kuò)展外部存儲器的片選方式有線選法、全譯碼法和局部地址譯碼法。線選法電路簡單,缺點(diǎn)是地址空間不連續(xù)、地址重疊,存儲空間利用率不高。譯碼法常用的有74LS138和74LS139芯片.擴(kuò)展并行I/O口是將I/O芯片看成單片機(jī)外RAM的一個存儲單元,執(zhí)行MOVX指令,片選端一般由高位地址線選通,片選方法同存儲器擴(kuò)展??刂撇⑿蠭/O口可以使用

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論