




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第五章 并行輸入輸出接口 本章內(nèi)容在書上第七章和第八章第五、六節(jié) 第一節(jié) I/O接口的基本概念一、 I/O接口的基本功能 1、 I/O接口的作用 解決高速主機(jī)與低速外圍設(shè)備間的矛盾,即速度配合; 處理外圍設(shè)備與CPU之間的不同的信息格式即信號(hào)格式配合; 使主機(jī)與外設(shè)協(xié)調(diào)工作,即時(shí)序配合; 外設(shè)和主機(jī)在信號(hào)電平一致,即電平配合。2、 I/O接口傳送信息的類型 I/O接口傳送的信息可分為三類:數(shù)據(jù)信息,狀態(tài)信息和控制信息。 數(shù)據(jù)信息:數(shù)據(jù)信息可分為四種 數(shù)字量,二進(jìn)制數(shù)據(jù),最小單位是一個(gè)bit( 位),還有字節(jié)、字等。 模擬量,現(xiàn)場(chǎng)信號(hào)大多是由傳感器來(lái)的模擬電壓或電流,他們必須經(jīng)過(guò)A/D轉(zhuǎn)換,變成
2、數(shù)字量才能進(jìn)入計(jì)算機(jī),有些接口有處理模擬量的電路,稱為模擬接口。 開(kāi)關(guān)量,開(kāi)關(guān)量只有兩種狀態(tài),即“開(kāi)”或“關(guān)”,可用一位二進(jìn)制數(shù)表示,如“1”表示“開(kāi)”,“0”表示“關(guān)”。 脈沖量,脈沖量是以脈沖形式表示的一種信號(hào),如計(jì)算機(jī)中用到的定時(shí)脈沖或控制脈沖等。 狀態(tài)信息:狀態(tài)信息是反映外設(shè)當(dāng)前所處的工作狀態(tài),以作為CPU與外設(shè)間可靠交換數(shù)據(jù)的條件。當(dāng)輸入 時(shí),它告訴CPU,有關(guān)的輸入設(shè)備是否準(zhǔn)備好(Ready=1?);輸出時(shí)它告訴CPU,輸出設(shè)備是否空閑(Busy= 0?)。 控制信息:它用于控制外設(shè)的啟動(dòng)和停止,以及給出命令字,用于設(shè)置接口的工作方式。 通常接口中三種信息有不同的寄存器傳送,如數(shù)據(jù)
3、輸入寄存器、數(shù)據(jù)輸出寄存器、狀態(tài)寄存器和控制(命令)寄存器,他們使用不同的端口地址來(lái)區(qū)分不同性質(zhì)的信息。 3、 I/O接口的主要功能 數(shù)據(jù)緩沖功能,接口中有數(shù)據(jù)輸入寄存器和輸出寄存器,用于解決主機(jī)與外設(shè)在工作速度上的矛盾。 提供聯(lián)絡(luò)信息,接口中有狀態(tài)寄存器 信息格式的轉(zhuǎn)換,包括電平轉(zhuǎn)換、并串轉(zhuǎn)換等。 設(shè)備選擇,每臺(tái)外設(shè)都有設(shè)備地址,用于與其他設(shè)備區(qū)別。 中斷管理,將在中斷一章中詳細(xì)介紹。 可編程功能,使接口具有多功能和靈活設(shè)置。 對(duì)外設(shè)的控制和監(jiān)測(cè)功能二、 I/O接口的基本結(jié)構(gòu) 如圖5.1所示。電路包括四組寄存器和一個(gè)中斷邏輯。這些寄存器也被稱為端口,每個(gè)端口有一個(gè)端口地址,CPU通過(guò)這些端口
4、與外設(shè)交換數(shù)據(jù)。 接口有兩個(gè)界面,一面是計(jì)算機(jī)總線;另一面是外圍設(shè)備。 圖5.1 接口電路的基本結(jié)構(gòu) 三、I/O端口的編址方式 1、 I/O端口和存儲(chǔ)器統(tǒng)一編址 該方式是將存儲(chǔ)器地址空間的一部分作為I/O設(shè)備的地址空間,所以I/O端口地址也是一個(gè)存儲(chǔ)器地址。 優(yōu)點(diǎn)是CPU訪問(wèn)存儲(chǔ)器的指令都可以訪問(wèn)I/O端口,不需要專門的I/O指令。二是使I/O控制邏輯簡(jiǎn)單,其引腳減少。 缺點(diǎn)是I/O端口占用了一部分存儲(chǔ)器空間;二是訪存指令通常比專用的I/O指令長(zhǎng),所以執(zhí)行時(shí)間較長(zhǎng)。 MOTOROLA的微機(jī)系列如MC6800系列,MC68000系列都采用這一方法。APPLE公司如6502系列也采用這一方法。 2
5、、 I/O端口和存儲(chǔ)器單獨(dú)編址 基本想法是I/O端口地址和存儲(chǔ)器地址分開(kāi),單獨(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指令,這些指令一般功能簡(jiǎn)單,通常只有讀寫功能;需專門的I/O控制線,增加了CPU本身控制邏輯的復(fù)雜性。Intel系列和Zilog系列采用此方法。MIO/ 四、 I/O接口的地址分配 每臺(tái)微機(jī)都給I/O端口分配
6、相應(yīng)的端口地址。 IBM/PC-XT使用10位地址作為I/O端口地址,即可用端口有1024個(gè),以后的PC機(jī)(8086)用16位地址作為I/O端口地址,即可用端口有65536個(gè)。書上P165頁(yè)表7-1和表7-2是PC/XT機(jī)的I/O端口地址分配。 可用測(cè)試工具QAPLUS等軟件檢測(cè)系統(tǒng)配置及其端口地址使用情況;也可查閱每臺(tái)機(jī)器的硬件手冊(cè)。 五、 I/O端口地址的譯碼及片選信號(hào)的產(chǎn)生 I/O端口地址的生成一般是由地址信號(hào)A9-A0的高位產(chǎn)生譯碼的片選信號(hào) CS ,低位產(chǎn)生片內(nèi)的寄存器地址。在I/O操作時(shí),CPU執(zhí)行IN或OUT指令,首先是端口地址有效,然后是IOR或IOW有效。 1、利用門電路進(jìn)行
7、譯碼 如圖5.2所示,端口地址為348H-34FH,由于A0-A2三位地址沒(méi)有參加譯碼,所以一個(gè)片選信號(hào)占用8個(gè)地址單元。實(shí)際上這低三位地址加到芯片上,產(chǎn)生片內(nèi)寄存器的地址。A9A8A7A6A5A4A3A2A1A0 1 1 0 1 0 0 1 2、用集成譯碼器進(jìn)行譯碼 如圖5.3所示,使用74LS138集成譯碼器譯出8個(gè)端口地址。由于所有A0-A9地址線都參加譯碼,所以稱 為全譯碼,這時(shí)每條線對(duì)應(yīng)一個(gè)端口地址。A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 = 11,0101,1 1 1 0 1 0 1 1 = 3 5 8-F 3、開(kāi)關(guān)式可選擇譯碼電路 如果用戶希望譯碼器能適應(yīng)不同
8、的地址分配場(chǎng)合,則可采用開(kāi)關(guān)式地址可選擇譯碼電路,如圖5.4所示。電路用DIP開(kāi)關(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)系按說(shuō)明文件格式
9、寫入一文件,然后用編程器把邏輯關(guān)系寫入GAL器件中。第二節(jié) I/O數(shù)據(jù)傳送控制方式 CPU與外設(shè)之間數(shù)據(jù)傳送的方式通常有3種,即程序控制方式,中斷控制方式和直接存儲(chǔ)器方式(DMA)。一、程序控制方式 程序傳送是指CPU與外設(shè)間交換數(shù)據(jù)在程序控制(即IN或OUT指令控制)下進(jìn)行。 1、無(wú)條件傳送 這種方式適合于外設(shè)總是處于準(zhǔn)備好的情況,因此程序不必檢查外設(shè)的狀態(tài)。如圖5.5所示,端口地址譯碼器產(chǎn)生選通信號(hào),RD信號(hào)為讀,WR信號(hào)為寫,開(kāi)放三態(tài)緩沖器(讀)或?qū)懭腈i存器,進(jìn)行數(shù)據(jù)讀或?qū)憽?圖5.5 無(wú)條件傳送方式 例1:一個(gè)采用無(wú)條件傳送的數(shù)據(jù)采集系統(tǒng)圖5.6 無(wú)條件輸入的數(shù)據(jù)采集系統(tǒng) 這是一個(gè)16
10、位精度的數(shù)據(jù)采集系統(tǒng)。被采集的8個(gè)模擬量,由繼電器繞組P0、P1、P7分別控制觸點(diǎn)K0、K1、 、K7逐個(gè)接通。每次采樣轉(zhuǎn)換成16位BCD碼,高8位和低8位通過(guò)兩個(gè)端口(端口地址為11H和10H)輸入到計(jì)算機(jī)。CPU通過(guò)端口20H輸出控制信號(hào),以控制繼電器的吸合,實(shí)現(xiàn)采集不同通道的模擬量。 采集過(guò)程如下:(1)先斷開(kāi)所有的繼電器觸點(diǎn),不采集數(shù)據(jù);(2)延遲一段時(shí)間后,使K0閉合,采集第1個(gè)通道的模擬量,并保持一段時(shí)間,以使數(shù)字電壓表將模擬電壓轉(zhuǎn)換為16位BCD碼;(3)分別將高8位與低8位BCD碼存入內(nèi)存,并轉(zhuǎn)存到DSTOR開(kāi)始的數(shù)據(jù)區(qū);(4)利用移位與循環(huán)實(shí)現(xiàn)8個(gè)模擬量的依次采集和存儲(chǔ)。 數(shù)
11、據(jù)采集程序如下:START:MOVDX,0100H;01H置吸合第一個(gè)繼電器;00斷開(kāi)所有繼電器代碼LEABX,DSTOR;置數(shù)據(jù)緩沖區(qū)地址指針XORAL,AL;清AL和CF AGAIN:MOVAL,DLOUT20H,AL;斷開(kāi)所有繼電器CALLNEAR DELAY1;繼電器觸點(diǎn)釋放時(shí)間MOVAL,DHOUT20H,AL;先使P0吸合CALLNEAR DELAY2;繼電器觸點(diǎn)閉合和轉(zhuǎn)換時(shí)間INAL,10H;輸入低8位INAH,11H ;輸入高8位MOVBX,AX;存入內(nèi)存INCBX;地址指針加2INCBXRCLDH,1;DH帶進(jìn)位循環(huán)左移一位JNCAGAIN;8個(gè)通道完了嗎?沒(méi)有,循環(huán)DONE
12、: ;已完,則執(zhí)行其他程序 2、程序查詢傳送方式 程序查詢式輸入圖5 .7 查詢式輸入的接口電路 如圖5.7所示,CPU從接口讀取狀態(tài)信息,判斷READY是否為1?即是否準(zhǔn)備好,若已準(zhǔn)備好,則讀入數(shù)據(jù)。查詢部分程序如下:POLL: inal, status_port ;讀狀態(tài)端口的信息testal, 80H;設(shè)READY信息在D7位jePOLL;未就緒,則循環(huán)再查inal, data_port;已就緒,則讀入數(shù)據(jù) 其中:status_port是狀態(tài)口地址, data_port是數(shù)據(jù)口地址。 查詢式輸出 如圖5.8所示, CPU從接口讀取狀態(tài)信息,判斷BUSY是否為1?BUSY=0表示外設(shè)不忙,
13、則CPU執(zhí)行輸出指令 ,輸出數(shù)據(jù)到外設(shè)。圖5.8 查詢式輸出接口電路 查詢式輸出的部分程序如下:POLL: inal, ststus_port ;讀狀態(tài)口,查D7位testal, 80HjnePOLL;D7=1即忙線=1,則循環(huán)moval, store;否則外設(shè)空閑,從內(nèi)存取數(shù)outdata_port, al;輸出到外設(shè)的數(shù)據(jù)口 3、一個(gè)查詢方式的數(shù)據(jù)采集系統(tǒng) 如圖5.9所示,有8個(gè)模擬量輸入的數(shù)據(jù)采集系統(tǒng),8個(gè)模擬量經(jīng)多路開(kāi)關(guān)選擇其中一路,每次一個(gè)模擬量到A/D轉(zhuǎn)換器;同時(shí)A/D轉(zhuǎn)換器由端口4輸出的D4控制啟動(dòng)與停止。 A/D轉(zhuǎn)換器的READY信號(hào)由端口2的D0輸出至CPU數(shù)據(jù)總線; A/D
14、轉(zhuǎn)換后的數(shù)據(jù)由端口3輸至數(shù)據(jù)總線。圖5.9 查詢式數(shù)據(jù)采集系統(tǒng)這里用到三個(gè)端口地址,端口2為狀態(tài)口,端口3為數(shù)據(jù)口,端口4為控制口用于選擇那一路。數(shù)據(jù)采集過(guò)程的程序如下:START:movdl, 0F8H;設(shè)置啟動(dòng)信號(hào),低3位選通多路開(kāi)關(guān)movax, seg dstor;設(shè)置輸入數(shù)據(jù)的內(nèi)存地址指針moves, ax;段地址送esleadi, dstor ;偏移地址送diAGAIN:moval, dlandal, 0efH ;使D4=0out04, al;停止A/D轉(zhuǎn)換calldelay;等待停止A/D轉(zhuǎn)換操作完成moval, dl;使al=0F8H,D4=1out04,Al ;選輸入通道并啟動(dòng)
15、A/D轉(zhuǎn)換POLL:in al, 02;從02端口輸入狀態(tài)信息shral, 1;查AL的D0jncPOLL;判READY=1?若D0=0,未準(zhǔn)備好,則循環(huán)inal, 03;若已準(zhǔn)備好,則經(jīng)端口3輸入采樣數(shù)據(jù)到ALSTOSB;輸入數(shù)據(jù)轉(zhuǎn)送至內(nèi)存單元,地址指針自動(dòng)加1incdl;輸入模擬通道號(hào)加1jneAGAIN ;8個(gè)模擬量未完則循環(huán) ;輸入已完,執(zhí)行別的程序 二、中斷傳送 程序查詢傳送方式明顯的缺點(diǎn)是CPU利用率低,不能滿足實(shí)時(shí)輸入輸出的需要,中斷方式可以較好地解決這一問(wèn)題。 所謂中斷是指程序運(yùn)行中出現(xiàn)了某種緊急事件,CPU必須中止現(xiàn)正在執(zhí)行的程序,轉(zhuǎn)去處理該緊急事件(執(zhí)行一段中斷服務(wù)程序),
16、并在處理完后返回原運(yùn)行的程序的過(guò)程。 完整的中斷處理過(guò)程包括中斷請(qǐng)求、中斷判優(yōu)、中斷響應(yīng)、中斷處理和中斷返回。 為了使中斷服務(wù)程序不影響主程序的執(zhí)行,需把主程序斷點(diǎn)處的有關(guān)寄存器的內(nèi)容保存下來(lái),稱之為保護(hù)現(xiàn)場(chǎng);在中斷服務(wù)程序操作完成后再恢復(fù)這些寄存器的內(nèi)容,稱之為恢復(fù)現(xiàn)場(chǎng)。 用中斷方式時(shí),外設(shè)處于就緒狀態(tài)時(shí),例如輸入設(shè)備數(shù)據(jù)準(zhǔn)備好時(shí),或輸出設(shè)備不忙可以接收數(shù)據(jù)時(shí),便向CPU發(fā)出中斷請(qǐng)求,CPU暫停當(dāng)前執(zhí)行的主程序進(jìn)入中斷響應(yīng),與外設(shè)進(jìn)行一次數(shù)據(jù)交換,操作完成后再繼續(xù)執(zhí)行原來(lái)的主程序。 通常CPU在執(zhí)行每一條指令的末尾處會(huì)檢查外設(shè)是否有中斷請(qǐng)求(這種查詢是由硬件完成的,不占用CPU的工作時(shí)間),
17、如果有,在中斷允許(即IF=1)的情況下,CPU將保留下一條指令的地址(斷點(diǎn))和當(dāng)前標(biāo)志寄存器的內(nèi)容,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,操作完成后恢復(fù)斷點(diǎn)和標(biāo)志寄存器的內(nèi)容,繼續(xù)執(zhí)行原來(lái)被中斷的程序。 中斷方式的優(yōu)點(diǎn)很明顯,大大提高了CPU的工作效率,而且外設(shè)有申請(qǐng)中斷服務(wù)的主動(dòng)權(quán)。 有關(guān)中斷的詳細(xì)工作情況將在第六章中介紹。三、DMA方式 利用程序中斷方式,雖然可以提高CPU的工作效率,但它仍需要由程序來(lái)傳送數(shù)據(jù),并在中斷處理時(shí)要“保護(hù)現(xiàn)場(chǎng)”和“恢復(fù)現(xiàn)場(chǎng)”等,要占用一定時(shí)間,是每傳送一個(gè)字節(jié)大約要幾十微秒到幾百微秒,這對(duì)于高速外設(shè)就顯得太慢了。 DMA方式是一種由專門的硬件電路執(zhí)行I/O交換的傳送方式,它
18、讓外設(shè)接口與內(nèi)存直接進(jìn)行高速的數(shù)據(jù)交換,而不必經(jīng)過(guò)CPU,實(shí)現(xiàn)對(duì)存儲(chǔ)器的直接存取。這種專門的硬件叫DMA控制器,簡(jiǎn)稱DMAC,如圖5.10。 如圖所示,當(dāng)接口準(zhǔn)備好就向DMAC發(fā)DMA請(qǐng)求,接著CPU通過(guò)HOLD引腳接收DMAC發(fā)出的總線請(qǐng)求;CPU在完成當(dāng)前總線操作后,就發(fā)出HLDA的總線響應(yīng)信號(hào)給DMAC, DMAC收到此信號(hào)后便接管對(duì)總線的控制權(quán),開(kāi)始DMA操作。當(dāng)DMA傳送結(jié)束,DMAC將HOLD信號(hào)變成低電平,并放棄對(duì)總線的控制權(quán)。CPU檢測(cè)到HOLD為低后,也將HLDA變成低,并恢復(fù)對(duì)總線的控制權(quán)。 第三節(jié) DMA接口技術(shù)參見(jiàn)課本P170-174頁(yè)。 第四節(jié) 可編程DMA控制器82
19、37參見(jiàn)課本P174-188頁(yè)。第五節(jié) 并行通信及接口電路 通用接口可分為并行接口和串行接口兩大類。并行傳送是把一個(gè)字節(jié)或多個(gè)字節(jié)用多條信號(hào)線同時(shí)進(jìn)行傳輸,即并行接口是按字節(jié)傳送的;串行接口和CPU之間按并行傳送,而和外設(shè)之間是一個(gè)二進(jìn)制位一個(gè)二進(jìn)制位的傳送,即串行接口是按位傳送的。參見(jiàn)圖5.11所示。一、并行接口的組成及其與CPU和外設(shè)的連接 1、并行接口的基本組成(如圖5.12所示) 兩個(gè)或兩個(gè)以上的具有緩沖能力的數(shù)據(jù)寄存器 可供CPU訪問(wèn)的控制及狀態(tài)寄存器 片選和內(nèi)部控制邏輯電路 與外設(shè)進(jìn)行數(shù)據(jù)交換的控制和聯(lián)絡(luò)信號(hào)線 與CPU用中斷方式傳送數(shù)據(jù)的相關(guān)中斷控制 2、與CPU的連接 與CPU
20、的連接主要是雙向數(shù)據(jù)總線,讀、寫控制線,復(fù)位信號(hào),中斷請(qǐng)求以及狀態(tài)信號(hào)和地址譯碼產(chǎn)生的片選信號(hào)。 3、與外設(shè)的連接 與輸入設(shè)備的連接:并行輸入數(shù)據(jù)線,數(shù)據(jù)傳輸應(yīng)答信號(hào)(輸入準(zhǔn)備好和輸入回答信號(hào)); 與輸出設(shè)備的連接:并行輸出數(shù)據(jù)線,數(shù)據(jù)傳輸應(yīng)答信號(hào)(輸出準(zhǔn)備好和輸出回答信號(hào)); 二、并行接口的數(shù)據(jù)輸入輸出過(guò)程 1、數(shù)據(jù)輸入 外設(shè)將數(shù)據(jù)傳送到并行接口,同時(shí)給出“輸入數(shù)據(jù)準(zhǔn)備好”信號(hào); 接口把數(shù)據(jù)接收到輸入緩沖寄存器,給出“輸入回答”信號(hào)(高電平)到外設(shè); 若采用中斷方式,則接口向CPU發(fā)中斷請(qǐng)求信號(hào),并使?fàn)顟B(tài)寄存器中的“輸入緩沖器滿”位置1(也可以用查詢方式); CPU響應(yīng)接口的中斷請(qǐng)求(或查詢
21、相應(yīng)的狀態(tài)位),在中斷服務(wù)程序中執(zhí)行IN指令讀取接口中的數(shù)據(jù); 接口給外設(shè)的“輸入回答”信號(hào)變成低,通知外設(shè)可以輸入新的數(shù)據(jù),此后轉(zhuǎn)到開(kāi)始下一個(gè)數(shù)據(jù)的輸入過(guò)程。 2、數(shù)據(jù)輸出 CPU執(zhí)行OUT指令把數(shù)據(jù)寫到接口(中斷或查詢都可以); 接口向外設(shè)發(fā)出“輸出準(zhǔn)備好”信號(hào),通知外設(shè)可以把數(shù)據(jù)取走; 外設(shè)取走數(shù)據(jù)后,向接口發(fā)“輸出回答”信號(hào); 接口向CPU發(fā)出新的中斷請(qǐng)求,并使?fàn)顟B(tài)寄存器中的“輸出緩沖器空“位置1,要求CPU輸出新的數(shù)據(jù),轉(zhuǎn)到,開(kāi)始下一輸出過(guò)程。 第六節(jié) 可編程并行通信接口片8255A一、8255的內(nèi)部結(jié)構(gòu)及其功能 1、8255的引腳 參見(jiàn)圖5.13(a),共有40條引線。電源與地線2
22、條;與外設(shè)相連的有24條;與CPU相連的有14條。 圖5.13 8255引腳和功能示意圖 2、8255的功能 如圖5.13(b)所示,接口的左邊與CPU連接,右邊與外設(shè)連接,有A、B、C三個(gè)8位端口,而C口可分成兩個(gè)4位的端口。每個(gè)端口都可以通過(guò)編程設(shè)定為輸入端口或輸出端口,但有各自不同的方式和特點(diǎn)。端口C可以獨(dú)立使用,但通常是配合端口A和端口B工作,為這兩個(gè)端口的輸入輸出提供聯(lián)絡(luò)信號(hào)。二、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、并
23、行輸入輸出端口A、端口B、端口C 端口A和端口B是一樣的8位端口,可以作為輸入口或輸出口,并有數(shù)據(jù)鎖存功能。端口C作為輸入口時(shí),對(duì)數(shù)據(jù)不鎖存,而作為輸出口時(shí),對(duì)數(shù)據(jù)進(jìn)行鎖存。 端口C可以獨(dú)立作為輸入或輸出端口,也可分成兩個(gè)4位的端口,分別用來(lái)為端口A和端口B提供控制和狀態(tài)信息。3、A組控制和B組控制 端口A與端口C的高4位(PC7-PC4)構(gòu)成A組,端口B與端口C的低4位(PC3-PC0)構(gòu)成B組。他們各有一個(gè)控制單元接收來(lái)自讀寫控制部件的命令和CPU通過(guò)數(shù)據(jù)總線送來(lái)的控制字,并根據(jù)控制字來(lái)定義各端口的操作方式。 4、讀寫控制部件 該部件用于接收CPU的控制命令,根據(jù)這些命令向片內(nèi)各功能部件發(fā)
24、出操作命令。 共有6個(gè)信號(hào),CS是片選信號(hào),通常由高位地址譯碼產(chǎn)生 ;RD和WR是CPU來(lái)的讀寫信號(hào);RESET是復(fù)位信號(hào),復(fù)位后,清除所有寄存器內(nèi)容,并將各端口置成輸入方式;A1、A0為地址信號(hào),用于選擇8255內(nèi)部的端口。這6個(gè)信號(hào)的組合所完成的操作如下表所示。可以看出,CPU要求8255有4個(gè)端口地址,通常A1、A0直接和地址總線的AD1、AD0相連,這時(shí)4個(gè)地址是連續(xù)的。 表5-1: 8255A的操作 A1A0RDWRCS 操作00010端口A數(shù)據(jù)送CPU(輸入)01010端口B數(shù)據(jù)送CPU (輸入)10010端口C數(shù)據(jù)送CPU (輸入)11010非法操作00100CPU數(shù)據(jù)送端口A(
25、輸出)01100CPU數(shù)據(jù)送端口B (輸出)10100CPU數(shù)據(jù)送端口C (輸出)11100CPU數(shù)據(jù)送控制口110數(shù)據(jù)總線浮空1未選中該8255,數(shù)據(jù)總線浮空 三、8255A的控制字 1、三種工作方式 如圖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、方式選擇控制字 方式選擇
26、控制字用于定義端口的工作方式,控制字有8位,每一位的定義如圖5.16所示。 例如:方式選擇控制字 83H=10000011 A口方式0,輸出方式;B口方式0,輸入方式;C口分為兩組, PC7-PC4方式0,輸出,PC3-PC0方式0,輸入。 若控制字寄存器的口地址是D6H,則movAL,83Hout0D6H, AL 3、C口置位復(fù)位控制字 此控制字只對(duì)C口有效,該控制字緊跟在方式控制字后定義,它被寫入控制口,不是寫入C口。如圖5.17所示。在方式1和方式2時(shí)要用到這個(gè)控制字。 四、8255A的工作方式 1、工作方式0 如圖5 .18所示,8255工作在方式0只完成簡(jiǎn)單的并行輸入輸出。 方式0的
27、控制字 如圖5.18A所示,最高3位是100,其它D2位為0,D4、D3、D1、D0這4位可為任意,他們有16種組合。2、工作方式1 這種方式與方式0的區(qū)別在于數(shù)據(jù)輸入輸出要在選通信號(hào)控制下進(jìn)行,如圖5.19所示。 輸入操作:其控制信號(hào)如下: STB,選通信號(hào),由外部輸入,低電平有效,該信號(hào)有效時(shí)將外部數(shù)據(jù)鎖存到所選端口的輸入鎖存器中。 STBA PC4 ; STBB PC2 ,此信號(hào)由C口的PC4和PC2輸入。 IBF,輸入緩沖器滿信號(hào),向外部輸出,高電平有效。該信號(hào)有效時(shí),表示輸入的數(shù)據(jù)已占用該端口的輸入鎖存器,實(shí)際上是對(duì)STB信號(hào)的回答,等待CPU執(zhí)行IN指令將數(shù)據(jù)取走。 IBFA PC
28、5;IBFB PC1。 INTR,中斷請(qǐng)求,向CPU輸出,高電平有效。 A組內(nèi)部有中斷允許觸發(fā)器INTEA, B組內(nèi)部有中斷允許觸發(fā)器INTEB,由PC4和PC2置位/復(fù)位來(lái)控制。 INTRA PC3; INTRB PC0。采用中斷方式時(shí),當(dāng)輸入緩沖器滿,STB的后沿置INTEA或INTEB為1,則向CPU發(fā)中斷請(qǐng)求INTR,在中斷服務(wù)程序中安排執(zhí)行IN指令,讀取輸入的數(shù)據(jù),并使IBF為0。 A口B口均可工作在方式1,完成輸入操作。 輸出操作,其控制信號(hào)如下: OBF,輸出緩沖器滿,向外部輸出,低電平有效。該信號(hào)有效表示CPU已將數(shù)據(jù)寫入該端口。 OBFA PC7; OBFB PC1 ACK,
29、外部應(yīng)答信號(hào),由外部輸入,低電平有效。該信號(hào)有效表示外設(shè)已收到由8255輸出的8位數(shù)據(jù),實(shí)際上是對(duì)OBF的回答。 ACKA PC6; ACKB PC2 INTR,中斷請(qǐng)求,向CPU輸出,高電平有效。 A組內(nèi)部有中斷允許觸發(fā)器INTEA, B組內(nèi)部有中斷允許觸發(fā)器INTEB,由PC6和PC2置位/復(fù)位來(lái)控制。 INTRA PC3; INTRB PC0。 采用中斷方式時(shí),當(dāng)ACK有效時(shí)OBF被復(fù)位為高電平,并將相應(yīng)的 INTE置1,于是INTR輸出高電平向CPU發(fā)中斷請(qǐng)求,CPU響應(yīng)中斷,在中斷服務(wù)程序中執(zhí)行OUT指令,輸出后續(xù)字節(jié)。 方式1(輸出)操作如圖5.20所示。 在方式1下,A口和B口可
30、以是輸入或輸出方式,所以他們有四種組合。其間使用C口的6根線作為控制線,此時(shí)總會(huì)有其它2根線可作為輸入或輸出線。 3、 工作方式2 只有A口可以工作在方式2,當(dāng)A口工作在方式2時(shí),B口可以工作在方式1或方式0,其控制字如圖5.21所示。 INTRA:中斷請(qǐng)求信號(hào),高電平有效; INTE1:A口內(nèi)部輸出中斷允許觸發(fā)器,可由軟件通過(guò)對(duì)PC6置位或復(fù)位來(lái)允許或禁止。 INTE2:A口內(nèi)部輸入中斷允許觸發(fā)器,可由軟件通過(guò)對(duì)PC4置位或復(fù)位來(lái)允許或禁止。 其他信號(hào)意義與方式1時(shí)相同。 D7=1,方式控制字標(biāo)志;D6=1方式2 D5=任意,D4不用;D3不用,這時(shí)PC4-PC7作為聯(lián)絡(luò)線 D2=1,B組方
31、式1;= 0, B組方式0 D1=1, B口輸入;= 0 B口輸出 D0=1,PC2-PC0輸入;= 0, PC2-PC0輸出;PC3用作聯(lián)絡(luò)線 A口方式2實(shí)際上是A口在方式1下輸入輸出的組合。所需的5根聯(lián)絡(luò)線和方式1是一樣的,只是中斷請(qǐng)求只需要一根線。 五、8255A的狀態(tài)字 8255A的狀態(tài)字為查詢方式提供了狀態(tài)標(biāo)志位。8255A工作于方式1或方式2時(shí)的狀態(tài)字可通過(guò)讀端口C得到。狀態(tài)字為查詢方式提供了狀態(tài)標(biāo)志位,如輸入緩沖器滿信號(hào)IBF,輸出緩沖器滿信號(hào)OBF等。 1、方式1的狀態(tài)字格式 方式1輸入狀態(tài)字格式: A組 B組方式1輸出狀態(tài)字格式: A組 B組D7D6D5D4D3D2D1D0I
32、/OI/OIBFAINTEINTRINTEIBFBINTRD7D6D5D4D3D2D1D0OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB 要注意的是:端口C的狀態(tài)字各位含義與相應(yīng)外部引腳信號(hào)并不完全相同。 INTEA和INTEB是內(nèi)部控制信號(hào),通過(guò)向控制口寫入“端口C置1/置0控制字”來(lái)設(shè)定的,設(shè)定后,就會(huì)在狀態(tài)字中反映出來(lái)。 2、方式2狀態(tài)字格式 方式2狀態(tài)字也是從端口C讀取,其格式如下圖所示: 其中:INTE1是輸出中斷允許位,INTE2是輸入中斷允許位。如前所述,它們也是利用“端口C置1/置0控制字”來(lái)使其置位或復(fù)位的。 A口工作于方式2時(shí),B口可以工作在方式1和方
33、式0;若B口方式0,則端口C的PC2-PC0用于數(shù)據(jù)的輸入輸出;若B口工作在方式1,則PC2-PC0提供輸入或輸出的狀態(tài)。 C口 A組狀態(tài) B組狀態(tài) A組方式2 B組方式0 輸入輸出 輸出時(shí) B組方式1 輸入時(shí) 方式2狀態(tài)字格式D7D6D5D4D3D2D1D0OBFAINTE1IBFAINTE2INTRAI/OI/OINTEBOBFBINTRBINTEBIBFBINTRB 六、8255A應(yīng)用舉例 例1:將外設(shè)開(kāi)關(guān)的二進(jìn)制狀態(tài)從A口輸入,并由B口輸出到LED顯示器,如圖5.22所示。 圖中LED是8段發(fā)光二極管,當(dāng)某段中流過(guò)電流,則該段發(fā)光。從圖中可看出,8個(gè)發(fā)光二極管采用共陽(yáng)極接法,當(dāng)B口的某
34、位輸出高時(shí),連接該位的那一段亮。所以輸出數(shù)字的二進(jìn)制編碼如下: 數(shù)字 發(fā)光的相應(yīng)段 編碼 0 a、b、c、d、e、f 00111111=3FH 1 b、c 00000110=06H 2 a、b、d、e、g 01011011=5BH 3 a、b、c、d、g 01001111=4FH 4 b、c、f、g 01100110=66H 5 a、c、d、f、g 01101101=6DH A a、b、c、e、f、g 01110111=77H b c、d、e、f、g 01111100=7CH F a、e、f、g 01110001=71H 8255A端口地址為D0-D3H,A口工作于方式0輸入,B口工作于方式0
35、輸出,程序如下:START: moval, 90H;設(shè)置方式選擇字 out0D3H, alAA: inal, 0D0H;讀端口A andal, 0FH;取端口A低4位 movbx, offset LEDTAL;取LED顯示代碼表首地址 xlat;查表,AL(BX+AL) out0D1H, al;從端口B輸出LED顯示代碼 movax, 1000;延遲 BB: decax jnzBB jmpAA;返回到AA hlt LEDTALDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,67H,77H,7CH,39H,5EH,79H,71H 例2:實(shí)驗(yàn)8255A可編程并行接
36、口方式0 硬件電路如下: 圖5.23(a) 8255A方式0用于實(shí)驗(yàn)8255端口C接邏輯電平開(kāi)關(guān)K0-K7,A口接LED顯示電路L0-L7圖5.23(b)開(kāi)關(guān)和LED的連接 8255A的端口地址為288H-28BH,地址譯碼器如下圖所示:圖5.24 實(shí)驗(yàn)用的地址譯碼器參考程序(E8255.ASM)如下:code segmentassumecs:codestart: movdx, 28bH;設(shè)8255為C口輸入,A口輸出moval, 8bHoutdx, alinout:movdx, 28aH;從C口輸入一數(shù)據(jù)inal, dxmovdx, 288H;從A口輸出剛才從C口輸入的數(shù)據(jù)outdx, al
37、movah, 1;判斷是否有鍵按下?int16Hjzinout;若無(wú)鍵按下,則返回到inoutmovah, 4cH;否則,返回DOSint21Hcode endsendstart 例3:8255A工作于方式1輸出,作為與中斷方式工作的打印機(jī)接口,如圖5.25所示。A口作為打印輸出數(shù)據(jù)口,工作于方式1。此時(shí)C口的PC7、PC6和PC3是聯(lián)絡(luò)信號(hào)。設(shè)中斷請(qǐng)求接到8259A的IR3,對(duì)應(yīng)的中斷類型號(hào)為0BH;8259A的初始化在主機(jī)系統(tǒng)開(kāi)啟時(shí)完成。 字符輸出操作由中斷服務(wù)程序完成,設(shè)8255的口地址同例1,則主程序及中斷服務(wù)子程序如下:主程序:MAIN: moval, 0A0H;A組工作于方式1輸出
38、out0D3H, almovax, 0movds, axmovbx, 0BH*4;求中斷類型0BH在矢量表 中的起始地址movax, offset INTHAND;取中斷矢量INTHAND 的偏移地址movword ptrbx, ax ;在中斷矢量表中設(shè)置中斷 矢量INTHAND的偏移地址incbxincbxmovax,seg INTHAND;取中斷矢量INTHAND的段地址movword ptrbx, ax ;在中斷矢量表中設(shè)置中斷矢量 INTHAND的段地址moval, 0DH;使PC6=1,允許8255A中斷out0D3H, alsti;開(kāi)放CPU中斷中斷處理子程序:INTHAND:;保存現(xiàn)場(chǎng) m
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 庫(kù)房標(biāo)識(shí)化管理制度
- 彈性質(zhì)工作管理制度
- 彩鋼板工程管理制度
- 循環(huán)水防腐管理制度
- 德育分量化管理制度
- 快印店消防管理制度
- 快餐廳作息管理制度
- 總公司保密管理制度
- 恢復(fù)室蘇醒管理制度
- 感官品評(píng)室管理制度
- DL-T-1642-2016環(huán)形混凝土電桿用腳扣
- SF-36生活質(zhì)量調(diào)查表(SF-36-含評(píng)分細(xì)則)
- 畜禽生產(chǎn)概論-形考任務(wù)3-國(guó)開(kāi)(HB)-參考資料
- 人類普遍交往與世界歷史的形成發(fā)展
- 2024年濟(jì)源市六年級(jí)下學(xué)期調(diào)研語(yǔ)文試卷含答案
- 隱龍山墓園規(guī)劃方案
- 礦燈管理工培訓(xùn)課件
- 村醫(yī)培訓(xùn)死因監(jiān)測(cè)課件
- 玻璃幕墻清洗施工方案
- 管理授權(quán)手冊(cè)7.28
- lcd制造工藝流程
評(píng)論
0/150
提交評(píng)論