freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

可編程外圍接口芯片8255a及其應(yīng)用-資料下載頁

2025-01-06 01:59本頁面
  

【正文】 OUT 03H, AL ;使 8255A A口輸出允許中斷 MOV DI, OFFSET BUFF ;設(shè)置地址指針 MOV CX, 99 ;設(shè)置計(jì)數(shù)器初值 MOV AL, [DI] OUT 00H, AL ;輸出一個(gè)字符 INC DI MOV AL, 00H OUT 03H, AL ;產(chǎn)生選通 INC AL OUT 03H, AL ;撤消選通 STI ;開中斷 NEXT: HLT ;等待中斷 LOOP NEXT ;修改計(jì)數(shù)器的值,指向下一個(gè)要輸出的字符 HLT 中斷服務(wù)子程序如下: ROUTINTR: MOV AL, [DI] OUT 00H, AL :從 A口輸出一個(gè)字符 MOV AL, 00H OUT 03H, AL :產(chǎn)生選通 INC AL MOV 03H, AL ;撤消選通 INC DI :修改地址指針 IRET :中斷返回 【 思考 】 是否可以采用 A口的 OBF作為打印機(jī)的選通信號(hào)?如可以的話,軟件該如何修改?是否可用打印機(jī)的 BUSY作為 8255的 A口 ACK ? 【 習(xí)題與思考 】 1.試分析 8255A方式 0、方式 1和方式 2的主要區(qū)別,并分別說明它們適合于什么應(yīng)用場(chǎng)合。 2.當(dāng) 8255A的 A口工作在方式 2時(shí),其端口 B適合于什么樣的功能?寫出此時(shí)各種不同組合情況的控制字。 3.若 8255A的端口 A定義為方式 0,輸入;端口 B定義為方式 1,輸出;端口 C的上半部定義為方式 0,輸出。試編寫初始化程序。(口地址為80H83H) 4.假設(shè)一片 8255A的使用情況如下: A口為方式 0輸入, B口為方式 0輸出。此時(shí)連接的 CPU為 8086,地址線的 A A2分別接至 8255A的 A0、 A1,而芯片的 CS來自 A3A4A5A6A7=00101,試完成 8255A的端口地址和初始化程序。 二、 微機(jī)與鍵盤的接口 矩陣式鍵盤的結(jié)構(gòu) 在微型機(jī)系統(tǒng)中,鍵盤是一種最常用的外設(shè),它由多個(gè)開關(guān)組合而成。可以用來制造鍵盤的按鍵開關(guān)有好多種,最常用的有機(jī)械式、薄膜式、電容式和霍爾效應(yīng)式等 4種。機(jī)械式開關(guān)較便宜,但壓鍵時(shí)會(huì)產(chǎn)生觸點(diǎn)抖動(dòng),即在觸點(diǎn)可靠地接通前會(huì)通斷多次,而且長期使用后可靠性會(huì)降低。薄膜式開關(guān)可做成很薄的密封單元,不易受外界潮氣或環(huán)境污染,常用于微波爐、醫(yī)療儀器或電子秤等設(shè)備的按鍵。電容式開關(guān)沒有抖動(dòng)問題,但需要特制電路來測(cè)電容的變化?;魻栃?yīng)按鍵是另一種無機(jī)械觸點(diǎn)的開關(guān),具有很好的密封性,平均壽命高達(dá) 1億次甚至更高,但開關(guān)機(jī)制復(fù)雜,價(jià)格很貴。計(jì)算機(jī)上用的鍵盤一般都用機(jī)械式開關(guān)。 對(duì)于大多數(shù)的鍵盤,按鍵被排成行和列的矩陣。下面以機(jī)械式開關(guān)構(gòu)成的 16個(gè)鍵的鍵盤為例,來討論鍵盤接口的工作原理,這種原理對(duì)采用其它類型的開關(guān)的鍵盤也是適用的。 設(shè) 16個(gè)鍵分別為 16進(jìn)制數(shù)字 0~ 9和 A~ F,鍵盤排列、連線及接口電路如下圖所示。 16個(gè)鍵排成 4行 4列的矩陣,接到微型機(jī)的一對(duì)端口上。端口由 8255A構(gòu)成,其中端口 A作輸出,端口 B作輸入。矩陣的 4條行線接到輸出端口 A的 PA3~ PA0,用程序能改變這 4條行線上的電平。4條列線連到輸人端口 B的 PB3~ PB0, 4條行線還同時(shí)接到輸人端口 B的PB7~ PB4上。這樣,用輸入指令讀取 B口狀態(tài)時(shí),可同時(shí)讀取鍵盤的行列信號(hào)。 在無鍵壓下時(shí),由于接到 +5V上的上拉電阻的作用,列線被置成高電平。壓下某一鍵后,該鍵所在的行線和列線接通。這時(shí),如果向被壓下鍵所在的行線上輸出一個(gè)低電平信號(hào),則對(duì)應(yīng)的列線也呈現(xiàn)低電平。當(dāng)從 B口讀取列線信號(hào)時(shí),便能檢測(cè)到該列線上的低電平。讀取 B口的狀態(tài)時(shí),還能讀到行線上的低電平信號(hào)。這樣,根據(jù)讀入的行和列狀態(tài)中低電平的位置,便能確定哪個(gè)鍵被壓下了。 二、鍵盤與微機(jī)的接口及處理方式 行掃描方式 識(shí)別鍵盤上哪個(gè)鍵被壓下的過程稱為鍵盤掃描,上述鍵盤的掃描包含以下幾步: (1) 檢測(cè)是否所有鍵都松開了,若沒有則反復(fù)檢測(cè)。 (2) 當(dāng)所有鍵都松開了,再檢測(cè)是否有鍵壓下,若無鍵壓下則反復(fù)檢測(cè)。 (3) 若有鍵壓下,要消除鍵抖動(dòng),確認(rèn)有鍵壓下。 (4) 對(duì)壓下的鍵進(jìn)行編碼,將該鍵的行列信號(hào)轉(zhuǎn)換成 16進(jìn)制碼,由此確定哪個(gè)鍵被壓下了。如出現(xiàn)多鍵重接的情況,只有在其它鍵均釋放后,僅剩一個(gè)鍵閉合時(shí),才把此鍵當(dāng)作本次壓下的鍵。 (5) 該鍵釋放后,再回到( 2)。 檢測(cè)矩陣中是否有鍵壓下的一種簡(jiǎn)單方法是,自輸出口 A向所有行線輸出0電平,再通過 B口的低 4位讀取列值,若其中有 0值,便是有鍵壓下了。 在開始一次掃描時(shí),先應(yīng)確認(rèn)上一次壓下的鍵是否已松開。即先向所有行線 輸出低電平,再讀人各列線值,只有當(dāng)所有的行線和列線均為高電平,表示以前壓下的鍵部已釋放了,才開始檢測(cè)是否有鍵壓下。 當(dāng)檢測(cè)到有鍵壓下后,必須消除鍵抖動(dòng)( Debance)。消除鍵抖動(dòng)的常用方法是在檢測(cè)到有鍵壓下后,延長一定時(shí)間(通常為 20ms),再檢查該鍵是否仍被壓著。若是,才認(rèn)定該鍵確實(shí)被接下了,而不是干擾。 確認(rèn)有鍵壓下后,再確定被壓下鍵所在的行列號(hào)。為獲取行列信息,先從 A口輸出一個(gè)低電平到一行線上,再從 B口讀人各列的值,若沒有一列為低電平,說明壓下的鍵不在此行。于是,再向下一行輸出一個(gè)低電平,再檢測(cè)各列線上是否有低電平。依次對(duì)每一行重復(fù)這個(gè)過程,直至查到某一列線上出現(xiàn)低電平為止。被置成低電平的行和讀到低電平的列,便是被壓下鍵所在的行列值。 已知被壓下的鍵所在的行號(hào)( 0~ 3)和列號(hào)門~ 3)后,就能得到該鍵的掃描碼。例如,對(duì)于數(shù)字 0,它位于 3行、 3列,壓下 “ 0”鍵時(shí),從 B口可讀得 D7位和D3位為 0,其余位為 1,所以數(shù)字 0的編碼為 01110111B,即 77H;對(duì)于數(shù)字 6,處于 2行 1列,壓下 ‘ 6’鍵時(shí), D6位和 D1位 0以其余位為 1,所以數(shù)字 6的編碼為10111101B=BDH。類似地,其余各鍵的編碼也可一一求得。將這些編碼值列成表,放在數(shù)據(jù)段中,用查表程序來查對(duì),便能確定壓下的是什么鍵。 程序?qū)崿F(xiàn) 下面是鍵盤檢測(cè)、去抖動(dòng)、鍵值編碼和確定鍵名的匯編語言程序。程序運(yùn)行后,若返回值 AH=0,表示已讀到有效的鍵值,并在 AL中存有 0~ F鍵的 16進(jìn)制代碼;若 AH=l,則表示出錯(cuò)。 ;端口地址 PORTA EQU 0FF9H; 8255 A口地址 PORTB EQU 0FFBH; 8255 B口地址 PORTCTL EQU 0FFFH; 8255控制口地址 ;數(shù)據(jù)段,鍵盤掃描碼表 DATA SEGMENT ; 0 1 2 3 4 5 6 7 TABLE DB 77H, 7BH, 7DH, 7EH, 0B7H, 0BBH, 0BDH, 0BEH ; 8 9 A B C D E F DB 0D7H, 0DBH, 0DDH, 0DEH, 0E7H, 0EBH, 0EDH, 0EEH DATA ENDS ;堆棧段 STACK SEGMENT STACK DW 50DUP( 0) TOP_STACI LABEL WORD STACK ENDS ;代碼段 CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK START: 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, 10001011B;控制字 OUT DX, AL;寫人控制字 ;向所有行送 0 MOV DX, PORTA; A口 MOV AL, 00H OUT DX, AL;向 A口各位輸出 0 ;讀列,查看是否所有鍵均松開 MOV DX, PORTB WAIT_OPEN : IN AL, DX;鍵盤狀態(tài)讀人 B口 AND AL, 0FH;只查低 4位(列值) CMP AL, 0FH;是否都為 1(各鍵均松開)? JNE WAIT_OPEN;否,繼續(xù)查 ;各鍵均已松開,再查列是否有 0,即是否有鍵壓下 WAIT_ PRES: IN AL, DX;讀 B口 AND AL, 0FH;只查低 4位 CMP AL, 0FH;是否有鍵壓下 JE WAIT_PRES;無,等待 ;有鍵壓下,延時(shí) 20ms,消抖動(dòng) MOV CX, 16EAH DELAY: LOOP DELAY;延時(shí) 20ms ;再查列,看鍵是否仍被壓著 IN AL, DX AND AL, 0FH CMP AL, 0FH JE WAIT_PRES;已松開,轉(zhuǎn)出等待壓鍵 ;鍵仍被壓著,確定哪一個(gè)鍵被壓下 MOV AL, 0FEH;先使風(fēng)一 0 MOV CL, AL; CL=1111 1110B NEXT_ROW: MOV DX, PORTA; A口 OUT DX, AL;向一行輸出低電平 MOV DX, PORTB; B口 IN AL, DX;讀人 B口狀態(tài) AND AL, 0FH;只截取列值 CMP AL, 0FH;是否均為何 JNE ENCODE;否,表示有鍵壓下,轉(zhuǎn)去編碼 ROL CL, 01;均為 1,使下行輸出 0 MOV AL, CL JMP NEXT_ROW;查看下行 ;已找到有一列為低電平,對(duì)壓鍵的行列值編碼 ENCODE: MOV BX , 000FH;建立地址指針,先指向 F鍵對(duì)應(yīng)的地址 IN AL, DX;從 B口讀人行列號(hào) NEXT. TRY: CMP AL, TABL可 B川;讀人的行列值與表中查得的相等嗎? JE DONE;相等,轉(zhuǎn)出 DEC BX;不等,指向下一個(gè)(鍵值較小者)地址 JNS NEXT_TRY;若地址尚末減為負(fù)值,繼續(xù)查 MOV AH, 01;若減為負(fù)值,置出錯(cuò)碼 01— AH中 JMP EXIT;退出 DONE: MOV AL, BL; BL中存有鍵的 16進(jìn)制代碼 MOV AH, 00; AH=0,讀到有效鍵值 EXIT: HLT CODE ENDS END 三、 顯示器與鍵盤的接口 LED顯示器的結(jié)構(gòu) LED顯示器與微機(jī)的接口及處理方式 ⑴接口電路 ⑵多位動(dòng)態(tài)顯示 (實(shí)驗(yàn))
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1