大二下微機(jī)第9章_第1頁
大二下微機(jī)第9章_第2頁
大二下微機(jī)第9章_第3頁
大二下微機(jī)第9章_第4頁
大二下微機(jī)第9章_第5頁
已閱讀5頁,還剩80頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第九章第九章 可編程并行接口芯片可編程并行接口芯片8255A及其應(yīng)用及其應(yīng)用 并行接口概述 CPU與外設(shè)之間的信息傳送都是通過接口電路 來進(jìn)行的。 計(jì)算機(jī) 外部設(shè)備、計(jì)算機(jī) 計(jì)算機(jī)之間交換 信息稱之為計(jì)算機(jī)通信。 計(jì)算機(jī)通信可分為兩大類: 并行通信:8位或16位或32位數(shù)據(jù)同時(shí)傳輸,速 度快,信息率高,成本高 串行通信:一位一位數(shù)據(jù)傳送(在一條線上順序 傳送),成本低 實(shí)現(xiàn)并行通信的接口就是并行接口。 并行接口的特點(diǎn) 在多根數(shù)據(jù)線上以數(shù)據(jù)字為單位同時(shí)傳遞 傳遞的數(shù)據(jù)不要求固定的格式 有可編程和不可編程之分,可編程結(jié)構(gòu)居多 適合于近距離數(shù)據(jù)傳送 速度較快 簡單并行接口回顧 不設(shè)置握手控制信號(hào)線

2、不需要對(duì)接口芯片進(jìn)行編程 執(zhí)行IOW指令就可以將數(shù)據(jù)通過數(shù)據(jù)總 線輸出到指定地址的鎖存器中,并通過 鎖存器輸出 執(zhí)行IOR指令,就可以從三態(tài)門上讀入數(shù) 據(jù) 連接8個(gè)開關(guān)的基本輸入接口 +5V A0 A1 A 2 A 3 A 4 A5 A6 A 7 A8 A 9 方式控制字方式控制字99H out 63h,al 8255應(yīng)用 舉例2 利用8255實(shí)現(xiàn)開關(guān)檢測和繼電器控制電路; 當(dāng)開關(guān)閉合時(shí),使繼電器通電動(dòng)作;開關(guān)斷 開時(shí),繼電器不動(dòng)作; 系統(tǒng)每隔100ms檢測一次開關(guān)狀態(tài),實(shí)現(xiàn)相 應(yīng)的繼電器控制; 初始狀態(tài)下繼電器不動(dòng)作。 CS A0 A1 WR RD DBPA0 PA7 PB0 PB7 +5V

3、 +12V K 繼電器繼電器 384H387H 388H38BHCS A0 A1 OUT1 CLK1 2MHzCLK0 OUT0 8259A PIC WR RD DB 8253 8255 中斷請求信號(hào)中斷請求信號(hào) INTR Q1 R1 R2 D1 題目分析: 使8255的A端口和B端口均工作于方式0; 8253計(jì)數(shù)器0和計(jì)數(shù)器1均工作于方式3,利用OUT0的輸出 作為計(jì)數(shù)器1的時(shí)鐘信號(hào),其輸出頻率為2KHz, OUT1輸出 頻率為10Hz(周期100ms); OUT1作為中斷信號(hào),每100ms產(chǎn)生一次中斷; CPU響應(yīng)中斷后檢測開關(guān)狀態(tài),控制繼電器的動(dòng)作; 8253兩個(gè)計(jì)數(shù)器的計(jì)數(shù)初值分別為:

4、 CNT0:2MHz/2KHz =1000 (16位) CNT1:100ms/0.5ms=200 (8位) 8255的初始化 MOV DX,387H MOV AL,82H ;1 00 0 0 0 1 0 OUT DX,AL XOR AL,AL ;A口輸出全0 MOV DX,384H OUT DX,AL 8253的初始化 設(shè)置工作方式: MOV DX,38BH MOV AL,36H OUT DX,AL MOV AL,56H OUT DX,AL 36H = 00 11 011 0 CNT0 16位 方式3 l置置計(jì)數(shù)初值:計(jì)數(shù)初值: MOV DX,388H MOV AX,1000 OUT DX,A

5、L MOV AL,AH OUT DX,AL MOV DX,389H MOV AL,200 OUT DX,AL 8255的控制程序(中斷處理) (中斷初始化程序略) 8253中斷服務(wù)程序中的8255控制程序段如下: MOV DX,385H ;PB口地址 IN AL,DX ;讀PB0狀態(tài) NOT AL ;變反 MOV DX,384H ;輸出到繼電器 OUT DX,AL 8255A的應(yīng)用舉例的應(yīng)用舉例3 某系統(tǒng)如圖。要求不斷檢測某系統(tǒng)如圖。要求不斷檢測開關(guān)開關(guān) K7K0 的狀態(tài),并隨時(shí)在發(fā)的狀態(tài),并隨時(shí)在發(fā) 光二極管光二極管LED7LED0上顯示。要求:若某開關(guān)斷開,對(duì)應(yīng)的上顯示。要求:若某開關(guān)斷開

6、,對(duì)應(yīng)的LED 點(diǎn)亮,若某開關(guān)合上,對(duì)應(yīng)的點(diǎn)亮,若某開關(guān)合上,對(duì)應(yīng)的LED熄滅,編寫相應(yīng)的控制程序。熄滅,編寫相應(yīng)的控制程序。 8255A PA7 PA0 K7 PB7 PB6 PB0 D7D0 RD WR A1 A2 A B C G2A G2B G1 Y0 Y1 Y2 Y3 Y4 O O O O O D7D0 RD WR A0 A1 CSA0 A3 A4 A7 8086 系統(tǒng)總線系統(tǒng)總線 LS138 M/IO DX指向控制口指向控制口 MOV AL, 10001011B ;控制字控制字 OUT DX, AL ;寫入控制字;寫入控制字 鍵盤掃描過程:鍵盤掃描過程: (1)檢測鍵盤上所有的鍵是否

7、都松開,反復(fù)檢測直至全松開。)檢測鍵盤上所有的鍵是否都松開,反復(fù)檢測直至全松開。 (2)檢測鍵盤上是否有鍵按下,反復(fù)檢測直至有鍵按下。)檢測鍵盤上是否有鍵按下,反復(fù)檢測直至有鍵按下。 (3)若有鍵按下,則消除鍵抖動(dòng)后(硬件消抖動(dòng)電路,軟件)若有鍵按下,則消除鍵抖動(dòng)后(硬件消抖動(dòng)電路,軟件 延時(shí)消抖動(dòng)下),再確認(rèn)該鍵是否按下。延時(shí)消抖動(dòng)下),再確認(rèn)該鍵是否按下。 (4)對(duì)按下的鍵進(jìn)行編碼,即將該鍵所在的行號(hào)和列號(hào)轉(zhuǎn)換)對(duì)按下的鍵進(jìn)行編碼,即將該鍵所在的行號(hào)和列號(hào)轉(zhuǎn)換 成成16進(jìn)制代碼。進(jìn)制代碼。 (6)根據(jù)代碼轉(zhuǎn)相應(yīng)功能子程序。)根據(jù)代碼轉(zhuǎn)相應(yīng)功能子程序。 (5)檢測該鍵是否松開,反復(fù)檢測直至松

8、開。)檢測該鍵是否松開,反復(fù)檢測直至松開。 檢測是否有鍵按下的方法:檢測是否有鍵按下的方法: CPU向端口向端口A送全送全“0”A口,口, 再從再從B口讀入列狀態(tài)。若讀入的口讀入列狀態(tài)。若讀入的 狀態(tài)為全狀態(tài)為全“1”,表示無鍵按下。,表示無鍵按下。 檢測按下鍵所在的行號(hào)的方法:檢測按下鍵所在的行號(hào)的方法: CPU先向端口先向端口A的的PA0送送“0” ,其余行線送,其余行線送“1”,再從,再從B口讀入列狀態(tài),若口讀入列狀態(tài),若 讀入的狀態(tài)為全讀入的狀態(tài)為全“1”,表示第,表示第0行無鍵按下;否則表示第行無鍵按下;否則表示第0行上有鍵按下。行上有鍵按下。 若第若第0行無鍵按下,再依此對(duì)行行無鍵

9、按下,再依此對(duì)行1,行,行2,行行7進(jìn)行上述操作,直至找出按鍵進(jìn)行上述操作,直至找出按鍵 所在的行和列的編號(hào)。所在的行和列的編號(hào)。 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 C 9 8 DE 4 0 F 6 1 5 B 2 7 3 A PA0 PA1 PA2 PA3 8255A 8 2 5 5 A +5V 將所按鍵行列號(hào)轉(zhuǎn)換成將所按鍵行列號(hào)轉(zhuǎn)換成(16進(jìn)制進(jìn)制)鍵代碼的方法鍵代碼的方法: 查表查表(略略) MOV DX, PORT-A ; DX指向指向A口口 MOV AL, 00H OUT DX, AL WO: MOV DX, PORT-B ; DX指向指向B口口 IN

10、AL, DX ; 輸入輸入B口口 AND AL,OFH COM AL,OFH ;各鍵均未按下;各鍵均未按下 JNE WO ;否,繼續(xù)等;否,繼續(xù)等 讀入列值讀入列值 鍵松開鍵松開 讀入列值讀入列值 有鍵按下有鍵按下 延時(shí)延時(shí)20ms消抖動(dòng)消抖動(dòng) 鍵仍按下鍵仍按下 逐行逐列查按鍵逐行逐列查按鍵 得行列碼得行列碼 查表得鍵代碼查表得鍵代碼 所有行置所有行置“0” N Y NWR: IN AL, DX ;輸入輸入B口口 AND AL,OFH COM AL,OFH ;是否有鍵按下;是否有鍵按下 JE WR ;否,等待;否,等待 MOV CX, 16EAH DLY: LOOP DLY WR: IN AL

11、, DX ;輸入輸入B口口 AND AL,OFH COM AL,OFH ;是否有鍵按下;是否有鍵按下 JE WR ;否,等待;否,等待 MOV AL,0FEH ;置行掃描初值;置行掃描初值 MOV CL,AL ;暫存于;暫存于C N-R: MOV DX,PORT-A OUT DX, AL ;輸出行掃描值;輸出行掃描值 MOV DX, PORT-B ;DX指向指向B口口 IN AL, DX ;輸入;輸入B口口 AND AL, OFH COM AL, OFH ;有鍵按下;有鍵按下 JNE ENCODE ;是,轉(zhuǎn)編碼;是,轉(zhuǎn)編碼 ROL CL, 01 ;否,修改掃描初值;否,修改掃描初值 MOV C

12、L, AL JMP N-R ;掃描下一行;掃描下一行 ENCODE: MOV BX,000FH 找出按下鍵所在的行號(hào)的方法:找出按下鍵所在的行號(hào)的方法: CPU先向端口先向端口A的的PA0送送“0” ,其余行線送,其余行線送“1”,再從,再從B口讀入列狀態(tài),口讀入列狀態(tài), 若讀入的狀態(tài)為全若讀入的狀態(tài)為全“1”,表示第,表示第0行無鍵按下;否則表示第行無鍵按下;否則表示第0行上有鍵按下。行上有鍵按下。 若第若第0行無鍵按下,再依此對(duì)行行無鍵按下,再依此對(duì)行1,行,行2,行行7進(jìn)行上述操作,直至找出進(jìn)行上述操作,直至找出 按鍵所在的行和列的編號(hào)。按鍵所在的行和列的編號(hào)。 得所按鍵行列號(hào)的方法:直

13、接從得所按鍵行列號(hào)的方法:直接從B口讀取口讀取 將所按鍵行列號(hào)轉(zhuǎn)換成將所按鍵行列號(hào)轉(zhuǎn)換成(16進(jìn)制進(jìn)制)鍵代碼的方法鍵代碼的方法: DATA SEGMENT TABLE DB 77H, 7BH, 7DH,7EH DB 0B7H, 0BBH, 0BDH,0BEH DB 0D7H, 0DBH, 0DDH,0DEH DB 0E7H, 0EBH, 0EDH,0EEH DATAENDS 每鍵有一個(gè)編代碼,每鍵有一個(gè)編代碼, 本例采用從左至右、從下本例采用從左至右、從下 至上順序碼至上順序碼 0F 為了編程方便,每個(gè)為了編程方便,每個(gè) 鍵應(yīng)有一個(gè)對(duì)應(yīng)的掃描碼鍵應(yīng)有一個(gè)對(duì)應(yīng)的掃描碼 ( 行列碼行列碼 ),如

14、表。,如表。 鍵值鍵值(編號(hào)編號(hào))行碼行碼列碼列碼(行列行列)掃描碼掃描碼 00111011177H 1011110117BH 2011101117DH 3011101117EH 410110111B7H 建立掃描碼表建立掃描碼表 ENCODE: MOV BX,000FH ;置鍵代碼初值;置鍵代碼初值 IN AL,DX ;讀入行列號(hào);讀入行列號(hào) NEXT-T: COM AL, TABLEBX ;與表中行列號(hào)相等嗎;與表中行列號(hào)相等嗎 JE DONE ;相等轉(zhuǎn);相等轉(zhuǎn)DONE DEC BX ;不相等,修改位置;不相等,修改位置 JNS NEXT-T ;未查完,繼續(xù);未查完,繼續(xù) MOV AH,

15、01 ;查完,未查到,置出錯(cuò)標(biāo)志;查完,未查到,置出錯(cuò)標(biāo)志 JMP EXIT ;退出;退出 DONE: MOV AL, BL ;鍵代碼送;鍵代碼送AL MOV AH, 00 ; 鍵有效標(biāo)志鍵有效標(biāo)志00AL 得所按鍵行列號(hào)的方法:直接從得所按鍵行列號(hào)的方法:直接從B口讀取口讀取 將所按鍵行列號(hào)轉(zhuǎn)換成將所按鍵行列號(hào)轉(zhuǎn)換成(16進(jìn)制進(jìn)制)鍵代碼的方法鍵代碼的方法: 查表查表 DATA SEGMENT TABLE DB 77H, 7BH, 7DH,7EH DB 0B7H, 0BBH, 0BDH,0BEH DB 0D7H, 0DBH, 0DDH,0DEH DB 0E7H, 0EBH, 0EDH,0EE

16、H DATAENDS MOV AL,0FEH ;置行掃描初值;置行掃描初值 MOV CL,AL ;暫存于;暫存于C N-R: MOV DX,PORT-A OUT DX, AL ;輸出行掃描值;輸出行掃描值 MOV DX, PORT-B ;DX指向指向B口口 IN AL, DX ;輸入;輸入B口口 AND AL, OFH COM AL, OFH ;有鍵按下;有鍵按下 JNE ENCODE ;是,轉(zhuǎn)編碼;是,轉(zhuǎn)編碼 ROL CL, 01 ;否,修改掃描初值;否,修改掃描初值 MOV CL, AL JMP N-R ;掃描下一行;掃描下一行 ENCODE: MOV BX,000FH ;置鍵代碼初值;置鍵代碼初值 IN AL,DX ;讀入行列號(hào);讀入行列號(hào) NEXT-T: COM AL, TABLEBX ;與表中行列號(hào)相等嗎;與表中行列號(hào)相等嗎 JE DONE ;相等轉(zhuǎn);相等轉(zhuǎn)DONE DEC BX ;不相等,修改位置;不相等,修改位置 JNS

溫馨提示

  • 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論