Interface(PPI)101 8255A工作原理 1011 結(jié)構(gòu)和功_第1頁(yè)
Interface(PPI)101 8255A工作原理 1011 結(jié)構(gòu)和功_第2頁(yè)
Interface(PPI)101 8255A工作原理 1011 結(jié)構(gòu)和功_第3頁(yè)
Interface(PPI)101 8255A工作原理 1011 結(jié)構(gòu)和功_第4頁(yè)
Interface(PPI)101 8255A工作原理 1011 結(jié)構(gòu)和功_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、并行I/O接口芯片(Programmable Peripherial Interface)(PPI)10.1 8255A工作原理 10.1.1 結(jié)構(gòu)和功能第十章 可編程外圍接口芯片8255AA組 A口(8位)PA7PA0RESETWRA組C口高位(4位)PC7PC4A組C口低位(4位)PC3PC0B組 B口(8位)PB7PB0數(shù)據(jù)總線(xiàn)緩沖器)A組控制讀寫(xiě)控制邏輯RDCSA0A1B組控制1 402 393 384 375 366 357 348 339 3210 3111 3012 2913 2814 2715 2616 2517 2418 2319 2220 218255APA3PA2PA1P

2、A0RDCS GNDA1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB2PA4PA5PA6PA7RW RESETD0D1D2D3D4D5D6D7VCCPB7PB6PB5PB4PB31(1)數(shù)據(jù)端口A、B、C A口:雙向,8位,可工作于方式0、1、2 B口:雙向,8位,可工作于方式0、1 C口:1)雙向,8位 2)雙向,4位2 3)配合產(chǎn)生A、B口控制信號(hào)(2)A、B組控制邏輯1)決定A、B組工作方式2)對(duì)C口每一位置/復(fù)位(3)數(shù)據(jù)總線(xiàn)緩沖器 雙向,8位,三態(tài)(4)讀/寫(xiě)控制邏輯 管理所有的內(nèi)部或外部數(shù)據(jù)信息、控制字或狀態(tài)字的傳送過(guò)程。(5)RESET 高電平有效 將82

3、55A空載寄存器內(nèi)容清0,并將A、B、C口置為輸入方式。28255A基本操作表A1A0RDWRCS 操作001010000111000 端口A數(shù)據(jù)總線(xiàn) 端口B數(shù)據(jù)總線(xiàn) 端口C數(shù)據(jù)總線(xiàn)00110101111100000000 數(shù)據(jù)總線(xiàn)端口A 數(shù)據(jù)總線(xiàn)端口B 數(shù)據(jù)總線(xiàn)端口C 數(shù)據(jù)總線(xiàn)控制字寄存器X1XX1XX01X11100 數(shù)據(jù)總線(xiàn)為三態(tài)(高阻) 非法狀態(tài) 數(shù)據(jù)總線(xiàn)為三態(tài)(高阻)310.1.2 控制字1)方式選擇控制字 方式0 基本輸入輸出方式 方式1 選通輸入輸出方式 方式2 雙向總線(xiàn)I/O方式2)置位/復(fù)位控制字 可使C口任一引腳單獨(dú)置1或清0,或者為應(yīng)答式數(shù)據(jù)傳送發(fā)中斷請(qǐng)求信號(hào)。4D7D6

4、 D5 D4D3D2D1D0C口低4位選擇(方式0時(shí))1=輸入 0=輸出B口輸入輸出選擇1=輸入 0=輸出B口工作方式選擇1=方式1 0=方式0B組A組C口高4位輸入輸出選擇1=輸入 0=輸出A口輸入輸出選擇1=輸入 0=輸出A口工作方式選擇01=方式1 00=方式01x=方式2D7 =1標(biāo)志位方式選擇控制字1)方式選擇控制字5D7D6 D5 D4D3D2D1D0無(wú)關(guān)D7=0 標(biāo)志位置位/復(fù)位控制字對(duì)某一位置位 / 復(fù)位1置位 0復(fù)位01234567010101010011001100001111置位 / 復(fù)位位選擇 2)置位/復(fù)位控制字6ABCBDBPB7 PB0PA7 PA0PC3 PC0

5、PC7 PC48255RD WRD7D0A0 A1 CSPBPAPC88I/OI/O44I/OI/O88I/OI/OPB7 PB0PA7 PA0PBPAPC控制或I/O控制或I/O88I/OI/OPB7 PB0PA7 PA0PBPAPCI/O控制方式0:基本輸入輸出方式1:選通輸入輸出方式2:雙向總線(xiàn)I/O10.1.3 8255A工作方式和C口狀態(tài)字7 方式1、2時(shí),C口用作A口或B口的聯(lián)絡(luò)信號(hào),用輸入指令可讀取C口的狀態(tài)。(1)方式0(Basic Input/Output) 適用于不需要應(yīng)答信號(hào)的簡(jiǎn)單輸入輸出場(chǎng)合 3個(gè)8位端口 或 2個(gè)8位2個(gè)4位端口 CPU用IN,OUT指令直接操作,不需

6、用于應(yīng)答的聯(lián)絡(luò)信號(hào) 輸出可以鎖存,輸入不能鎖存各口均工作于方式0時(shí)的控制字D7D6 D5 D4D3D2D1D01 0 0 x x 0 x x A口B口8(2)方式1(Basic Input/Output) A、B口為數(shù)據(jù)口 輸入輸出均可鎖存 C口的6根線(xiàn)用來(lái)產(chǎn)生或接受聯(lián)絡(luò)信號(hào)1)選通輸入方式(到CPU)輸入設(shè)備&PC4PC5PC3INTEAPA7PA0PC6 PC7STBAIBFAINTRAI/O(2)RDD7D0A口D7D6 D5 D4D3D2D1D01 0 1 1 I/OX X X方式 1端口A輸入PC6、71輸入0輸出A口工作在方式1輸入時(shí)的控制字9(1)外設(shè)數(shù)據(jù)送PA7PA0,向825

7、5A發(fā)負(fù)脈沖,選通信號(hào)/STBA(PC4低),外設(shè)輸入數(shù)據(jù)鎖存到8255A的輸入鎖存器。(2)經(jīng)tSIB時(shí)間后,IBFA(輸入緩沖器滿(mǎn)信號(hào))為高,它作為對(duì)輸入設(shè)備的應(yīng)答信號(hào),用于通知外設(shè)輸入緩沖器已滿(mǎn),不要再送新的數(shù)據(jù)過(guò)來(lái)。(PC5高)(3)經(jīng)tSIT時(shí)間后,若/STBA,IBFA和INTEA同時(shí)為高,INTRA有效(PC3高),向CPU發(fā)中斷請(qǐng)求,CPU響應(yīng)中斷后,通過(guò)執(zhí)行中斷服務(wù)程序中的IN指令,使讀信號(hào)/RD有效。(/RD低)(4)經(jīng)tRIT時(shí)間后,使INTRA變低,清中斷。(5)/RD結(jié)束,數(shù)據(jù)已讀入,經(jīng)tRIB時(shí)間,IBFA變低(PC5低)表示緩沖器已空,一次數(shù)據(jù)輸入過(guò)程結(jié)束,通知外

8、設(shè)可再送一個(gè)新數(shù)據(jù)來(lái)。注:INTE無(wú)外部引腳,INTEA、INTEB分別由置位/復(fù)位控制字中PC4和PC2控制,置1則允許中斷。10(到CPU)輸入設(shè)備&PC2PC1PC0INTEBPB7PB0STBBIBFBINTRBRDB口D7D6 D5 D4D3D2D1D01 X X X X 1 1 X端口 B 方式1端口 B 輸入B口工作在方式1輸入時(shí)的控制字2)選通輸出方式(到CPU)輸出設(shè)備&PC7PC6PC3INTEAPA7PA0PC4 PC5OBFAACKAINTRAI/OWRA口D7D6 D5 D4D3D2D1D01 0 1 1 I/OX X X方式 1端口A輸出PC4、51輸入0輸出A口工

9、作在方式1輸出時(shí)的控制字11(1)當(dāng)/OBFA高(輸出緩沖器空)(PC7高),INTEA高(中斷允許)時(shí),向CPU發(fā)中斷請(qǐng)求,CPU響應(yīng)中斷后,轉(zhuǎn)中斷服務(wù)程序。用OUT指令,CPU數(shù)據(jù)送輸出緩沖器,/WR變低。(2)經(jīng)tWIT時(shí)間后,清中斷請(qǐng)求信號(hào)INTRA。(PC3低)(3)此外,/WR信號(hào)的后沿(上升沿)使/OBFA有效(PC7低)通知外設(shè)從8255A輸出緩沖器中取走數(shù)據(jù)。(4)外設(shè)收到這個(gè)數(shù)據(jù)后,發(fā)應(yīng)答信號(hào)/ACKA。(PC6低)(5)/ACKA有效之后,再經(jīng)tAOB時(shí)間,/OBFA無(wú)效(PC7高)表示緩沖器已空。(6)/ACKA回到高電平后,經(jīng)tAIT時(shí)間,INTRA變高(PC3高)向

10、CPU發(fā)中斷請(qǐng)求,要求CPU送新的數(shù)據(jù)過(guò)來(lái)。注:INTE無(wú)外部引腳,INTEA、INTEB分別由置位/復(fù)位控制字中PC6和PC2控制,置1則允許中斷。12(到CPU)&PC1PC2PC0INTEBPB7PB0INTRBWRB口輸出設(shè)備OBFBACKBD7D6 D5 D4D3D2D1D01 X X X X 1 1 X端口 B 方式1端口 B 輸出B口工作在方式1輸出時(shí)的控制字(3)方式2(Bidirectional Bus) 雙向總線(xiàn)I/O僅A口可工作于方式2 輸入輸出均可鎖存,不能同時(shí)進(jìn)行C口的PC3PC7作為A口的聯(lián)絡(luò)信號(hào)13輸入輸出設(shè)備&PC7PC6PC4INTE2PA7PA0PC0 PC

11、2STBAIBFAINTRAI/OCPUWDD7D0PC5PC3RD&INTE11ACKA0TFAD7D6 D5 D4D3D2D1D01 1 X X X I/O I/O I/OA口方式2PC2-01輸入0輸出端口 B1輸入0輸出B 口方式1方式10方式0可看作A口將方式1的輸入和輸出狀態(tài)結(jié)合在一起14(4)幾種工作方式的組合與C口狀態(tài)字1)方式1 a. A、B口輸入 PC6、7 I/O b. A、B口輸出 PC4、5 I/O c. A口輸入 B口輸出 PC6、7 I/O d. A口輸出 B口輸入 PC4、5 I/O2)A口方式2 a. B口方式0 PC2PCO I/O b. B口方式1 C口8

12、位全用作聯(lián)絡(luò)信號(hào)3)A口方式0,B口方式1 A口方式1,B口方式0C口狀態(tài)字:用IN指令讀C口狀態(tài),用于測(cè)試和檢查外設(shè)當(dāng)前狀態(tài)1)方式1狀態(tài)字15D7 D6 D5 D4 D3 D2 D1 D0I/O I/O IBFA INTEA INTRAINTEB IBFBINTRB輸入狀態(tài)字D7 D6 D5 D4 D3 D2 D1 D0OBFA INTEA I/O I/O INTRAINTEB OBFBINTRB輸出狀態(tài)字D7 D6 D5 D4 D3 D2 D1 D0OBFA INTE1 IBFA INTE2 INTRAX X X 2)方式2狀態(tài)字1610.2 8255A的應(yīng)用10.2.1 基本I/O應(yīng)用

13、例:檢測(cè)開(kāi)關(guān)K7K0狀態(tài),開(kāi)關(guān)斷,則LED亮,開(kāi)關(guān)閉合,則LED滅17分析:1)端口地址 A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 1 0 X X 04個(gè)端口地址:F0H F2H F4H F6H2)工作方式 A口方式0輸入 B口方式0輸出 C口未用初始化: MOV DX,OF6H ;控制字寄存器地址 MOV AL,10010000B ;控制字內(nèi)容 OUT DX,AL ;寫(xiě)入控制字TEST: MOV DX,OF0H ;指向A口 IN AL,DX ;從A口讀入開(kāi)關(guān)狀態(tài) MOV DX,0F2H ;指向B口 OUT DX,AL ;B口控制LED,指示A口開(kāi)關(guān)狀態(tài) JMP TEST ;

14、循環(huán)檢測(cè)1810.2.2 接矩陣式鍵盤(pán) 檢測(cè)是否有鍵按下:從A口向所有行輸出0電平,通過(guò)B口低4位讀列值,其中如果有為0的,則表示有鍵按下。PB7PB6PB5PB4PB3PB2PB1PB0C98DE40F615B273APA0PA1PA2PA38255A8255A+5V19鍵盤(pán)掃描過(guò)程:(1)檢測(cè)鍵盤(pán)上所有的鍵是否都松開(kāi),反復(fù)檢測(cè)直至全松開(kāi)。(2)檢測(cè)鍵盤(pán)上是否有鍵按下,反復(fù)檢測(cè)直至有鍵按下。(3)若有鍵按下,則消除鍵抖動(dòng)后(硬件消抖動(dòng)電路,軟件延時(shí)消抖動(dòng)下),再確認(rèn)該鍵是否按下。(4)對(duì)按下的鍵進(jìn)行編碼,即將該鍵所在的行號(hào)和列號(hào)轉(zhuǎn)換成16進(jìn)制代碼。注:若在按鍵時(shí),多個(gè)鍵盤(pán)同時(shí)按下,可取最后松

15、開(kāi)的按鍵作為本次按下的鍵。(5)檢測(cè)該鍵是否松開(kāi),反復(fù)檢測(cè)直至松開(kāi)。20;端口地址PORT_A EQU 0FF9H ;8255A口地址PORT_B EQU 0FFBH ;8255B口地址PORT_CTL EQU 0FF9H ;8255控制口地址;數(shù)據(jù)段,鍵盤(pán)掃描碼表,對(duì)應(yīng)0 1 2 A B C D E FDATA SEGMENTTABLE DB 77H, 7BH, 7DH,7EH DB 0B7H, 0BBH, 0BDH,0BEH DB 0D7H, 0DBH, 0DDH,0DEH DB 0E7H, 0EBH, 0EDH,0EEHDATA ENDSSTACK SEGMENT STACK DW 50

16、 DUP(0)TOP_STACK LABEL WORDSTACK ENDS21;代碼段CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STACKSTART: MOV AX,STACK MOV SS,AX LEA SP,TOP_STACK MOV AX,DATA MOV DS,AX;初始化8255A,方式0,A口輸出,B口、C口輸入 MOV DX,PORT_CTL ;指向控制口 MOV AL,10001011 ;控制字 OUT DX,AL ;寫(xiě)入控制字22MOV DX, PORT-A ;DX指向A口 MOV AL, 00HOUT DX, AL ;向A口各位輸出0

17、 MOV DX, PORT-B ;DX指向B口WO: IN AL, DX ;輸入B口 AND AL,OFH ;只查低4位(列) CMP AL,OFH ;各鍵均松開(kāi)? JNE WO ;否,繼續(xù)查讀入列值鍵松開(kāi)讀入列值有鍵按下延時(shí)20ms消抖動(dòng)鍵仍按下逐行逐列查按鍵查表得鍵代碼所有行置“0”NYNWR: IN AL, DX ;輸入B口 AND AL,OFH CMP AL,OFH ;是否有鍵按下 JE WR ;否,等待 MOV CX, 16EAHDELAY: LOOP DELAY IN AL, DX ;輸入B口 AND AL,OFH CMP AL,OFH ;是否有鍵按下 JE WR ;否,等待23;鍵仍被壓著,則此時(shí)可以確定哪一個(gè)鍵被壓下 MOV AL,0FEH ;先使D0=0 MOV CL,AL ;CL=1111 1110BNEXT_ROW: MOV DX,ROTR_A ;A口 OUT DX,AL ;向一行輸出低電平 MOV DX,PORT_B ;B口 IN AL,DX ;讀入B口狀態(tài) AND AL,0FH ;只截取列值 CMP AL,0FH ;是否均為1? JNE ENCODE ;否,表示有鍵壓下,轉(zhuǎn)去編碼 ROL CL,01 ;均為1,使下一行輸出0 MOV AL,CL JMP NEXT_ROW ;查看下行24;已找到有一列為低電平,對(duì)壓鍵的行列值進(jìn)行編碼ENCOD

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論