微機(jī)原理與接口技術(shù)-并行輸入輸出接口課件_第1頁
微機(jī)原理與接口技術(shù)-并行輸入輸出接口課件_第2頁
微機(jī)原理與接口技術(shù)-并行輸入輸出接口課件_第3頁
微機(jī)原理與接口技術(shù)-并行輸入輸出接口課件_第4頁
微機(jī)原理與接口技術(shù)-并行輸入輸出接口課件_第5頁
已閱讀5頁,還剩141頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微機(jī)原理與接口技術(shù)并行輸入輸出接口1、不要輕言放棄,否則對不起自己。2、要冒一次險(xiǎn)!整個(gè)生命就是一場冒險(xiǎn)。走得最遠(yuǎn)的人,常是愿意去做,并愿意去冒險(xiǎn)的人。“穩(wěn)妥”之船,從未能從岸邊走遠(yuǎn)。--戴爾.卡耐基。3、人生就像一杯沒有加糖的咖啡,喝起來是苦澀的,回味起來卻有久久不會(huì)退去的余香。4、守業(yè)的最好辦法就是不斷的發(fā)展。5、當(dāng)愛不能完美,我寧愿選擇無悔,不管來生多么美麗,我不愿失去今生對你的記憶,我不求天長地久的美景,我只要生生世世的輪回里有你。微機(jī)原理與接口技術(shù)并行輸入輸出接口微機(jī)原理與接口技術(shù)并行輸入輸出接口1、不要輕言放棄,否則對不起自己。2、要冒一次險(xiǎn)!整個(gè)生命就是一場冒險(xiǎn)。走得最遠(yuǎn)的人,常是愿意去做,并愿意去冒險(xiǎn)的人。“穩(wěn)妥”之船,從未能從岸邊走遠(yuǎn)。--戴爾.卡耐基。3、人生就像一杯沒有加糖的咖啡,喝起來是苦澀的,回味起來卻有久久不會(huì)退去的余香。4、守業(yè)的最好辦法就是不斷的發(fā)展。5、當(dāng)愛不能完美,我寧愿選擇無悔,不管來生多么美麗,我不愿失去今生對你的記憶,我不求天長地久的美景,我只要生生世世的輪回里有你。第五章并行輸入輸出接口第一節(jié)I/O接口的基本概念一、I/O接口的基本功能1、I/O接口的作用 ⑴解決高速主機(jī)與低速外圍設(shè)備間的矛盾,即速度配合;⑵處理外圍設(shè)備與CPU之間的不同的信息格式即信號格式配合;⑶使主機(jī)與外設(shè)協(xié)調(diào)工作,即時(shí)序配合;⑷外設(shè)和主機(jī)在信號電平一致,即電平配合。2、I/O接口傳送信息的類型I/O接口傳送的信息可分為三類:數(shù)據(jù)信息,狀態(tài)信息和控制信息。⑴數(shù)據(jù)信息:數(shù)據(jù)信息可分為四種①數(shù)字量,二進(jìn)制數(shù)據(jù),最小單位是一個(gè)bit(位),還有字節(jié)、字等。②模擬量,現(xiàn)場信號大多是由傳感器來的模擬電壓或電流,他們必須經(jīng)過A/D轉(zhuǎn)換,變成數(shù)字量才能進(jìn)入計(jì)算機(jī),有些接口有處理模擬量的電路,稱為模擬接口。③開關(guān)量,開關(guān)量只有兩種狀態(tài),即“開”或“關(guān)”,可用一位二進(jìn)制數(shù)表示,如“1”表示“開”,“0”表示“關(guān)”。④脈沖量,脈沖量是以脈沖形式表示的一種信號,如計(jì)算機(jī)中用到的定時(shí)脈沖或控制脈沖等。⑵狀態(tài)信息:狀態(tài)信息是反映外設(shè)當(dāng)前所處的工作狀態(tài),以作為CPU與外設(shè)間可靠交換數(shù)據(jù)的條件。當(dāng)輸入微機(jī)原理與接口技術(shù)并行輸入輸出接口1、不要輕言放棄,否則1微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件2微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件3微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件4微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件5

圖5.1接口電路的基本結(jié)構(gòu)圖5.1接口電路的基本結(jié)6

三、I/O端口的編址方式

1、I/O端口和存儲(chǔ)器統(tǒng)一編址該方式是將存儲(chǔ)器地址空間的一部分作為I/O設(shè)備的地址空間,所以I/O端口地址也是一個(gè)存儲(chǔ)器地址。優(yōu)點(diǎn)是CPU訪問存儲(chǔ)器的指令都可以訪問I/O端口,不需要專門的I/O指令。二是使I/O控制邏輯簡單,其引腳減少。缺點(diǎn)是I/O端口占用了一部分存儲(chǔ)器空間;二是訪存指令通常比專用的I/O指令長,所以執(zhí)行時(shí)間較長。MOTOROLA的微機(jī)系列如MC6800系列,MC68000系列都采用這一方法。APPLE公司如6502系列也采用這一方法。三、I/O端口的編址方式72、I/O端口和存儲(chǔ)器單獨(dú)編址

基本想法是I/O端口地址和存儲(chǔ)器地址分開,單獨(dú)編址,在指令系統(tǒng)中分別設(shè)立存儲(chǔ)器讀寫指令和I/O端口讀寫指令。在地址總線上的地址信息究竟是存儲(chǔ)器地址還是I/O地址,一般是在CPU上設(shè)置專門的控制線,如=1為I/O操作,=0為存儲(chǔ)器操作。優(yōu)點(diǎn):I/O端口不占用存儲(chǔ)器地址空間;單獨(dú)I/O指令比較短,地址譯碼方便,指令執(zhí)行速度快。缺點(diǎn):需要單獨(dú)的I/O指令,這些指令一般功能簡單,通常只有讀寫功能;需專門的I/O控制線,增加了CPU本身控制邏輯的復(fù)雜性。Intel系列和Zilog系列采用此方法。2、I/O端口和存儲(chǔ)器單獨(dú)編址8四、I/O接口的地址分配

每臺(tái)微機(jī)都給I/O端口分配相應(yīng)的端口地址。IBM/PC-XT使用10位地址作為I/O端口地址,即可用端口有1024個(gè),以后的PC機(jī)(8086)用16位地址作為I/O端口地址,即可用端口有65536個(gè)。可用測試工具QAPLUS等軟件檢測系統(tǒng)配置及其端口地址使用情況;也可查閱每臺(tái)機(jī)器的硬件手冊。

五、I/O端口地址的譯碼及片選信號的產(chǎn)生

I/O端口地址的生成一般是由地址信號A9-A0的高位產(chǎn)生譯碼的片選信號CS,低位產(chǎn)生片內(nèi)的寄存器地址。在I/O操作時(shí),CPU執(zhí)行IN或OUT指令,首先是端口地址有效,然后是IOR或IOW有效。

四、I/O接口的地址分配91、利用門電路進(jìn)行譯碼如圖5.2所示,端口地址為348H-34FH,由于A0-A2三位地址沒有參加譯碼,所以一個(gè)片選信號占用8個(gè)地址單元。實(shí)際上這低三位地址加到芯片上,產(chǎn)生片內(nèi)寄存器的地址。A9A8A7A6A5A4A3A2A1A01101001×××

2、用集成譯碼器進(jìn)行譯碼如圖5.3所示,使用74LS138集成譯碼器譯出8個(gè)端口地址。由于所有A0-A9地址線都參加譯碼,所以稱1、利用門電路進(jìn)行譯碼如圖5.2所示,端口地址為10

為全譯碼,這時(shí)每條線對應(yīng)一個(gè)端口地址。A9A8A7A6A5A4A3A2A1A0=11,0101,1×××1101011×××=358-F為全譯碼,這時(shí)每條線對應(yīng)一個(gè)端口地址。A9A8A711

3、開關(guān)式可選擇譯碼電路

3、開關(guān)式可選擇譯碼電路12如果用戶希望譯碼器能適應(yīng)不同的地址分配場合,則可采用開關(guān)式地址可選擇譯碼電路,如圖5.4所示。電路用DIP開關(guān)選擇地址,并使用了一片74LS688八位數(shù)據(jù)比較器。當(dāng)輸入端P0-P7的地址與設(shè)置端Q0-Q7的狀態(tài)一致時(shí),輸出P=Q為低,其輸出控制地址譯碼芯片74LS138的譯碼。圖中,上面一片74LS138產(chǎn)生讀端口地址,下面一片74LS138產(chǎn)生寫端口地址,這樣使8個(gè)口地址作16個(gè)口地址用。此電路必須A9=1,AEN=0時(shí)才能有效譯碼。(AEN=0是CPU控制總線,AEN=1時(shí)DMA控制總線)。

4、使用可編程芯片進(jìn)行地址譯碼

目前大多數(shù)地址譯碼采用可編程芯片,如GAL或PAL器件。把譯碼電路的邏輯關(guān)系按說明文件格式寫入一文件,然后用編程器把邏輯關(guān)系寫入GAL器件中。如果用戶希望譯碼器能適應(yīng)不同的地址分配場合,則13第二節(jié)I/O數(shù)據(jù)傳送控制方式

CPU與外設(shè)之間數(shù)據(jù)傳送的方式通常有3種,即程序控制方式,中斷控制方式和直接存儲(chǔ)器方式(DMA)。一、程序控制方式

程序傳送是指CPU與外設(shè)間交換數(shù)據(jù)在程序控制(即IN或OUT指令控制)下進(jìn)行。

1、無條件傳送這種方式適合于外設(shè)總是處于準(zhǔn)備好的情況,因此程序不必檢查外設(shè)的狀態(tài)。如圖5.5所示,端口地址譯碼器產(chǎn)生選通信號,RD信號為讀,WR信號為寫,開放三態(tài)緩沖器(讀)或?qū)懭腈i存器,進(jìn)行數(shù)據(jù)讀或?qū)?。第二?jié)I/O數(shù)據(jù)傳送控制方式CPU與外設(shè)之間數(shù)14

圖5.5無條件傳送方式圖5.5無條件15

例1:一個(gè)采用無條件傳送的數(shù)據(jù)采集系統(tǒng)圖5.6無條件輸入的數(shù)據(jù)采集系統(tǒng)例1:一個(gè)采用無條件傳送的數(shù)據(jù)采集系統(tǒng)圖5.6無條件16

這是一個(gè)16位精度的數(shù)據(jù)采集系統(tǒng)。被采集的8個(gè)模擬量,由繼電器繞組P0、P1、…、P7分別控制觸點(diǎn)K0、K1、…、K7逐個(gè)接通。每次采樣轉(zhuǎn)換成16位BCD碼,高8位和低8位通過兩個(gè)端口(端口地址為11H和10H)輸入到計(jì)算機(jī)。CPU通過端口20H輸出控制信號,以控制繼電器的吸合,實(shí)現(xiàn)采集不同通道的模擬量。采集過程如下:(1)先斷開所有的繼電器觸點(diǎn),不采集數(shù)據(jù);(2)延遲一段時(shí)間后,使K0閉合,采集第1個(gè)通道的模擬量,并保持一段時(shí)間,以使數(shù)字電壓表將模擬電壓轉(zhuǎn)換為16位BCD碼;(3)分別將高8位與低8位BCD碼存入內(nèi)存,并轉(zhuǎn)存到DSTOR開始的數(shù)據(jù)區(qū);(4)利用移位與循環(huán)實(shí)現(xiàn)8個(gè)模擬量的依次采集和存儲(chǔ)。這是一個(gè)16位精度的數(shù)據(jù)采集系統(tǒng)。被采集的8個(gè)模擬17

數(shù)據(jù)采集程序如下: START: MOV DX,0100H ;01H置吸合第一個(gè)繼電器 ;00斷開所有繼電器代碼 LEA BX,DSTOR ;置數(shù)據(jù)緩沖區(qū)地址指針 XOR AL,AL ;清AL和CF AGAIN: MOV AL,DL OUT 20H,AL ;斷開所有繼電器 CALL NEARDELAY1 ;繼電器觸點(diǎn)釋放時(shí)間 MOV AL,DH OUT 20H,AL ;先使P0吸合 CALL NEARDELAY2 ;繼電器觸點(diǎn)閉合和轉(zhuǎn)換時(shí)間 IN AL,10H ;輸入低8位 IN AH,11H ;輸入高8位 MOV [BX],AX ;存入內(nèi)存 INC BX ;地址指針加2 INC BX RCL DH,1 ;DH帶進(jìn)位循環(huán)左移一位 JNC AGAIN ;8個(gè)通道完了嗎?沒有,循環(huán) DONE:… ;已完,則執(zhí)行其他程序 數(shù)據(jù)采集程序如下:18

2、程序查詢傳送方式⑴程序查詢式輸入圖5.7查詢式輸入的接口電路2、程序查詢傳送方式圖5.7查詢式輸入的接口電路19

如圖5.7所示,CPU從接口讀取狀態(tài)信息,判斷READY是否為1?即是否準(zhǔn)備好,若已準(zhǔn)備好,則讀入數(shù)據(jù)。查詢部分程序如下: POLL:in al,status_port ;讀狀態(tài)端口的信息 test al,80H ;設(shè)READY信息在D7位 je POLL ;D7=1未就緒,則循環(huán)再查 in al,data_port ;已就緒,則讀入數(shù)據(jù)其中:status_port是狀態(tài)口地址,data_port是數(shù)據(jù)口地址。⑵查詢式輸出如圖5.8所示,CPU從接口讀取狀態(tài)信息,判斷BUSY是否為1?BUSY=0表示外設(shè)不忙,則CPU執(zhí)行輸出指令如圖5.7所示,CPU從接口讀取狀態(tài)信息,判斷READ20

,輸出數(shù)據(jù)到外設(shè)。圖5.8查詢式輸出接口電路,輸出數(shù)據(jù)到外設(shè)。圖5.8查詢式輸出接口電路21

查詢式輸出的部分程序如下:POLL: in al,ststus_port ;讀狀態(tài)口,查D7位 test al,80H je POLL ;D7=1即忙線=1,則循環(huán) mov al,store ;否則外設(shè)空閑,從內(nèi)存取數(shù) out data_port,al ;輸出到外設(shè)的數(shù)據(jù)口3、一個(gè)查詢方式的數(shù)據(jù)采集系統(tǒng)如圖5.9所示,有8個(gè)模擬量輸入的數(shù)據(jù)采集系統(tǒng),8個(gè)模擬量經(jīng)多路開關(guān)選擇其中一路,每次一個(gè)模擬量到A/D轉(zhuǎn)換器;同時(shí)A/D轉(zhuǎn)換器由端口4輸出的D4控制啟動(dòng)與停止。A/D轉(zhuǎn)換器的READY信號由端口2的D0輸出至CPU數(shù)據(jù)總線;A/D轉(zhuǎn)換后的數(shù)據(jù)由端口3輸至數(shù)據(jù)總線。查詢式輸出的部分程序如下:22圖5.9查詢式數(shù)據(jù)采集系統(tǒng)這里用到三個(gè)端口地址,端口2為狀態(tài)口,端口3為數(shù)據(jù)口,端口4為控制口用于選擇那一路。圖5.9查詢式數(shù)據(jù)采集系統(tǒng)這里用到三個(gè)端口地址,端口2為23數(shù)據(jù)采集過程的程序如下:START:mov dl,0F8H ;設(shè)置啟動(dòng)信號,低3位選通多路開關(guān) mov ax,segdstor;設(shè)置輸入數(shù)據(jù)的內(nèi)存地址指針 mov es,ax ;段地址送es lea di,dstor ;偏移地址送diAGAIN:mov al,dl and al,0efH ;使D4=0 out 04,al ;停止A/D轉(zhuǎn)換 call delay ;等待停止A/D轉(zhuǎn)換操作完成 mov al,dl ;使al=0F8H,D4=1 out 04,Al ;選輸入通道并啟動(dòng)A/D轉(zhuǎn)換POLL: in al,02 ;從02端口輸入狀態(tài)信息 shr al,1 ;查AL的D0 jnc POLL ;判READY=1?若D0=0,未準(zhǔn)備好,則循環(huán) in al,03 ;若已準(zhǔn)備好,則經(jīng)端口3輸入采樣數(shù)據(jù)到AL STOSB ;輸入數(shù)據(jù)轉(zhuǎn)送至內(nèi)存單元,地址指針自動(dòng)加1 inc dl ;輸入模擬通道號加1 jne AGAIN ;8個(gè)模擬量未完則循環(huán) … ;輸入已完,執(zhí)行別的程序數(shù)據(jù)采集過程的程序如下:24

二、中斷傳送

程序查詢傳送方式明顯的缺點(diǎn)是CPU利用率低,不能滿足實(shí)時(shí)輸入輸出的需要,中斷方式可以較好地解決這一問題。所謂中斷是指程序運(yùn)行中出現(xiàn)了某種緊急事件,CPU必須中止現(xiàn)正在執(zhí)行的程序,轉(zhuǎn)去處理該緊急事件(執(zhí)行一段中斷服務(wù)程序),并在處理完后返回原運(yùn)行的程序的過程。完整的中斷處理過程包括中斷請求、中斷判優(yōu)、中斷響應(yīng)、中斷處理和中斷返回。為了使中斷服務(wù)程序不影響主程序的執(zhí)行,需把主程序斷點(diǎn)處的有關(guān)寄存器的內(nèi)容保存下來,稱之為保護(hù)現(xiàn)場;在中斷服務(wù)程序操作完成后再恢復(fù)這些寄存器的內(nèi)容,稱之為恢復(fù)現(xiàn)場。用中斷方式時(shí),外設(shè)處于就緒狀態(tài)時(shí),例如輸入設(shè)備數(shù)據(jù)準(zhǔn)備好時(shí),二、中斷傳送25或輸出設(shè)備不忙可以接收數(shù)據(jù)時(shí),便向CPU發(fā)出中斷請求,CPU暫停當(dāng)前執(zhí)行的主程序進(jìn)入中斷響應(yīng),與外設(shè)進(jìn)行一次數(shù)據(jù)交換,操作完成后再繼續(xù)執(zhí)行原來的主程序。通常CPU在執(zhí)行每一條指令的末尾處會(huì)檢查外設(shè)是否有中斷請求(這種查詢是由硬件完成的,不占用CPU的工作時(shí)間),如果有,在中斷允許(即IF=1)的情況下,CPU將保留下一條指令的地址(斷點(diǎn))和當(dāng)前標(biāo)志寄存器的內(nèi)容,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,操作完成后恢復(fù)斷點(diǎn)和標(biāo)志寄存器的內(nèi)容,繼續(xù)執(zhí)行原來被中斷的程序。中斷方式的優(yōu)點(diǎn)很明顯,大大提高了CPU的工作效率,而且外設(shè)有申請中斷服務(wù)的主動(dòng)權(quán)。有關(guān)中斷的詳細(xì)工作情況將在第六章中介紹?;蜉敵鲈O(shè)備不忙可以接收數(shù)據(jù)時(shí),便向CPU發(fā)出中斷請求,26三、DMA方式

利用程序中斷方式,雖然可以提高CPU的工作效率,但它仍需要由程序來傳送數(shù)據(jù),并在中斷處理時(shí)要“保護(hù)現(xiàn)場”和“恢復(fù)現(xiàn)場”等,要占用一定時(shí)間,是每傳送一個(gè)字節(jié)大約要幾十微秒到幾百微秒,這對于高速外設(shè)就顯得太慢了。DMA方式是一種由專門的硬件電路執(zhí)行I/O交換的傳送方式,它讓外設(shè)接口與內(nèi)存直接進(jìn)行高速的數(shù)據(jù)交換,而不必經(jīng)過CPU,實(shí)現(xiàn)對存儲(chǔ)器的直接存取。這種專門的硬件叫DMA控制器,簡稱DMAC,如圖5.10。三、DMA方式27

如圖所示,當(dāng)接口準(zhǔn)備好就向DMAC發(fā)DMA請求,接著CPU通過HOLD引腳接收DMAC發(fā)出的總線請求;CPU在完成當(dāng)前總線操如圖所示,當(dāng)接口準(zhǔn)備好就向DMAC發(fā)DMA請求,接著CPU28作后,就發(fā)出HLDA的總線響應(yīng)信號給DMAC,DMAC收到此信號后便接管對總線的控制權(quán),開始DMA操作。當(dāng)DMA傳送結(jié)束,DMAC將HOLD信號變成低電平,并放棄對總線的控制權(quán)。CPU檢測到HOLD為低后,也將HLDA變成低,并恢復(fù)對總線的控制權(quán)。第三節(jié)DMA傳輸和控制器參見課本P289-298頁。作后,就發(fā)出HLDA的總線響應(yīng)信號給DMAC,DMAC29第五節(jié)并行通信及接口電路通用接口可分為并行接口和串行接口兩大類。并行傳送是把一個(gè)字節(jié)或多個(gè)字節(jié)用多條信號線同時(shí)進(jìn)行傳輸,即并行接口是按字節(jié)傳送的;串行接口和CPU之間按并行傳送,而和外設(shè)之間是一個(gè)二進(jìn)制位一個(gè)二進(jìn)制位的傳送,即串行接口是按位傳送的。參見圖5.11所示。一、并行接口的組成及其與CPU和外設(shè)的連接

1、并行接口的基本組成(如圖5.12所示)⑴兩個(gè)或兩個(gè)以上的具有緩沖能力的數(shù)據(jù)寄存器第五節(jié)并行通信及接口電路通用接口可分為并行接口30微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件31

⑵可供CPU訪問的控制及狀態(tài)寄存器⑶片選和內(nèi)部控制邏輯電路⑷與外設(shè)進(jìn)行數(shù)據(jù)交換的控制和聯(lián)絡(luò)信號線⑸與CPU用中斷方式傳送數(shù)據(jù)的相關(guān)中斷控制2、與CPU的連接與CPU的連接主要是雙向數(shù)據(jù)總線,讀、寫控制線,復(fù)位信號,中斷請求以及狀態(tài)信號和地址譯碼產(chǎn)生的片選信號。3、與外設(shè)的連接與輸入設(shè)備的連接:并行輸入數(shù)據(jù)線,數(shù)據(jù)傳輸應(yīng)答信號(輸入準(zhǔn)備好和輸入回答信號);與輸出設(shè)備的連接:并行輸出數(shù)據(jù)線,數(shù)據(jù)傳輸應(yīng)答信號(輸出準(zhǔn)備好和輸出回答信號);⑵可供CPU訪問的控制及狀態(tài)寄存器32微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件33二、并行接口的數(shù)據(jù)輸入輸出過程

1、數(shù)據(jù)輸入⑴外設(shè)將數(shù)據(jù)傳送到并行接口,同時(shí)給出“輸入數(shù)據(jù)準(zhǔn)備好”信號;⑵接口把數(shù)據(jù)接收到輸入緩沖寄存器,給出“輸入回答”信號(高電平)到外設(shè);⑶若采用中斷方式,則接口向CPU發(fā)中斷請求信號,并使?fàn)顟B(tài)寄存器中的“輸入緩沖器滿”位置1(也可以用查詢方式);⑷CPU響應(yīng)接口的中斷請求(或查詢相應(yīng)的狀態(tài)位),在中斷服務(wù)程序中執(zhí)行IN指令讀取接口中的數(shù)據(jù);⑸接口給外設(shè)的“輸入回答”信號變成低,通知外設(shè)可以輸入新的數(shù)據(jù),此后轉(zhuǎn)到⑴開始下一個(gè)數(shù)據(jù)的輸入過程。2、數(shù)據(jù)輸出⑴CPU執(zhí)行OUT指令把數(shù)據(jù)寫到接口(中斷或查詢都可以);

二、并行接口的數(shù)據(jù)輸入輸出過程34

⑵接口向外設(shè)發(fā)出“輸出準(zhǔn)備好”信號,通知外設(shè)可以把數(shù)據(jù)取走;⑶外設(shè)取走數(shù)據(jù)后,向接口發(fā)“輸出回答”信號;⑷接口向CPU發(fā)出新的中斷請求,并使?fàn)顟B(tài)寄存器中的“輸出緩沖器空“位置1,要求CPU輸出新的數(shù)據(jù),轉(zhuǎn)到⑴,開始下一輸出過程。

第六節(jié)可編程并行通信接口片8255A一、8255的內(nèi)部結(jié)構(gòu)及其功能1、8255的引腳

參見圖5.13(a),共有40條引線。電源與地線2條;與外設(shè)相連的有24條;與CPU相連的有14條。⑵接口向外設(shè)發(fā)出“輸出準(zhǔn)備好”信號,通知外設(shè)可以把數(shù)據(jù)35

圖5.138255引腳和功能示意圖圖5.138255引腳和功能示意36

2、8255的功能如圖5.13(b)所示,接口的左邊與CPU連接,右邊與外設(shè)連接,有A、B、C三個(gè)8位端口,而C口可分成兩個(gè)4位的端口。每個(gè)端口都可以通過編程設(shè)定為輸入端口或輸出端口,但有各自不同的方式和特點(diǎn)。端口C可以獨(dú)立使用,但通常是配合端口A和端口B工作,為這兩個(gè)端口的輸入輸出提供聯(lián)絡(luò)信號。2、8255的功能37二、8255A的內(nèi)部結(jié)構(gòu)方塊圖

如圖5.14所示,8255A由以下幾部分組成。1、數(shù)據(jù)總線緩沖器這是一個(gè)8位雙向三態(tài)數(shù)據(jù)緩沖器,是8255A與CPU之間的數(shù)據(jù)接口,是它們之間互相交換信息的必經(jīng)之路。2、并行輸入輸出端口A、端口B、端口C端口A和端口B是一樣的8位端口,可以作為輸入口或輸出口,并有數(shù)據(jù)鎖存功能。端口C作為輸入口時(shí),對數(shù)據(jù)不鎖存,而作為輸出口時(shí),對數(shù)據(jù)進(jìn)行鎖存。

端口C可以獨(dú)立作為輸入或輸出端口,也可分成兩個(gè)4位的端口,分別用來為端口A和端口B提供控制和狀態(tài)信息。二、8255A的內(nèi)部結(jié)構(gòu)方塊圖38微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件393、A組控制和B組控制端口A與端口C的高4位(PC7-PC4)構(gòu)成A組,端口B與端口C的低4位(PC3-PC0)構(gòu)成B組。他們各有一個(gè)控制單元接收來自讀寫控制部件的命令和CPU通過數(shù)據(jù)總線送來的控制字,并根據(jù)控制字來定義各端口的操作方式。4、讀寫控制部件該部件用于接收CPU的控制命令,根據(jù)這些命令向片內(nèi)各功能部件發(fā)出操作命令。共有6個(gè)信號,CS是片選信號,通常由高位地址譯碼產(chǎn)生;RD和WR是CPU來的讀寫信號;RESET是復(fù)位信號,復(fù)位后,清除所有寄存器內(nèi)容,并將各端口置成輸入方式;A1、A0為地址信號,用于選擇8255內(nèi)部的端口。這6個(gè)信號的組合所完成的操作如下表所示??梢钥闯?,CPU要求8255有4個(gè)端口地址,通常A1、A0直接和地址總線的AD1、AD0相連,這時(shí)4個(gè)地址是連續(xù)的。3、A組控制和B組控制40

表5-1:8255A的操作

A1A0RDWRCS操作00010端口A數(shù)據(jù)送CPU(輸入)01010端口B數(shù)據(jù)送CPU(輸入)10010端口C數(shù)據(jù)送CPU(輸入)11010非法操作00100CPU數(shù)據(jù)送端口A(輸出)01100CPU數(shù)據(jù)送端口B(輸出)10100CPU數(shù)據(jù)送端口C(輸出)11100CPU數(shù)據(jù)送控制口××110數(shù)據(jù)總線浮空××××1未選中該8255,數(shù)據(jù)總線浮空表5-1:8255A的操作A1A0RDWRCS41

三、8255A的控制字

1、三種工作方式

三、8255A的控制字42

如圖5.15所示,將控制字寫入控制字寄存器,設(shè)置端口的工作方式,8255A有三種工作方式。⑴方式0:基本輸入輸出方式⑵方式1:選通輸入輸出方式⑶方式2:雙向輸入輸出方式端口A可處于三種方式的任一種;端口B只能工作在方式0和方式1;端口C可工作在方式0,但通常C口被分成兩組,A組(A口與PC7-PC4)和B組(B口與PC3-PC0),用于傳送數(shù)據(jù)和控制信息。2、方式選擇控制字方式選擇控制字用于定義端口的工作方式,控制字有8位,每一位的定義如圖5.16所示。例如:方式選擇控制字83H=10000011A口方式0,輸出方式;B口方式0,輸入方式;C口分為兩組,PC7-PC4方式0,輸出,PC3-PC0方式0,輸入。如圖5.15所示,將控制字寫入控制字寄存器,設(shè)置端口的43

若控制字寄存器的口地址是D6H,則 mov AL, 83H out 0D6H, AL若控制字寄存器的口地址是D6H,則44

3、C口置位復(fù)位控制字此控制字只對C口有效,該控制字緊跟在方式控制字后定義,它被寫入控制口,不是寫入C口。如圖5.17所示。在方式1和方式2時(shí)要用到這個(gè)控制字。

3、C口置位復(fù)位控制字45

四、8255A的工作方式

1、工作方式0四、8255A的工作方式46如圖5.18所示,8255工作在方式0只完成簡單的并行輸入輸出。方式0的控制字如圖5.18A所示,最高3位是100,其它D2位為0,D4、D3、D1、D0這4位可為任意,他們有16種組合。如圖5.18所示,8255工作在方式0只完472、工作方式1

這種方式與方式0的區(qū)別在于數(shù)據(jù)輸入輸出要在選通信號控制下進(jìn)行,如圖5.19所示。⑴輸入操作:其控制信號如下:①STB,選通信號,由外部輸入,低電平有效,該信號有效時(shí)將外部數(shù)據(jù)鎖存到所選端口的輸入鎖存器中。STBA—PC4;STBB—PC2

,此信號由C口的PC4和PC2輸入。②IBF,輸入緩沖器滿信號,向外部輸出,高電平有效。該信號有效時(shí),表示輸入的數(shù)據(jù)已占用該端口的輸入鎖存器,實(shí)際上是對STB信號的回答,等待CPU執(zhí)行IN指令將數(shù)據(jù)取走。IBFA—PC5;IBFB—PC1。③INTR,中斷請求,向CPU輸出,高電平有效。A組內(nèi)部有中斷允許觸發(fā)器INTEA,B組內(nèi)部有中斷允許觸發(fā)器INTEB,由PC4和PC2置位/復(fù)位來控制。INTRA—PC3;INTRB—PC0。采用中斷方式時(shí),當(dāng)輸入緩沖器滿,STB的后沿置INTEA或INTEB為1,則向CPU發(fā)中斷請求INTR,2、工作方式148在中斷服務(wù)程序中安排執(zhí)行IN指令,讀取輸入的數(shù)據(jù),并使IBF為0。A口B口均可工作在方式1,完成輸入操作。

在中斷服務(wù)程序中安排執(zhí)行IN指令,讀取輸入的數(shù)據(jù),并49⑵輸出操作,其控制信號如下:①OBF,輸出緩沖器滿,向外部輸出,低電平有效。該信號有效表示CPU已將數(shù)據(jù)寫入該端口。OBFA—PC7;OBFB—PC1②ACK,外部應(yīng)答信號,由外部輸入,低電平有效。該信號有效表示外設(shè)已收到由8255輸出的8位數(shù)據(jù),實(shí)際上是對OBF的回答。ACKA—PC6;ACKB—PC2③INTR,中斷請求,向CPU輸出,高電平有效。A組內(nèi)部有中斷允許觸發(fā)器INTEA,B組內(nèi)部有中斷允許觸發(fā)器INTEB,由PC6和PC2置位/復(fù)位來控制。INTRA—PC3;INTRB—PC0。⑵輸出操作,其控制信號如下:50

采用中斷方式時(shí),當(dāng)ACK有效時(shí)OBF被復(fù)位為高電平,并將相應(yīng)的INTE置1,于是INTR輸出高電平向CPU發(fā)中斷請求,CPU響應(yīng)中斷,在中斷服務(wù)程序中執(zhí)行OUT指令,輸出后續(xù)字節(jié)。方式1(輸出)操作如圖5.20所示。采用中斷方式時(shí),51在方式1下,A口和B口可以是輸入或輸出方式,所以他們有四種組合。其間使用C口的6根線作為控制線,此時(shí)總會(huì)有其它2根線可作為輸入或輸出線。

3、工作方式2

只有A口可以工作在方式2,當(dāng)A口工作在方式2時(shí),B口可以工作在方式1或方式0,其控制字如圖5.21所示。INTRA:中斷請求信號,高電平有效;INTE1:A口內(nèi)部輸出中斷允許觸發(fā)器,可由軟件通過對PC6置位或復(fù)位來允許或禁止。INTE2:A口內(nèi)部輸入中斷允許觸發(fā)器,可由軟件通過對PC4置位或復(fù)位來允許或禁止。其他信號意義與方式1時(shí)相同。在方式1下,A口和B口可以是輸入或輸出方式,所以他52微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件53

D7=1,方式控制字標(biāo)志;D6=1方式2D5=任意,D4不用;D3不用,這時(shí)PC4-PC7作為聯(lián)絡(luò)線D2=1,B組方式1;=0,B組方式0D1=1,B口輸入;=0B口輸出D0=1,PC2-PC0輸入;=0,PC2-PC0輸出;PC3用作聯(lián)絡(luò)線A口方式2實(shí)際上是A口在方式1下輸入輸出的組合。所需的5根聯(lián)絡(luò)線和方式1是一樣的,只是中斷請求只需要一根線。

五、8255A的狀態(tài)字

8255A的狀態(tài)字為查詢方式提供了狀態(tài)標(biāo)志位。8255A工作于方式1或方式2時(shí)的狀態(tài)字可通過讀端口C得到。狀態(tài)字為查詢方式提供了狀態(tài)標(biāo)志位,如輸入緩沖器滿信號IBF,輸出緩沖器滿信號OBF等。1、方式1的狀態(tài)字格式

D7=1,方式控制字標(biāo)志;D6=1方式254方式1輸入狀態(tài)字格式:A組B組方式1輸出狀態(tài)字格式:A組B組D7D6D5D4D3D2D1D0I/OI/OIBFAINTEAINTRAINTEBIBFBINTRBD7D6D5D4D3D2D1D0OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB方式1輸入狀態(tài)字格式:D7D6D5D4D3D2D1D0I/O55要注意的是:端口C的狀態(tài)字各位含義與相應(yīng)外部引腳信號并不完全相同。INTEA和INTEB是內(nèi)部控制信號,通過向控制口寫入“端口C置1/置0控制字”來設(shè)定的,設(shè)定后,就會(huì)在狀態(tài)字中反映出來。

2、方式2狀態(tài)字格式方式2狀態(tài)字也是從端口C讀取,其格式如下圖所示:其中:INTE1是輸出中斷允許位,INTE2是輸入中斷允許位。如前所述,它們也是利用“端口C置1/置0控制字”來使其置位或復(fù)位的。A口工作于方式2時(shí),B口可以工作在方式1和方式0;若B口方式0,則端口C的PC2-PC0用于數(shù)據(jù)的輸入輸出;若B口工作在方式1,則PC2-PC0提供輸入或輸出的狀態(tài)。要注意的是:端口C的狀態(tài)字各位含義與相應(yīng)外部引56C口

A組狀態(tài)B組狀態(tài)A組方式2B組方式0輸入輸出

輸出時(shí)B組方式1輸入時(shí)

方式2狀態(tài)字格式D7D6D5D4D3D2D1D0OBFAINTE1IBFAINTE2INTRAI/OI/OI/OINTEBOBFBINTRBINTEBIBFBINTRBC口D7D6D5D4D3D2D1D0OBFAINTE1IB57六、8255A應(yīng)用舉例

例1:將外設(shè)開關(guān)的二進(jìn)制狀態(tài)從A口輸入,并由B口輸出到LED顯示器,如圖5.22所示。六、8255A應(yīng)用舉例58

圖中LED是8段發(fā)光二極管,當(dāng)某段中流過電流,則該段發(fā)光。從圖中可看出,8個(gè)發(fā)光二極管采用共陽極接法,當(dāng)B口的某位輸出高時(shí),連接該位的那一段亮。所以輸出數(shù)字的二進(jìn)制編碼如下:數(shù)字發(fā)光的相應(yīng)段編碼0a、b、c、d、e、f00111111=3FH1b、c00000110=06H2a、b、d、e、g01011011=5BH3a、b、c、d、g01001111=4FH4b、c、f、g01100110=66H5a、c、d、f、g01101101=6DH…Aa、b、c、e、f、g01110111=77Hbc、d、e、f、g01111100=7CH…Fa、e、f、g01110001=71H圖中LED是8段發(fā)光二極管,當(dāng)某段中流過電流,則該段發(fā)光598255A端口地址為D0-D3H,A口工作于方式0輸入,B口工作于方式0輸出,程序如下: START:mov al,90H ;設(shè)置方式選擇字 out 0D3H,al AA: in al,0D0H ;讀端口A and al,0FH ;取端口A低4位 mov bx,offsetLEDTAL;取LED顯示代碼表首地址 xlat ;查表,AL←(BX+AL) out 0D1H,al ;從端口B輸出LED顯示代碼 mov ax,1000 ;延遲BB: dec ax jnz BB jmp AA ;返回到AA hltLEDTAL DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB7FH,67H,77H,7CH,39H,5EH,79H,71H8255A端口地址為D0-D3H,A口工作于方60

例2:實(shí)驗(yàn)8255A可編程并行接口方式0

硬件電路如下:

圖5.23(a)8255A方式0用于實(shí)驗(yàn)例2:實(shí)驗(yàn)8255A可編程并行接口方式0圖5.23(a)618255端口C接邏輯電平開關(guān)K0-K7,A口接LED顯示電路L0-L7圖5.23(b)開關(guān)和LED的連接8255端口C接邏輯電平開關(guān)K0-K7,A口接LED顯示電路628255A的端口地址為288H-28BH(Y1端),地址譯碼器如下圖所示:圖5.24實(shí)驗(yàn)用的地址譯碼器8255A的端口地址為288H-28BH(Y1端),地址63參考程序(E8255.ASM)如下: code segment assume cs:code start: mov dx,28bH ;設(shè)8255為C口輸入,A口輸出 mov al,8bH out dx,al inout:

mov dx,28aH ;從C口輸入一數(shù)據(jù) in al,dx mov dx,288H ;從A口輸出剛才從C口輸入的數(shù)據(jù) out dx,al mov ah,1 ;判斷是否有鍵按下? int 16H jz inout ;若無鍵按下,則返回到inout mov ah,4cH ;否則,返回DOS

int 21H code ends end start 參考程序(E8255.ASM)如下:64

例3:8255A工作于方式1輸出,作為與中斷方式工作的打印機(jī)接口,如圖5.25所示。A口作為打印輸出數(shù)據(jù)口,工作于方式1。此時(shí)C口的PC7、PC6和PC3是聯(lián)絡(luò)信號。設(shè)中斷請求接到8259A的IR3,對應(yīng)的中斷類型號為0BH;8259A的初始化在主機(jī)系統(tǒng)開啟時(shí)完成。例3:8255A工作于方式1輸出,作為與中斷方式工作的打65

字符輸出操作由中斷服務(wù)程序完成,設(shè)8255的口地址同例1,則主程序及中斷服務(wù)子程序如下:主程序:MAIN: mov al,0A0H ;A組工作于方式1輸出 out 0D3H,al mov ax,0 mov ds,ax mov bx,0BH*4 ;求中斷類型0BH在矢量表中的起始地址 mov ax,offsetINTHAND;取中斷矢量INTHAND的偏移地址 mov wordptr[bx],ax;在中斷矢量表中設(shè)置中斷矢量INTHAND的偏移地址 inc bx inc bx字符輸出操作由中斷服務(wù)程序完成,設(shè)8255的口地址同例1,66mov ax, segINTHAND;取中斷矢量INTHAND的段地址mov wordptr[bx],ax ;在中斷矢量表中設(shè)置中斷矢量INTHAND的段地址mov al,0DH ;使PC6=1,允許8255A中斷out 0D3H,alsti ;開放CPU中斷…中斷處理子程序:INTHAND: … ;保存現(xiàn)場 mov al,[si] ;SI為打印字符緩沖區(qū)指針 out 0D0H,al ;字符送端口A … ;恢復(fù)現(xiàn)場 iret ;中斷返回mov ax, segINTHAND;取中斷矢量INTHA67例4:8255A用作鍵盤接口,如圖5.26所示。端口A地址為80H,B口為81H,控制口為83H。A口作輸出口,B口作輸入口,其工作原理采用兩次掃描,第一次將PA3-PA0輸出均為低電平,由PB3-PB0讀入,判斷是否有一個(gè)低電平,若沒有,則繼續(xù)第例4:8255A用作鍵盤接口,如圖5.26所示。端口A地址68一次掃描;若有低電平,則用軟件消除抖動(dòng),延時(shí)10ms-20ms后,再去判別是否有低電平,若沒有,說明可能是干擾,必須重新實(shí)現(xiàn)第一次掃描,否則,經(jīng)10ms-20ms后,仍然判別出有低電平,則確認(rèn)有鍵按下;接著實(shí)現(xiàn)第二次掃描,判別是哪個(gè)鍵按下,這采用逐行掃描法。先掃第0行,即A口PA3-PA0輸出1110,然后從B口讀入,判別是否有低電平,若有,則可設(shè)別出0行上哪一列上有鍵按下;如果沒有,則掃第二行,即A口PA3-PA0輸出1101,然后從B口讀入,依上述方法判別,直至掃描最后一行,總可以找到按下的某一鍵。其鍵盤掃描程序如下:;判別是否有鍵按下 MOV AL,82H;8255A初始化,A口輸出,B口輸 OUT 83H,AL;入,均工作在方式0一次掃描;若有低電平,則用軟件消除抖動(dòng),延時(shí)10ms-69 MOV AL,00H ;使PA3-PA0=0000 OUT 80H,AL LOOA:IN AL,81H ;讀B口 AND AL,0FH ;屏蔽高4位 CMP AL,0FH ;判斷是否有鍵按下 JZ LOOA ;結(jié)果為0,無鍵按下,轉(zhuǎn)LOOA CALL D20MS ;結(jié)果不為0,有鍵按下,延時(shí)20ms IN AL,81H ;第2次讀B口 AND AL,0FH CMP AL,0FH ;判別B口是否有低電平輸入 JZ LOOA ;若B口沒有低電平輸入,則是干擾,;轉(zhuǎn)LOOA,否則,有鍵按下,執(zhí)行下面程序 ;判斷是哪個(gè)鍵按下?START:MOV BL,4 ;行數(shù)送BL MOV BH,4 ;列數(shù)送BH MOV AL,0FEH ;D0=0,準(zhǔn)備先掃描第0行 MOV CL,0FH ;鍵盤屏蔽碼送CL MOV CH,0FFH ;CH中存放起始鍵號 MOV AL,00H ;使PA3-PA0=000070LOP1:OUT 80H,AL ;A口輸出,掃描一行 ROL AL,1 ;修改掃描碼,準(zhǔn)備掃描下一行 MOV AH,AL ;暫時(shí)保存 IN AL,81H ;B口輸入,讀列值 AND AL,CL ;屏蔽高4位 CMP AL,CL ;比較 JNZ LOP2 ;有列線為0,轉(zhuǎn)LOP2,找列線 ADD CH,BH ;無鍵按下,修改鍵號,;準(zhǔn)備找下一行 MOV AL,AH ;恢復(fù)掃描碼 DEC BL ;行數(shù)減1 JNZ LOP1 ;行未掃完轉(zhuǎn)LOP1 JMP START ;重新掃描LOP2:INC CH ;鍵號增1 ROR AL,1 ;右移一位 JC LOP2 ;無鍵按下,查下一列線 MOV AL,CH ;已找到,鍵號送AL

LOP1:OUT 80H,AL ;A口輸出,掃描一行71 CMP AL,0 ;判斷是否是0號鍵 JZ KEY0 ;是0號鍵按下,轉(zhuǎn)KEY0CMP AL,1 ;否則,判斷是否為1號鍵JZ KEY1 ;是,轉(zhuǎn)KEY1…CMP AL,0EH ;判斷是否是14號鍵JZ KEY14 ;是,轉(zhuǎn)KEY14JMP KEY15 ;不是0-14號鍵,一定是15號鍵該4行4列矩陣鍵盤接口很容易擴(kuò)展,無論增加行還是列均可擴(kuò)充鍵的數(shù)量,只需對程序稍加改動(dòng)就可以。 CMP AL,0 ;判斷是否是0號鍵7256、書不僅是生活,而且是現(xiàn)在、過去和未來文化生活的源泉?!獛旆ㄒ?/p>

57、生命不可能有兩次,但許多人連一次也不善于度過?!獏蝿P特

58、問渠哪得清如許,為有源頭活水來。——朱熹

59、我的努力求學(xué)沒有得到別的好處,只不過是愈來愈發(fā)覺自己的無知?!芽▋?/p>

60、生活的道路一旦選定,就要勇敢地走到底,決不回頭。——左拉56、書不僅是生活,而且是現(xiàn)在、過去和未來文化生活的源泉?!?3微機(jī)原理與接口技術(shù)并行輸入輸出接口1、不要輕言放棄,否則對不起自己。2、要冒一次險(xiǎn)!整個(gè)生命就是一場冒險(xiǎn)。走得最遠(yuǎn)的人,常是愿意去做,并愿意去冒險(xiǎn)的人?!胺€(wěn)妥”之船,從未能從岸邊走遠(yuǎn)。--戴爾.卡耐基。3、人生就像一杯沒有加糖的咖啡,喝起來是苦澀的,回味起來卻有久久不會(huì)退去的余香。4、守業(yè)的最好辦法就是不斷的發(fā)展。5、當(dāng)愛不能完美,我寧愿選擇無悔,不管來生多么美麗,我不愿失去今生對你的記憶,我不求天長地久的美景,我只要生生世世的輪回里有你。微機(jī)原理與接口技術(shù)并行輸入輸出接口微機(jī)原理與接口技術(shù)并行輸入輸出接口1、不要輕言放棄,否則對不起自己。2、要冒一次險(xiǎn)!整個(gè)生命就是一場冒險(xiǎn)。走得最遠(yuǎn)的人,常是愿意去做,并愿意去冒險(xiǎn)的人?!胺€(wěn)妥”之船,從未能從岸邊走遠(yuǎn)。--戴爾.卡耐基。3、人生就像一杯沒有加糖的咖啡,喝起來是苦澀的,回味起來卻有久久不會(huì)退去的余香。4、守業(yè)的最好辦法就是不斷的發(fā)展。5、當(dāng)愛不能完美,我寧愿選擇無悔,不管來生多么美麗,我不愿失去今生對你的記憶,我不求天長地久的美景,我只要生生世世的輪回里有你。第五章并行輸入輸出接口第一節(jié)I/O接口的基本概念一、I/O接口的基本功能1、I/O接口的作用 ⑴解決高速主機(jī)與低速外圍設(shè)備間的矛盾,即速度配合;⑵處理外圍設(shè)備與CPU之間的不同的信息格式即信號格式配合;⑶使主機(jī)與外設(shè)協(xié)調(diào)工作,即時(shí)序配合;⑷外設(shè)和主機(jī)在信號電平一致,即電平配合。2、I/O接口傳送信息的類型I/O接口傳送的信息可分為三類:數(shù)據(jù)信息,狀態(tài)信息和控制信息。⑴數(shù)據(jù)信息:數(shù)據(jù)信息可分為四種①數(shù)字量,二進(jìn)制數(shù)據(jù),最小單位是一個(gè)bit(位),還有字節(jié)、字等。②模擬量,現(xiàn)場信號大多是由傳感器來的模擬電壓或電流,他們必須經(jīng)過A/D轉(zhuǎn)換,變成數(shù)字量才能進(jìn)入計(jì)算機(jī),有些接口有處理模擬量的電路,稱為模擬接口。③開關(guān)量,開關(guān)量只有兩種狀態(tài),即“開”或“關(guān)”,可用一位二進(jìn)制數(shù)表示,如“1”表示“開”,“0”表示“關(guān)”。④脈沖量,脈沖量是以脈沖形式表示的一種信號,如計(jì)算機(jī)中用到的定時(shí)脈沖或控制脈沖等。⑵狀態(tài)信息:狀態(tài)信息是反映外設(shè)當(dāng)前所處的工作狀態(tài),以作為CPU與外設(shè)間可靠交換數(shù)據(jù)的條件。當(dāng)輸入微機(jī)原理與接口技術(shù)并行輸入輸出接口1、不要輕言放棄,否則74微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件75微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件76微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件77微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件78

圖5.1接口電路的基本結(jié)構(gòu)圖5.1接口電路的基本結(jié)79

三、I/O端口的編址方式

1、I/O端口和存儲(chǔ)器統(tǒng)一編址該方式是將存儲(chǔ)器地址空間的一部分作為I/O設(shè)備的地址空間,所以I/O端口地址也是一個(gè)存儲(chǔ)器地址。優(yōu)點(diǎn)是CPU訪問存儲(chǔ)器的指令都可以訪問I/O端口,不需要專門的I/O指令。二是使I/O控制邏輯簡單,其引腳減少。缺點(diǎn)是I/O端口占用了一部分存儲(chǔ)器空間;二是訪存指令通常比專用的I/O指令長,所以執(zhí)行時(shí)間較長。MOTOROLA的微機(jī)系列如MC6800系列,MC68000系列都采用這一方法。APPLE公司如6502系列也采用這一方法。三、I/O端口的編址方式802、I/O端口和存儲(chǔ)器單獨(dú)編址

基本想法是I/O端口地址和存儲(chǔ)器地址分開,單獨(dú)編址,在指令系統(tǒng)中分別設(shè)立存儲(chǔ)器讀寫指令和I/O端口讀寫指令。在地址總線上的地址信息究竟是存儲(chǔ)器地址還是I/O地址,一般是在CPU上設(shè)置專門的控制線,如=1為I/O操作,=0為存儲(chǔ)器操作。優(yōu)點(diǎn):I/O端口不占用存儲(chǔ)器地址空間;單獨(dú)I/O指令比較短,地址譯碼方便,指令執(zhí)行速度快。缺點(diǎn):需要單獨(dú)的I/O指令,這些指令一般功能簡單,通常只有讀寫功能;需專門的I/O控制線,增加了CPU本身控制邏輯的復(fù)雜性。Intel系列和Zilog系列采用此方法。2、I/O端口和存儲(chǔ)器單獨(dú)編址81四、I/O接口的地址分配

每臺(tái)微機(jī)都給I/O端口分配相應(yīng)的端口地址。IBM/PC-XT使用10位地址作為I/O端口地址,即可用端口有1024個(gè),以后的PC機(jī)(8086)用16位地址作為I/O端口地址,即可用端口有65536個(gè)。可用測試工具QAPLUS等軟件檢測系統(tǒng)配置及其端口地址使用情況;也可查閱每臺(tái)機(jī)器的硬件手冊。

五、I/O端口地址的譯碼及片選信號的產(chǎn)生

I/O端口地址的生成一般是由地址信號A9-A0的高位產(chǎn)生譯碼的片選信號CS,低位產(chǎn)生片內(nèi)的寄存器地址。在I/O操作時(shí),CPU執(zhí)行IN或OUT指令,首先是端口地址有效,然后是IOR或IOW有效。

四、I/O接口的地址分配821、利用門電路進(jìn)行譯碼如圖5.2所示,端口地址為348H-34FH,由于A0-A2三位地址沒有參加譯碼,所以一個(gè)片選信號占用8個(gè)地址單元。實(shí)際上這低三位地址加到芯片上,產(chǎn)生片內(nèi)寄存器的地址。A9A8A7A6A5A4A3A2A1A01101001×××

2、用集成譯碼器進(jìn)行譯碼如圖5.3所示,使用74LS138集成譯碼器譯出8個(gè)端口地址。由于所有A0-A9地址線都參加譯碼,所以稱1、利用門電路進(jìn)行譯碼如圖5.2所示,端口地址為83

為全譯碼,這時(shí)每條線對應(yīng)一個(gè)端口地址。A9A8A7A6A5A4A3A2A1A0=11,0101,1×××1101011×××=358-F為全譯碼,這時(shí)每條線對應(yīng)一個(gè)端口地址。A9A8A784

3、開關(guān)式可選擇譯碼電路

3、開關(guān)式可選擇譯碼電路85如果用戶希望譯碼器能適應(yīng)不同的地址分配場合,則可采用開關(guān)式地址可選擇譯碼電路,如圖5.4所示。電路用DIP開關(guān)選擇地址,并使用了一片74LS688八位數(shù)據(jù)比較器。當(dāng)輸入端P0-P7的地址與設(shè)置端Q0-Q7的狀態(tài)一致時(shí),輸出P=Q為低,其輸出控制地址譯碼芯片74LS138的譯碼。圖中,上面一片74LS138產(chǎn)生讀端口地址,下面一片74LS138產(chǎn)生寫端口地址,這樣使8個(gè)口地址作16個(gè)口地址用。此電路必須A9=1,AEN=0時(shí)才能有效譯碼。(AEN=0是CPU控制總線,AEN=1時(shí)DMA控制總線)。

4、使用可編程芯片進(jìn)行地址譯碼

目前大多數(shù)地址譯碼采用可編程芯片,如GAL或PAL器件。把譯碼電路的邏輯關(guān)系按說明文件格式寫入一文件,然后用編程器把邏輯關(guān)系寫入GAL器件中。如果用戶希望譯碼器能適應(yīng)不同的地址分配場合,則86第二節(jié)I/O數(shù)據(jù)傳送控制方式

CPU與外設(shè)之間數(shù)據(jù)傳送的方式通常有3種,即程序控制方式,中斷控制方式和直接存儲(chǔ)器方式(DMA)。一、程序控制方式

程序傳送是指CPU與外設(shè)間交換數(shù)據(jù)在程序控制(即IN或OUT指令控制)下進(jìn)行。

1、無條件傳送這種方式適合于外設(shè)總是處于準(zhǔn)備好的情況,因此程序不必檢查外設(shè)的狀態(tài)。如圖5.5所示,端口地址譯碼器產(chǎn)生選通信號,RD信號為讀,WR信號為寫,開放三態(tài)緩沖器(讀)或?qū)懭腈i存器,進(jìn)行數(shù)據(jù)讀或?qū)憽5诙?jié)I/O數(shù)據(jù)傳送控制方式CPU與外設(shè)之間數(shù)87

圖5.5無條件傳送方式圖5.5無條件88

例1:一個(gè)采用無條件傳送的數(shù)據(jù)采集系統(tǒng)圖5.6無條件輸入的數(shù)據(jù)采集系統(tǒng)例1:一個(gè)采用無條件傳送的數(shù)據(jù)采集系統(tǒng)圖5.6無條件89

這是一個(gè)16位精度的數(shù)據(jù)采集系統(tǒng)。被采集的8個(gè)模擬量,由繼電器繞組P0、P1、…、P7分別控制觸點(diǎn)K0、K1、…、K7逐個(gè)接通。每次采樣轉(zhuǎn)換成16位BCD碼,高8位和低8位通過兩個(gè)端口(端口地址為11H和10H)輸入到計(jì)算機(jī)。CPU通過端口20H輸出控制信號,以控制繼電器的吸合,實(shí)現(xiàn)采集不同通道的模擬量。采集過程如下:(1)先斷開所有的繼電器觸點(diǎn),不采集數(shù)據(jù);(2)延遲一段時(shí)間后,使K0閉合,采集第1個(gè)通道的模擬量,并保持一段時(shí)間,以使數(shù)字電壓表將模擬電壓轉(zhuǎn)換為16位BCD碼;(3)分別將高8位與低8位BCD碼存入內(nèi)存,并轉(zhuǎn)存到DSTOR開始的數(shù)據(jù)區(qū);(4)利用移位與循環(huán)實(shí)現(xiàn)8個(gè)模擬量的依次采集和存儲(chǔ)。這是一個(gè)16位精度的數(shù)據(jù)采集系統(tǒng)。被采集的8個(gè)模擬90

數(shù)據(jù)采集程序如下: START: MOV DX,0100H ;01H置吸合第一個(gè)繼電器 ;00斷開所有繼電器代碼 LEA BX,DSTOR ;置數(shù)據(jù)緩沖區(qū)地址指針 XOR AL,AL ;清AL和CF AGAIN: MOV AL,DL OUT 20H,AL ;斷開所有繼電器 CALL NEARDELAY1 ;繼電器觸點(diǎn)釋放時(shí)間 MOV AL,DH OUT 20H,AL ;先使P0吸合 CALL NEARDELAY2 ;繼電器觸點(diǎn)閉合和轉(zhuǎn)換時(shí)間 IN AL,10H ;輸入低8位 IN AH,11H ;輸入高8位 MOV [BX],AX ;存入內(nèi)存 INC BX ;地址指針加2 INC BX RCL DH,1 ;DH帶進(jìn)位循環(huán)左移一位 JNC AGAIN ;8個(gè)通道完了嗎?沒有,循環(huán) DONE:… ;已完,則執(zhí)行其他程序 數(shù)據(jù)采集程序如下:91

2、程序查詢傳送方式⑴程序查詢式輸入圖5.7查詢式輸入的接口電路2、程序查詢傳送方式圖5.7查詢式輸入的接口電路92

如圖5.7所示,CPU從接口讀取狀態(tài)信息,判斷READY是否為1?即是否準(zhǔn)備好,若已準(zhǔn)備好,則讀入數(shù)據(jù)。查詢部分程序如下: POLL:in al,status_port ;讀狀態(tài)端口的信息 test al,80H ;設(shè)READY信息在D7位 je POLL ;D7=1未就緒,則循環(huán)再查 in al,data_port ;已就緒,則讀入數(shù)據(jù)其中:status_port是狀態(tài)口地址,data_port是數(shù)據(jù)口地址。⑵查詢式輸出如圖5.8所示,CPU從接口讀取狀態(tài)信息,判斷BUSY是否為1?BUSY=0表示外設(shè)不忙,則CPU執(zhí)行輸出指令如圖5.7所示,CPU從接口讀取狀態(tài)信息,判斷READ93

,輸出數(shù)據(jù)到外設(shè)。圖5.8查詢式輸出接口電路,輸出數(shù)據(jù)到外設(shè)。圖5.8查詢式輸出接口電路94

查詢式輸出的部分程序如下:POLL: in al,ststus_port ;讀狀態(tài)口,查D7位 test al,80H je POLL ;D7=1即忙線=1,則循環(huán) mov al,store ;否則外設(shè)空閑,從內(nèi)存取數(shù) out data_port,al ;輸出到外設(shè)的數(shù)據(jù)口3、一個(gè)查詢方式的數(shù)據(jù)采集系統(tǒng)如圖5.9所示,有8個(gè)模擬量輸入的數(shù)據(jù)采集系統(tǒng),8個(gè)模擬量經(jīng)多路開關(guān)選擇其中一路,每次一個(gè)模擬量到A/D轉(zhuǎn)換器;同時(shí)A/D轉(zhuǎn)換器由端口4輸出的D4控制啟動(dòng)與停止。A/D轉(zhuǎn)換器的READY信號由端口2的D0輸出至CPU數(shù)據(jù)總線;A/D轉(zhuǎn)換后的數(shù)據(jù)由端口3輸至數(shù)據(jù)總線。查詢式輸出的部分程序如下:95圖5.9查詢式數(shù)據(jù)采集系統(tǒng)這里用到三個(gè)端口地址,端口2為狀態(tài)口,端口3為數(shù)據(jù)口,端口4為控制口用于選擇那一路。圖5.9查詢式數(shù)據(jù)采集系統(tǒng)這里用到三個(gè)端口地址,端口2為96數(shù)據(jù)采集過程的程序如下:START:mov dl,0F8H ;設(shè)置啟動(dòng)信號,低3位選通多路開關(guān) mov ax,segdstor;設(shè)置輸入數(shù)據(jù)的內(nèi)存地址指針 mov es,ax ;段地址送es lea di,dstor ;偏移地址送diAGAIN:mov al,dl and al,0efH ;使D4=0 out 04,al ;停止A/D轉(zhuǎn)換 call delay ;等待停止A/D轉(zhuǎn)換操作完成 mov al,dl ;使al=0F8H,D4=1 out 04,Al ;選輸入通道并啟動(dòng)A/D轉(zhuǎn)換POLL: in al,02 ;從02端口輸入狀態(tài)信息 shr al,1 ;查AL的D0 jnc POLL ;判READY=1?若D0=0,未準(zhǔn)備好,則循環(huán) in al,03 ;若已準(zhǔn)備好,則經(jīng)端口3輸入采樣數(shù)據(jù)到AL STOSB ;輸入數(shù)據(jù)轉(zhuǎn)送至內(nèi)存單元,地址指針自動(dòng)加1 inc dl ;輸入模擬通道號加1 jne AGAIN ;8個(gè)模擬量未完則循環(huán) … ;輸入已完,執(zhí)行別的程序數(shù)據(jù)采集過程的程序如下:97

二、中斷傳送

程序查詢傳送方式明顯的缺點(diǎn)是CPU利用率低,不能滿足實(shí)時(shí)輸入輸出的需要,中斷方式可以較好地解決這一問題。所謂中斷是指程序運(yùn)行中出現(xiàn)了某種緊急事件,CPU必須中止現(xiàn)正在執(zhí)行的程序,轉(zhuǎn)去處理該緊急事件(執(zhí)行一段中斷服務(wù)程序),并在處理完后返回原運(yùn)行的程序的過程。完整的中斷處理過程包括中斷請求、中斷判優(yōu)、中斷響應(yīng)、中斷處理和中斷返回。為了使中斷服務(wù)程序不影響主程序的執(zhí)行,需把主程序斷點(diǎn)處的有關(guān)寄存器的內(nèi)容保存下來,稱之為保護(hù)現(xiàn)場;在中斷服務(wù)程序操作完成后再恢復(fù)這些寄存器的內(nèi)容,稱之為恢復(fù)現(xiàn)場。用中斷方式時(shí),外設(shè)處于就緒狀態(tài)時(shí),例如輸入設(shè)備數(shù)據(jù)準(zhǔn)備好時(shí),二、中斷傳送98或輸出設(shè)備不忙可以接收數(shù)據(jù)時(shí),便向CPU發(fā)出中斷請求,CPU暫停當(dāng)前執(zhí)行的主程序進(jìn)入中斷響應(yīng),與外設(shè)進(jìn)行一次數(shù)據(jù)交換,操作完成后再繼續(xù)執(zhí)行原來的主程序。通常CPU在執(zhí)行每一條指令的末尾處會(huì)檢查外設(shè)是否有中斷請求(這種查詢是由硬件完成的,不占用CPU的工作時(shí)間),如果有,在中斷允許(即IF=1)的情況下,CPU將保留下一條指令的地址(斷點(diǎn))和當(dāng)前標(biāo)志寄存器的內(nèi)容,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,操作完成后恢復(fù)斷點(diǎn)和標(biāo)志寄存器的內(nèi)容,繼續(xù)執(zhí)行原來被中斷的程序。中斷方式的優(yōu)點(diǎn)很明顯,大大提高了CPU的工作效率,而且外設(shè)有申請中斷服務(wù)的主動(dòng)權(quán)。有關(guān)中斷的詳細(xì)工作情況將在第六章中介紹?;蜉敵鲈O(shè)備不忙可以接收數(shù)據(jù)時(shí),便向CPU發(fā)出中斷請求,99三、DMA方式

利用程序中斷方式,雖然可以提高CPU的工作效率,但它仍需要由程序來傳送數(shù)據(jù),并在中斷處理時(shí)要“保護(hù)現(xiàn)場”和“恢復(fù)現(xiàn)場”等,要占用一定時(shí)間,是每傳送一個(gè)字節(jié)大約要幾十微秒到幾百微秒,這對于高速外設(shè)就顯得太慢了。DMA方式是一種由專門的硬件電路執(zhí)行I/O交換的傳送方式,它讓外設(shè)接口與內(nèi)存直接進(jìn)行高速的數(shù)據(jù)交換,而不必經(jīng)過CPU,實(shí)現(xiàn)對存儲(chǔ)器的直接存取。這種專門的硬件叫DMA控制器,簡稱DMAC,如圖5.10。三、DMA方式100

如圖所示,當(dāng)接口準(zhǔn)備好就向DMAC發(fā)DMA請求,接著CPU通過HOLD引腳接收DMAC發(fā)出的總線請求;CPU在完成當(dāng)前總線操如圖所示,當(dāng)接口準(zhǔn)備好就向DMAC發(fā)DMA請求,接著CPU101作后,就發(fā)出HLDA的總線響應(yīng)信號給DMAC,DMAC收到此信號后便接管對總線的控制權(quán),開始DMA操作。當(dāng)DMA傳送結(jié)束,DMAC將HOLD信號變成低電平,并放棄對總線的控制權(quán)。CPU檢測到HOLD為低后,也將HLDA變成低,并恢復(fù)對總線的控制權(quán)。第三節(jié)DMA傳輸和控制器參見課本P289-298頁。作后,就發(fā)出HLDA的總線響應(yīng)信號給DMAC,DMAC102第五節(jié)并行通信及接口電路通用接口可分為并行接口和串行接口兩大類。并行傳送是把一個(gè)字節(jié)或多個(gè)字節(jié)用多條信號線同時(shí)進(jìn)行傳輸,即并行接口是按字節(jié)傳送的;串行接口和CPU之間按并行傳送,而和外設(shè)之間是一個(gè)二進(jìn)制位一個(gè)二進(jìn)制位的傳送,即串行接口是按位傳送的。參見圖5.11所示。一、并行接口的組成及其與CPU和外設(shè)的連接

1、并行接口的基本組成(如圖5.12所示)⑴兩個(gè)或兩個(gè)以上的具有緩沖能力的數(shù)據(jù)寄存器第五節(jié)并行通信及接口電路通用接口可分為并行接口103微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件104

⑵可供CPU訪問的控制及狀態(tài)寄存器⑶片選和內(nèi)部控制邏輯電路⑷與外設(shè)進(jìn)行數(shù)據(jù)交換的控制和聯(lián)絡(luò)信號線⑸與CPU用中斷方式傳送數(shù)據(jù)的相關(guān)中斷控制2、與CPU的連接與CPU的連接主要是雙向數(shù)據(jù)總線,讀、寫控制線,復(fù)位信號,中斷請求以及狀態(tài)信號和地址譯碼產(chǎn)生的片選信號。3、與外設(shè)的連接與輸入設(shè)備的連接:并行輸入數(shù)據(jù)線,數(shù)據(jù)傳輸應(yīng)答信號(輸入準(zhǔn)備好和輸入回答信號);與輸出設(shè)備的連接:并行輸出數(shù)據(jù)線,數(shù)據(jù)傳輸應(yīng)答信號(輸出準(zhǔn)備好和輸出回答信號);⑵可供CPU訪問的控制及狀態(tài)寄存器105微機(jī)原理與接口技術(shù)--并行輸入輸出接口課件106二、并行接口的數(shù)據(jù)輸入輸出過程

1、數(shù)據(jù)輸入⑴外設(shè)將數(shù)據(jù)傳送到并行接口,同時(shí)給出“輸入數(shù)據(jù)準(zhǔn)備好”信號;⑵接口把數(shù)據(jù)接收到輸入緩沖寄存器,給出“輸入回答”信號(高電平)到外設(shè);⑶若采用中斷方式,則接口向CPU發(fā)中斷請求信號,并使?fàn)顟B(tài)寄存器中的“輸入緩沖器滿”位置1(也可以用查詢方式);⑷CPU響應(yīng)接口的中斷請求(或查詢相應(yīng)的狀態(tài)位),在中斷服務(wù)程序中執(zhí)行IN指令讀取接口中的數(shù)據(jù);⑸接口給外設(shè)的“輸入回答”信號變成低,通知外設(shè)可以輸入新的數(shù)據(jù),此后轉(zhuǎn)到⑴開始下一個(gè)數(shù)據(jù)的輸入過程。2、數(shù)據(jù)輸出⑴CPU執(zhí)行OUT指令把數(shù)據(jù)寫到接口(中斷或查詢都可以);

二、并行接口的數(shù)據(jù)輸入輸出過程107

⑵接口向外設(shè)發(fā)出“輸出準(zhǔn)備好”信號,通知外設(shè)可以把數(shù)據(jù)取走;⑶外設(shè)取走數(shù)據(jù)后,向接口發(fā)“輸出回答”信號;⑷接口向CPU發(fā)出新的中斷請求,并使?fàn)顟B(tài)寄存器中的“輸出緩沖器空“位置1,要求CPU輸出新的數(shù)據(jù),轉(zhuǎn)到⑴,開始下一輸出過程。

第六節(jié)可編程并行通信接口片8255A一、8255的內(nèi)部結(jié)構(gòu)及其功能1、8255的引腳

參見圖5.13(a),共有40條引線。電源與地線2條;與外設(shè)相連的有24條;與CPU相連的有14條。⑵接口向外設(shè)發(fā)出“輸出準(zhǔn)備好”信號,通知外設(shè)可以把數(shù)據(jù)108

圖5.138255引腳和功能示意圖圖5.138255引腳和功能示意109

2、8255的功能如圖5.13(b)所示,接口的左邊與CPU連接,右邊與外設(shè)連接,有A、B、C三個(gè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論