




已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
9 1可編程并行通信接口8255A 8255A是INTER系列的并行接口芯片 它是可編程的 可以通過(guò)軟件來(lái)設(shè)置芯片的工作方式 一 8255A的結(jié)構(gòu)和功能 1 數(shù)據(jù)端口A B C 8255A內(nèi)部包含3個(gè)8位的輸入輸出端口A B和C 用于與外設(shè)交換數(shù)據(jù)或進(jìn)行通信聯(lián)絡(luò) 端口A包含一個(gè)8位的數(shù)據(jù)輸入鎖存器和一個(gè)8位的數(shù)據(jù)輸出鎖存器 緩沖器 因此A口作輸入 輸出可以同時(shí)鎖存數(shù)據(jù) 端口B包含一個(gè)8位的數(shù)據(jù)輸入 輸出鎖存器和一個(gè)8位的數(shù)據(jù)輸入緩沖器 輸出數(shù)據(jù)可以鎖存 輸入數(shù)據(jù)也可鎖存 但輸入 輸出不能同時(shí)鎖存 端口C包含一個(gè)8位的數(shù)據(jù)輸入緩沖器和一個(gè)8位的數(shù)據(jù)輸出鎖存器 無(wú)輸入鎖存功能 當(dāng)它被分成兩個(gè)4位端口時(shí) 每個(gè)端口有一個(gè)4位的輸出鎖存器 2 A組和B組控制邏輯 8255A的端口A和端口C的高4位 PC7 PC4 由A組控制邏輯管理 端口B和端口C的低4位 PC3 PC0 由B組控制邏輯管理 這兩組控制電路都從讀 寫控制邏輯接受命令信號(hào) 從內(nèi)部數(shù)據(jù)總線接收控制字 然后向各有關(guān)端口發(fā)出相應(yīng)的控制命令 控制每個(gè)端口的工作方式 還可以根據(jù)CPU的命令字對(duì)端口C的每一位按位進(jìn)行置位或復(fù)位 3 數(shù)據(jù)總線緩沖器 4 讀寫控制信號(hào) 二 8255A的控制字 8255A控制字分為兩類 芯片各端口的方式選擇控制字 它可以使8255A的3個(gè)數(shù)據(jù)端口工作在不同的工作方式 C端口置位 復(fù)位控制字 它可以使C端口中的任何一條口線進(jìn)行置位或復(fù)位 而不影響其他各位的狀態(tài) 1 方式控制字 2 端口C置1 0控制字 0 D7D6D5D4D3D2D1D0 1 置10 置0 端口C置1 0控制字 000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC7 圖 端口C置1 0控制字 例1 設(shè)A端口工作方式0 輸出 B端口工作于方式0 輸入 方式選擇控制字 10001 0011 0 10000010 82H 方式選擇 A口方式0 A口輸出 C口高位不用 B口方式0 B口輸入 C口低位不用 例2 設(shè)8255A的控制口地址為00EEH 要求對(duì)端口C的PC7置1 則控制字00001111B 0FH 要求對(duì)端口C的PC3置0 控制字為00000110B 06H 下面的程序可以實(shí)現(xiàn)上述要求 MOVAL 0FH 對(duì)PC7置1的控制字MOVDX 00EEH 控制口地址送DXOUTDX AL 對(duì)PC7置1操作MOVAL 06H 對(duì)PC3置0的控制字OUTDX AL 對(duì)PC3進(jìn)行置0的操作 三 8255A的工作方式和C口狀態(tài)字 1 方式0 基本輸入輸出方式 適用于不需要用應(yīng)答信號(hào)的簡(jiǎn)單輸入輸出場(chǎng)合 在這種方式下 A口和B口可作為8位的端口 C口的高4位和低4位可作為兩個(gè)4位的端口 這4個(gè)端口中的任何一個(gè)可作輸入或者輸出 從而構(gòu)成16種不同的輸入輸出組態(tài) 在實(shí)際應(yīng)用時(shí) C口的兩半部分也可以合在一起 構(gòu)成一個(gè)8位的端口 這樣8255A可構(gòu)成3個(gè)8位的端口 或兩個(gè)8位 兩個(gè)4位的端口 CPU與這些端口交換數(shù)據(jù)時(shí) 可以直接用輸入指令從指定端口讀取數(shù)據(jù) 或用輸出指令將數(shù)據(jù)寫入指定的端口 由于輸入不能鎖存 在用IN指令讀取數(shù)據(jù)時(shí) 所得到的數(shù)據(jù)是信號(hào)有效時(shí)端口線上的狀態(tài) 在輸出方式下 用OUT指令把CPU的數(shù)據(jù)寫入端口時(shí) 信號(hào)把數(shù)據(jù)鎖存到該端口的輸出鎖存器中 輸出口線上的數(shù)據(jù)會(huì)一直保持不變 直到再次改變鎖存器的值為止 2 方式1 選通的輸入輸出方式 A口和B口均可工作于輸人或輸出方式 這兩個(gè)8位數(shù)據(jù)口的輸入 輸出數(shù)據(jù)都能鎖存 C口被定義為A口 B口的聯(lián)絡(luò)信號(hào) PC0 PC2作端口B的狀態(tài)和控制線 PC3 PC7作端口A的狀態(tài)和控制線 用于提高數(shù)據(jù)交換性能 方式1下輸入 輸出的操作時(shí)序與引腳定義不同 在采用中斷方式進(jìn)行輸入 輸出的場(chǎng)合 如果外部設(shè)備能為8255A提供選通信號(hào)或著數(shù)據(jù)接收應(yīng)答信號(hào) 則通常使用8255A的端口工作方式1的情況 1 方式1輸入 INTR InterruptRequest 中斷請(qǐng)求信號(hào) 高電平有效 8255A輸出給CPU的中斷請(qǐng)求信號(hào) 只有當(dāng)STB IBF和INTE三者都高時(shí) INTR才能被置為高電平 INTE InterruptEnable 中斷允許信號(hào) 為1時(shí) 使端口處于中斷允許狀態(tài) 而為0時(shí) 使端口處于中斷屏蔽狀態(tài) 沒(méi)有外部引出腳 用軟件才能使這兩個(gè)觸發(fā)器置 或清0 INTE A由C口按位操作控制字通過(guò)對(duì)PC4位的置位 復(fù)位來(lái)控制 INTE B通過(guò)PC2位控制 例 MOVAL 00001001BOUTCTRL PORT AL INTEA 1 RD PA7 PA0 INTEA PC4 PC5 PC3 PC6 PC7 IO INTRA IBFA STBA 來(lái)自外設(shè)的選同信號(hào)輸入端 去外設(shè)的輸入緩沖區(qū)滿信號(hào) 送往8259A的中斷請(qǐng)求信號(hào) 中斷允許信號(hào) INTE由置位STB PC4 操作置 1 A口方式1輸入有關(guān)信號(hào)的規(guī)定 RD INTEB PC2 PC1 PC0 PB7 PB0 STBB IBFB INTRB B口方式1輸入有關(guān)信號(hào)的規(guī)定 選通信號(hào)輸入端 來(lái)自外設(shè) 輸入緩沖區(qū)滿信號(hào) 送往外設(shè) 送往8259A的中斷請(qǐng)求信號(hào) 中斷允許信號(hào) INTE由置位 復(fù)位STB PC2 操作置1 0 方式1輸入 選通輸入時(shí)序 方式1輸入C口狀態(tài)字 在方式1下 CPU用輸入指令對(duì)C口進(jìn)行讀操作得到C口狀態(tài)字 其中存有端口C的握手信號(hào)的狀態(tài) B組方式1輸入狀態(tài)字為 A組方式1輸入狀態(tài)字為 2 方式1輸出 OBF OutputBufferFull 輸出緩沖器滿信號(hào) 低電平有效 輸出 當(dāng)它為低電平時(shí) 表示CPU已將數(shù)據(jù)寫到8255A的指定輸出端口 即數(shù)據(jù)已被輸出鎖存器鎖存 并出現(xiàn)在端口數(shù)據(jù)線PA7 PA0或PB7 PB0上 通知外設(shè)可將數(shù)據(jù)取走 ACK Acknowledge 外設(shè)的應(yīng)答信號(hào) 低電平有效 由外設(shè)送給8255A 當(dāng)它為低電平時(shí) 表示CPU輸出到8255A的A口或B口的數(shù)據(jù)已被外設(shè)接受 A口方式1輸出有關(guān)信號(hào)的規(guī)定 輸出緩沖區(qū)滿信號(hào) 去外設(shè) 外設(shè)響應(yīng)信號(hào) 來(lái)自外設(shè) 中斷請(qǐng)求信號(hào) 中斷允許信號(hào) INTE由PC6 ACKA 置 1 INTR有效 中斷允許信號(hào) INTE由ACKB PC2 置 1 INTR有效 輸出緩沖區(qū)滿信號(hào) 高電平有效 外設(shè)響應(yīng)信號(hào) 是外設(shè)送給8255A的 中斷請(qǐng)求信號(hào) B口方式1輸出有關(guān)信號(hào)的規(guī)定 方式1輸出 選通輸出時(shí)序 方式1輸出C口狀態(tài)字 在方式1下 CPU用輸入指令對(duì)C口進(jìn)行讀操作得到C口狀態(tài)字 其中存有端口C的握手信號(hào)的狀態(tài) B組方式1輸出狀態(tài)字為 A組方式1輸出狀態(tài)字為 只有A口可以工作于這種方式 在這種方式下 CPU與外設(shè)交換數(shù)據(jù)時(shí) 可在單一的8位端口數(shù)據(jù)線PA7 PA0上進(jìn)行 既可以通過(guò)A口把數(shù)據(jù)傳送到外設(shè) 又可以從A口接收從外設(shè)送過(guò)來(lái)的數(shù)據(jù) 而且輸入和輸出數(shù)據(jù)均能鎖存 端口A工作于方式2時(shí) 端口C的高5位 PC3 PC7 作A口的聯(lián)絡(luò)控制信號(hào) 方式2看成是A口方式1輸出和方式1輸入的結(jié)合 B口可工作在方式0或方式1 與A口無(wú)關(guān) 3 方式2 雙向傳輸方式 方式2的方式控制字 方式2的控制信號(hào) 輸出緩沖區(qū)滿信號(hào) 外設(shè)收到數(shù)據(jù) 發(fā)響應(yīng)信號(hào) 外設(shè)準(zhǔn)備好數(shù)據(jù) 發(fā)選通信號(hào) 8255A收到數(shù)據(jù) 向外設(shè)發(fā)輸入緩沖區(qū)滿信號(hào) 方式2時(shí)序 方式2狀態(tài)字 注 方式2下 輸入 輸出都可能通過(guò)同一個(gè)INTR向CPU提出中斷請(qǐng)求 因此在檢測(cè)到INTR有效時(shí) 應(yīng)該通過(guò)查詢OBF IBF狀態(tài)位 以判斷是輸出中斷還是輸入中斷 9 28255使用舉例 例1 鍵盤接口 如何檢測(cè)是否有鍵按下 把所有行線都輸出低電平 當(dāng)所有按鍵都沒(méi)有按下時(shí) 所有列線都不與行線連接 而是通過(guò)上拉電阻直接掛在 5V 這時(shí)讀取列線只能得到高電平 PA3 PA0 1111 如果至少有一個(gè)鍵按下 則PA3 PA0中至少有一個(gè)是0 把行線全定為低電平 再比較列線是否都是高電平 就可知是否有鍵按下 如何確定按下的是哪個(gè)鍵 當(dāng)有鍵按下時(shí) 采用逐行檢查的方法來(lái)確定按下的按鍵 檢查第r行時(shí) 只把該行線設(shè)為低電平 其余行線都是高電平 然后讀取列線的狀態(tài) 如果列線都是高電平 則該行上的按鍵都沒(méi)有被按下 如果第c條列線等于低電平 則可確定第r行 第c列交叉處的按鍵被按下 并稱此時(shí)的行線 列線狀態(tài)為行碼 列碼 把行碼放在前 列碼放在后 形成按鍵掃描碼 它表示按鍵的行列位置 例如 按鍵 9 在第3行 第2列 其掃描碼為11011011 DBH 這種依次按行檢查的方法稱為行掃描法 按鍵掃描碼表示了按鍵在矩陣中的位置 并不表明按鍵功能含義 例如 按鍵 7 它的掃描碼為BEH 其功能卻是數(shù)字 7 稱其鍵值為 7 在矩陣鍵盤中 按鍵的掃描碼是唯一確定的 但每個(gè)按鍵的鍵值可能有不同的定義 為了便于實(shí)現(xiàn)從掃描碼到鍵值的轉(zhuǎn)換 根據(jù)鍵值從小到大的順序 依次存放按鍵的掃描碼 形成按鍵掃描碼表 獲得按鍵掃描碼后 把它與表中的數(shù)據(jù)依次比較 相等時(shí)對(duì)應(yīng)的順序號(hào)就是該鍵的鍵值 按鍵的抖動(dòng)與處理按鍵開關(guān)通常為機(jī)械彈性開關(guān) 均利用了機(jī)械觸點(diǎn)的閉合 斷開作用 由于機(jī)械觸點(diǎn)的彈性作用 在閉合及斷開的瞬間均伴隨有一連串的抖動(dòng) 抖動(dòng)時(shí)間的長(zhǎng)短由按鍵的機(jī)械彈性決定 一般5 10ms 操作人員的壓鍵 釋鍵操作表現(xiàn)為按鍵穩(wěn)定閉合 斷開 反映在電平上就是穩(wěn)定的低電平 高電平 為了確保CPU對(duì)一次擊鍵動(dòng)作只確認(rèn)一次壓鍵 必須消除抖動(dòng)的影響 按鍵操作有幾種 軟件消除抖動(dòng)的方法在第一次檢測(cè)到有鍵按下時(shí) 執(zhí)行一段延時(shí)10ms的子程序以后再讀取鍵盤狀態(tài) 進(jìn)行比較 如果兩次的狀態(tài)電平保持一致則認(rèn)為真正有鍵穩(wěn)定按下 從而消除抖動(dòng)的影響 如果兩次的狀態(tài)不一致 重復(fù)前兩個(gè)步驟 定義各端口地址A PORTEQU0FFE0H A口地址B PORTEQU0FFE2H B口地址C PORTEQU0FFE4H C口地址CTRL PORTEQU0FFE6H 控制口地址 數(shù)據(jù)段 單個(gè)按鍵掃描碼表DATASEGMENTTABLEDB077H 07BH 07DH 07EHDB0B7H 0BBH 0BDH 0BEHDB0D7H 0DBH 0DDH 0DEHDB0E7H 0EBH 0EDH 0EEHDATAENDS STACKSEGMENT 堆棧段DW100DUP 0 TOP STACKLABELWORDSTACKENDS CODESEGMENT 代碼段ASSUMECS CODE DS DATA SS STACKMAINPROCFARSTART MOVAX STACKMOVSS AXLEASP TOP STACKMOVAX DATAMOVDS AX 初始化 A組方式0 A口輸入 C口高4位輸出MOVDX CTRL PORTMOVAL 10010000BOUTDX AL 檢查是否所有鍵都彈起MOVAL 00HMOVDX C PORTOUTDX AL 所有行線等于0WAIT OPEN MOVDX A PORTINAL DXANDAL 0FHCMPAL 0FHJNEWAIT OPEN 所有鍵都彈起 MOVAL 00H 檢查是否有鍵被按下MOVDX C PORTOUTDX AL 所有行線等于0WAIT PRES MOVDX A PORTINAL DXANDAL 0FHCMPAL 0FHJEWAIT PRESMOVAH AL 有鍵按下時(shí) 消抖MOVCX 16EAHLOOP INAL DXANDAL 0FHCMPAL AHJNEWAIT PRES 不相等 抖動(dòng)狀態(tài) 穩(wěn)定狀態(tài) 確定是哪個(gè)鍵被按下MOVCL 0EFH 指向第一行NEXT ROW MOVDX C PORTMOVAL CLOUTDX ALMOVDX A PORTINAL DXANDAL 0FH 低4位等于列碼CMPAL 0FHJNEENCODEROLCL 01 指向下一行JMPNEXT ROW 檢查下一行 ENCODE ANDCL 0F0H 組成按鍵掃描碼ORAL CL AL 掃描碼 根據(jù)掃描碼查找鍵值NEXT TRY MOVBX 000FHCMPAL TABLE BX JEFINDDECBXJNSNEXT TRY MOVAH 001H 出錯(cuò)標(biāo)志JMPEXITFIND MOVAL BL AL 鍵值0 FMOVAH 00HEXIT HLT 方式1輸入假設(shè)8255A的A B C 控制端口地址分別為70H 71H 72H 73H PA7 PA0分別與PB7 PB0對(duì)應(yīng)連接 PC4與PC0連接 PC3 PC5都懸空 對(duì)于以下程序段 指出緩沖區(qū)BUFFER的內(nèi)容 START MOVAL 10111000BOUT73H ALMOVBX 0000HMOVAL 01HOUT73H ALMOVAL 00HOUT73H AL STB 0 MOVAL 88HOUT71H AL PA PB 88HINAL 70H AL A口鎖存器值 PA7 PA0 88HMOVBUFFER BX ALINCBXMOVAL 01HOUT73H AL STB 0 1 A口鎖存88HINAL 70H AL A口鎖存器值 88HMOVBUFFER BX AL INCBXMOVAL 77HOUT71H AL PA PB 77HINAL 70H AL 鎖存器值 88H PA 77HMOVBUFFER BX AL 運(yùn)行結(jié)果BUFFER中數(shù)據(jù)為 88H 88H 88H 方式1輸出 打印機(jī)接口 定義各端口地址PORT AEQU2F8H 8255A端口A地址PORT BEQU2FAH 8255A端口B地址PORT CEQU2FCH 8255A端口C地址PORT CTRLEQU2FEH 8255A控制口地址PORT 0EQU2F0H 8259A偶地址PORT 1EQU2F2H 8259A奇地址 STACKSEGMENT 堆棧段DW50DUP 0 TOP POINTERLABELWORDSTACKENDS DATASEGMENT 數(shù)據(jù)段MESS 1DB Thisistest DB0DH 0AHMESS LENEQU MESS 1PRNT DONEDB0POINTERDW0000HCOUNTDB0PRNT ERRDB0DATAENDS CODESEGMENT 代碼段ASSUMECS CODE DS DATA SS STACKMAINPROCFARSTART MOVAX STACKMOVSS AXLEASP TOP POINTERMOVAX DATAMOVDS AX 填寫中斷向量表MOVAX 0000HMOVES AXMOVBX 00AHSHLBX 1SHLBX 1MOVAX OFFSETPRNT INTMOVES BX AXMOVAX SEGPRNT INTMOVES BX 2 AX 8259A 邊沿觸發(fā) 單片 非緩沖 非自動(dòng)EOI 8088CPU 允許請(qǐng)求IR2MOVDX PORT 0MOVAL 00010011BOUTDX ALMOVDX PORT 1MOVAL 08HOUTDX ALMOVAL 00000001BOUTDX ALMOVAL 11111011BOUTDX AL 8255A A口方式0輸入 C口高4位輸出 B口方式1輸出 C口低4位輸入MOVDX PORT CTRLMOVAL 10010100BOUTDX ALMOVAL 00001001B OUTDX AL 初始化打印機(jī) 給出負(fù)脈沖 PC5 INIT MOVDX PORT CTRLMOVAL 00001011BOUTDX AL 1MOVAL 00001010BOUTDX AL 0MOVCX 17H 延時(shí)5
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村水電安裝合同范例
- 傭金合同范例版
- 產(chǎn)品經(jīng)理雇傭合同范例
- 農(nóng)民購(gòu)煙合同范例
- 農(nóng)村荒地承包合同范例
- 公館車位出租合同范例
- 養(yǎng)雞場(chǎng)安全管理合同范例
- 臨沂購(gòu)房合同范例
- 企業(yè)仿真采購(gòu)合同范例
- 俱樂(lè)部公關(guān)合同范例
- CNAS-CL01:2018 檢測(cè)和校準(zhǔn)實(shí)驗(yàn)室能力認(rèn)可準(zhǔn)則
- 《認(rèn)知行為療法》課件
- B5G-6G,信道,衛(wèi)星SDR 解決方案
- 2025年浙江寧波市新農(nóng)村數(shù)字電影院線有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 污水處理廠的改造與升級(jí)
- 2025年國(guó)網(wǎng)數(shù)字科技控股有限公司招聘筆試參考題庫(kù)含答案解析
- 監(jiān)控設(shè)備采購(gòu)及安裝投標(biāo)方案(技術(shù)方案)
- 2025年中國(guó)扎染布市場(chǎng)調(diào)查研究報(bào)告
- 鞋業(yè)產(chǎn)業(yè)鏈上下游協(xié)同-洞察分析
- 《煤礦職業(yè)病危害防治》培訓(xùn)課件2025
- 2024年菠菜種子項(xiàng)目可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論