第七章并行接口與基本人機交互接口_習題_第1頁
第七章并行接口與基本人機交互接口_習題_第2頁
第七章并行接口與基本人機交互接口_習題_第3頁
第七章并行接口與基本人機交互接口_習題_第4頁
第七章并行接口與基本人機交互接口_習題_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第七章 并行接口與基本人機交互接口(鄒逢興)7.1 教學要求并行接口是微機系統(tǒng)中最常用的接口,而8255A又是微機中應用最廣泛和最重要的可編程并行接口芯片,因此要求重點和熟練掌握。人機交互設備及接口是基本微機系統(tǒng)和任何微機應用系統(tǒng)中必不可少的外設及接口,其中鍵盤、LED顯示器、打印機等基本人機交互設備的接口大多是并行接口的應用,因此對這幾種人機交互接口的原理和方法也要求熟練掌握。具體要求見表7.1。7.2 內(nèi)容提要7.2.1 并行接口和串行接口微機與IO設備的接口按照數(shù)據(jù)傳送方式劃分,有并行接口和串行接口兩種。前者使傳送數(shù)據(jù)的各位同時在總線上傳輸,后者則使數(shù)據(jù)一位一位地傳輸。掌握并行接口和串行

2、接口,要正確理解:所謂并行與串行,僅指在I0接口與IO設備之間有并行、串行之分;就I/O接口和MPU之間而言,都是并行的。正因為這樣,所以兩種接口在結(jié)構(gòu)和功能上的主要差別在于:串行接口需進行并行與串行之間的相互變換,而并行接口無需進行這種變換。7.2.2 簡單的并行接口簡單的并行接口是指一些不可編程的并行接口芯片,由數(shù)據(jù)鎖存器和(或)三態(tài)門組成。單純的三態(tài)門只能在各種接口中作為單向或雙向的總線緩沖器/驅(qū)動器使用;鎖存器只能用作輸出接口,決不允許作為輸入接口使用;只有帶三態(tài)門輸出的鎖存器才既可作輸入接口用,又可作輸出接口用。7.2.3 可編程并行接口芯片8255A本節(jié)著重介紹8255A的內(nèi)部結(jié)構(gòu)

3、與引腳功能、三種工作方式和控制字。8255A的尋址與連接,編程及應用則在典型例題中討論。1內(nèi)部結(jié)構(gòu)與引腳功能8255A內(nèi)部由三大部分組成,即:與外設接口部分、與CPU接口部分和內(nèi)部控制部分(參閱有關(guān)書籍)。從外部接口特性上看,其外部引線分成兩半,如圖8.1所示。左邊是與系統(tǒng)總線相連的信號線,與8259、82538254等其他芯片原則上沒什么不同,不再贅述。右邊則是與外設相連的信號線,其中A口、B口外部引線為PA7PA0和PB7PB0,用作輸入或輸出的數(shù)據(jù)端口線,C口對應的外部引線分為PC7PC4和PC3PC0兩部分,既可用于傳送數(shù)據(jù),又可與A口和B口配合使用,用于傳送控制信號或狀態(tài)信號。282

4、55的工作方式8255有三種工作方式:方式0、方式1和方式2,均可通過編程設定。(1)方式0方式0又稱為基本輸入輸出方式。A、B兩組均可工作于方式0。在此方式下,A、B、C三個端口均為數(shù)據(jù)輸入輸出口,其中A口、B口、C口高4位、C口低4位可通過編程選擇分別工作于輸入或輸出狀態(tài),所以共有16種不同組合。方式0既可實現(xiàn)無條件傳送,也可使用查詢式傳送,還可對C口實現(xiàn)按位操作。無條件傳送的特點是只要 或 有效,就在8255與MPU之間交換數(shù)據(jù),而不管此時數(shù)據(jù)是否穩(wěn)定。方式0查詢式傳送時,使用A口或B 口作為數(shù)據(jù)口,沒有固定的應答線,而是由程序設定C口作為應答的控制和狀態(tài)信息通道。對C口的按位置位復位操

5、作則是通過寫控制端口實現(xiàn)的。需要說明的是,在方式0下,A口、B口和C口的輸出均有鎖存能力,但它們工作于輸入時全無鎖存能力,也就是說外設的數(shù)據(jù)要一直加在這些接口上,必須保持到被CPU讀走。(2)方式1方式1又稱為選通或應答輸入輸出方式。A、B兩組都有此種工作方式。在此方式下,A口和B口為輸入或輸出數(shù)據(jù)端口;C口的某些位固定為A口和B口的應答控制線和中斷請求線,不能用程序加以改變,但要注意輸入和輸出使用的應答控制線有所不同,且輸入與輸出、A口與B口所用信號對應于C口的引腳也各不相同。方式1輸入使用、和INTR三個信號,其中: 是外設給8255的選通信號,表示外設的數(shù)據(jù)已準備好,當變?yōu)榈碗娖綍r,數(shù)據(jù)

6、鎖存入A口或B口。 IBF是8255給外設的應答信號,表示輸入緩存器滿,它由信號的下降沿置位,由CPU發(fā)出的信號復位。 INTR為中斷請求輸出信號,高電平有效。數(shù)據(jù)鎖存后,可發(fā)中斷請求,但該中斷請求能否發(fā)生要由內(nèi)部中斷允許位INTE控制。 INTE的開啟可由對C口的按位置復位操作完成,但要注意A口是對PC4置位,而B口是對PC2置位。方式1輸出則使用、和INTR三個信號,其中: 是輸出緩存器滿。該信號是8255發(fā)給外設的數(shù)據(jù)選通信號, 變低電平表示CPU已將數(shù)據(jù)送至8255,并鎖存在相應端口上。 是響應輸入。這是外設對8255發(fā)出的 的響應信號,變低,表明外設已從8255的端口接收到CPU輸出

7、的數(shù)據(jù)。 INTR與輸入時相同,為中斷請求輸出信號,高電平有效。當和同時變高時,INTR變高可發(fā)出中斷信號,但中斷請求能否發(fā)生還受內(nèi)部中斷允許位INTE控制。此時,INTE的開啟,A口是對PC6、B口是對PC2置位而實現(xiàn)的。方式1既可用中斷方式傳送數(shù)據(jù),也可用查詢方式傳送數(shù)據(jù)。(3)方式2方式2又稱為應答式雙向輸入輸出方式、只有A組具有這種方式。方式2的功能相當于是方式1的輸入和輸出功能的結(jié)合。在此方式下,C口的PC3PC7五條線固定作為應答控制線和中斷請求線,各應答信號線功能與方式1下同名信號線相同。當A口工作于方式2時,B口可按方式0或方式1工作;而C口剩余線的功能則因B口工作方式的不同而

8、異:B口按方式1工作時,用作應答控制線和中斷請求線;B口按方式0工作時,可用作數(shù)據(jù)端口線。方式2的數(shù)據(jù)傳送,也是既可用中斷方式,亦可用查詢方式。38255的控制字和狀態(tài)字8255內(nèi)部有兩種控制字,即工作方式控制字和C口按位置位復位控制字。工作方式控制字用于設置各端口的工作方式、規(guī)定接口功能;而按位置位復位控制字是專門用于對C口的任何一位實現(xiàn)置“1”或置“0”的控制字。格式分別如圖7.2、圖7.3所示。當8255工作在方式1或方式2時,從C口可以讀出各有關(guān)信號的狀態(tài)。狀態(tài)字格式可參閱有關(guān)書籍,此處從略。 關(guān)于控制字要說明幾點: 設置方式控制字時,A口、B口作為整體設置,而C口要分成上、下兩部分分

9、別設置。但三個端口的工作方式均由一個控制字規(guī)定。 C口按位置位復位控制字不是送到C口地址,而是送到控制寄存器地址;且一個控制字只能使C口一位置位或復位。方式控制字和按位置位復位控制字均寫入同一個控制寄存器地址,二者通過最高位D7來區(qū)別。D71為方式控制字,D70為按位置位復位控制字。7.2.4 基本人機交互接口1鍵盤與鍵盤接口鍵盤是微型計算機中最基本的輸入設備,是人機交互的紐帶。按功能差別,鍵盤分為編碼鍵盤和非編碼鍵盤。編碼鍵盤能自動檢測按鍵,并以串并方式將按鍵所對應的功能碼自動送給CPU。而非編碼鍵盤只提供鍵盤的行列矩陣,按鍵的識別和鍵值的確定、輸入等均由主機軟件完成。對上述兩種鍵盤,要求重

10、點和熟練掌握非編碼鍵盤的接口方法。而對有觸點按鍵組成的非編碼鍵盤,其接口必須具備去抖動、防串鍵、識別被按鍵和產(chǎn)生鍵碼四個基本功能。其中關(guān)鍵是放按鍵的識別和鍵碼的產(chǎn)生,它們一般合在一起完成,即只要識別到有鍵按下,就通過計算或查表產(chǎn)生該鍵的鍵碼。按鍵的識別方法主要有兩種:線反轉(zhuǎn)法:通過行、列顛倒兩次掃描來識別閉合鍵。此法需兩個可編程雙向IO端口。行列掃描法:由程序逐行/列對鍵盤進行掃描,通過檢測列行狀態(tài)來確定閉合鍵。此法需輸入、輸出端口各一個。實際中以行列掃描法應用較廣,因此主要要求掌握它。2LED顯示器接口IED顯示器是指由發(fā)光二極管LED顯示字段構(gòu)成的顯示器件,常用的有7段/8段LED顯示器。

11、LED顯示器接口有一位和多位之分。前者較簡單,只需在8段LED顯示器與MPU之間加一個8位鎖存器即可。而多位LED顯示器接口通常有兩種方法:靜態(tài)顯示法和動態(tài)顯示法。(1)靜態(tài)顯示法靜態(tài)顯示法是各位獨立驅(qū)動的顯示方式,相當于多個一位LED顯示器接口的組合。按字段譯碼方式不同又有軟件譯碼和硬件譯碼之分,軟件譯碼每位用一個8位并行輸出口驅(qū)動,而硬件譯碼每兩位用一個8位并行輸出口和2個7段8段譯碼器驅(qū)動。(2)動態(tài)顯示法即動態(tài)掃描、分時循環(huán)顯示的一種多位顯示方法。其原理是利用人眼視覺的滯后效應,使各個數(shù)碼管輪流顯示,每個數(shù)碼管每次顯示1ms左右,造成視覺上的穩(wěn)定顯示。實現(xiàn)人眼看上去的各位“同時”顯示。

12、以8位LED顯示器為例,接口只需兩個8位輸出口。一個用于輸出顯示段碼,另一個用于輸出顯示位碼。這種方法的優(yōu)點是可簡化硬件,降低成本,減小功耗,應用最廣泛,因此要求熟練掌握。3打印機接口打印機是微機系統(tǒng)中主要的硬拷貝輸出設備,種類繁多,不同打印機的內(nèi)部結(jié)構(gòu)、打印原理和控制電路有所不同,但接口的原理是相似的。要求重點掌握并行打印機的接口原理及方法。(I)Centronics并行接口標準打印機從外部接口特性看,可分為串行打印機和并行打印機兩類。前者采用RS232C串行接口標準,后者采用Centronics并行接口標準。目前多數(shù)打印機為并行打印機,所以主要要求學握基于Centronics標準的并行打印

13、機接口原理與方法。Centronics標準定義了36芯插頭座。其中最主要的是8位并行數(shù)據(jù)線,兩根握手聯(lián)絡信號線、和一根忙線BUSY。它們的工作時序如圖7.4所示。圖7.4 并行打印機接口時序(2)并行打印機接口方法由圖7.4可知,采用Centronics接口標準的并行打印機工作過程為:當主機往打印機輸出打印數(shù)據(jù)時,首先查詢“忙”信號(BUSY),如果“不忙”,才能向打印機輸出數(shù)據(jù)。在把數(shù)據(jù)送到數(shù)據(jù)線上后,先發(fā)信號通知打印機;打印機接到選通信號后,先發(fā)出“忙”信號,再從接口接收數(shù)據(jù)。當數(shù)據(jù)接收完并存入內(nèi)部的打印緩沖器后,便送出信號,表示打印機已準備好接收新數(shù)據(jù),同時在 脈沖的后沿使BUSY撤消。

14、7.3 典型題型及例題精解本單元內(nèi)容主要涉及可編程并行接口芯片8255A的接口特性、工作方式、應用編程,以及幾種常用人機交互設備的基本工作原理和接口原理、方法。其考核題型主要是有關(guān)8255A的接口特性、工作方式和常用人機交互接口基本原理的簡答題、選擇題、填空題、判斷題,以及8255A的編程、應用和人機交互接口分析、設計等方面的綜合應用題。例7.1 填空題1. 8255A把(A口和C口的上半部分)和(B口和C口的下半部分)分別稱為A組和B組,可組成兩個獨立的并行接口。2.8255A中,A組有(3)種工作方式,它們是(方式0、方式1和方式2),B組有(2)種工作方式,它們是(方式0和方式1)。當A

15、組工作于方式2時,B組可以工作于(方式0或方式1)。3.當8255A的PC4PC7全部為輸出線時,表明8255A的A端口的工作方式是(方式0)。4.8255A工作于方式0時,(A、B和C)口輸入沒有鎖存能力。5.8255芯片工作于方式1的輸入模式時,該芯片與外設的聯(lián)系信號有(和IBF)。6.當數(shù)據(jù)從8255的端口C往數(shù)據(jù)總線上讀出時,8255的幾個控制信號、A1、A0、分別是(0、1、0、0、1)。7.現(xiàn)行PC機中,臺式打印機與主機的接口大多采用(Centronics)接口。設計算機的每個I/O端口為8位?,F(xiàn)有一個64健的鍵盤,如果采用線性鍵盤結(jié)構(gòu),至少需要(8)個端口;如果采用矩陣鍵盤結(jié)構(gòu),

16、至少需要(2)個端口。分析:如果采用線性鍵盤結(jié)構(gòu),64個鍵就是64位。因此需要8個8位的端口。如果采用矩陣鍵盤結(jié)構(gòu),用88矩陣結(jié)構(gòu),則只需要兩個端口,一個用作行列輸出,一個用作列/行輸入。9在矩陣式鍵盤結(jié)構(gòu)中,識別被按鍵位置的方法有(行列掃描法和線反轉(zhuǎn)法)。10. 對于共陰極連接的7段數(shù)碼顯示器,如果要使某一段發(fā)光,則需要在對應的段輸入引腳上輸入(TTL高電平)。例7.2 選擇題1. 并行接口和串行接口的區(qū)別主要表現(xiàn)在 之間的數(shù)據(jù)傳輸前者是并行,后者是串行。A接口與MPU B接口與外設 C接口與MPU和外設28255A工作方式中具有中斷請求功能的是: 。A、方式0 B、方式1 C、方式23一臺

17、微機化儀器采用8255A芯片作數(shù)據(jù)傳送接口,并規(guī)定使用I/O地址的最低兩位作芯片內(nèi)部尋址,已知芯片A口地址為0F4H,則當CPU執(zhí)行輸出指令訪問0F7H端口時,其操作為 。 A數(shù)據(jù)從端口C送數(shù)據(jù)總線 B數(shù)據(jù)從數(shù)據(jù)總線送端口C C控制字送控制寄存器 D數(shù)據(jù)從數(shù)據(jù)總線送端口B4并行接口芯片8255A與打印機的連線如圖7.5所示,當A15A20000 0000 1100 00時,經(jīng)地址譯碼器輸出使 0。(1) 口A的工作方式應為 A. 方式0 B.方式1 C.方式2 D.方式0或方式1均可(2) 口C的工作方式應為 A方式0 B方式1 C方式2 D方式0或方式2均可(3)IO傳送的控制方式為 方式。

18、 A無條件傳送 B查詢或中斷 C中斷 D查詢(4)8255口C的地址為 。A00C0H B00C1H C00C2H D. 00C3H(5)8255口A的地址為 。 A00C0H B00C1H C00C2H D00C3H分折:根據(jù)圖中打印機與8255A的握手信號線的連接關(guān)系,可知8255A并沒有用固定的應答線,也未使用中斷,所以口A只可能工作在方式0;而口C在作為一個獨立端口時,只有方式0一種工作方式。所以A口、C口均工作在方式0。在方式0下,I/O同步控制方式可以是無條件傳送或查詢式傳送,由圖中打印機與8255A使用兩條非固定握手信號線,可知I/O同步控制方式是查詢式,即只有打印機非“忙”時,

19、才能輸出數(shù)據(jù)。關(guān)于口地址的計算方法參見上題,但此題中要注意:最低兩位地址線A1、A0并沒有對應地接到芯片的內(nèi)部端口選擇線A1A0上,而是顛倒了順序。5當8255A被設定成方式1時,其功能相當于 。 A0線握手并行接門 B. 1線握手并行接口 C2線握手并行接口 D. 多線握手并行接口分析:8255A在方式1下,無論輸入還是輸出均使用二根握手聯(lián)絡信號,輸入使用和IBF;而輸出使用和。6. 8255A有兩種控制字,其中工作方式控制字一定 。A . 不等于80H B小于等于80H C大于等于80H78255A工作在方式1的輸入狀態(tài)時,可以通過信號 知道端口是否已經(jīng)準備好了輸入的數(shù)據(jù)。AREADY B

20、 C DINTR分折:當外部輸入設備通過工作在方式1的8255A與CPU相連接時,如果外部設備的輸人數(shù)據(jù)已經(jīng)送到端口的數(shù)據(jù)輸入緩沖器鎖存,則IBF變高,此時若中斷是允許的,即INTE為高時,則INTR也變高,可通過INTR向CPU發(fā)出中斷請求或查詢INTR狀態(tài),來判明外設數(shù)據(jù)是否難備好,所以選D。8當8255A的端口A和端口B都工作在方式1輸入時,端口C的PC7和PC6 。 A. 被禁止使用 B只能作為輸入使用 C只能作為輸出使用 D可以設定為輸入或輸出使用9. PC系列機鍵盤常采用單片機作為鍵盤控制器,它通過一條5芯電纜向主機提供鍵的 。 ABCD碼 B二進制碼 C. 掃描碼 DASCII碼

21、分折:PC系列機鍵盤是屬于非編碼鍵盤與編碼鍵盤之間的一種鍵盤,內(nèi)部的單片機能自動識別鍵的按下與釋放,自動生成相應的掃描碼,并以串行方式送往主機箱。需要說明的是這種掃描碼只是鍵的行列位置碼,并沒有提供與鍵的含義和功能直接對應的鍵值或鍵碼,鍵碼(ASCII碼)的產(chǎn)生需由主機通過軟件完成。所以,從這個角度看,PC鍵盤又不具備編碼鍵盤的特征。例8.3 判斷題18255A工作于方式2時,A口、B口均作為雙向數(shù)據(jù)傳送端口,C口各位作為它們的應答控制線。()2 在微機系統(tǒng)中,一般都要為鍵盤、顯示器、打印機等人機交互設備在內(nèi)存或接口中建立一個相應的數(shù)據(jù)緩沖區(qū)。這類IO緩沖區(qū)的操作與堆棧一樣,也是先進后出、后進

22、先出。()分析:鍵盤、顯示器、打印機等人機交互設備的數(shù)據(jù)緩沖區(qū)采用的是隊列結(jié)構(gòu),其進出原則是先進先出。3. 8255工作在方式1或方式2時,其狀態(tài)字通過讀控制端口獲得。()分析:8255的狀態(tài)字應通過讀C端口獲得。4微機系統(tǒng)中,各模塊發(fā)出的總線請求、總線忙、中斷請求之類的控制信號,一般采用OC門作為輸出驅(qū)動電路。()分析:IO端口線不外乎有OC輸出的I/O端口線、三態(tài)輸出的I/O端口線和偽雙向I/O端口線三類。其中OC輸出的I/O端口線有一個十分重要的特性,即多個信號在端口總線上直接相連時能夠?qū)崿F(xiàn)幾個低電平有效信號的“線或”功能,也即不管哪個模塊的輸出端有低電平(有效)輸出,這根線上的信號狀態(tài)

23、都有效。所以,特別適合于傳輸?shù)碗娖接行У摹岸嘣春弦弧笔娇偩€信號。因此,微機系統(tǒng)中,各模塊發(fā)出的總線請求、總線忙、中斷請求之類的控制信號,一般采用OC門作為輸出驅(qū)動電路。而與OC輸出的I/O端口相比,三態(tài)輸出的I/O端口在沒有IO操作時其輸出端是處于第三態(tài)高阻態(tài),對所連的外總線沒有影響,這一特性特別適合于多數(shù)據(jù)源利用公共總線傳輸數(shù)據(jù)的需要。所以,對于總線的接口,數(shù)據(jù)總線、地址總線和大部分控制總線都是采用三態(tài)方式。5對多位LED顯示器,既可采用各位獨立驅(qū)動的顯示方式,又可采用各位動態(tài)掃描、分時顯示的方法。()例7.4 接口電路8255A工作于方式1中,CPU如何以中斷形式將輸入設備的數(shù)據(jù)讀入。答:

24、當外設漣備好數(shù)據(jù)送至8255A的端口數(shù)據(jù)線時,向8255A發(fā)選通信號;8255A利用該信號把端口數(shù)據(jù)鎖存至鎖存器,并使IBF變?yōu)楦咚徒o外設,表明數(shù)據(jù)已經(jīng)鎖存但尚未讀走。同時,在INTR允許中斷狀態(tài)下,IBF變高也使INTR變高,向CPU發(fā)中斷請求。CPU接受中斷請求后,在中斷服務程序中,執(zhí)行一條讀端口指令,將存于緩沖器中的數(shù)據(jù)讀走。同時,信號的下降沿使INTR復位,上升沿使IBF復位。又可開始下個輸入過程。例7.5 如圖7.6所示,CPU檢測開關(guān)S0S7的通斷狀態(tài),并在LED0LED7對應位上顯示(開關(guān)閉合時對應燈亮),問:(1) Ul是 ,U2是 。 A譯碼器 BDA轉(zhuǎn)換器 C. 三態(tài)緩沖器

25、 D. 采樣保持器 E鎖存器 F光藕(2) 編寫完成檢測開關(guān)狀態(tài)并顯示的子程序片段(U1、U2均為同相IO口)。解:(1)由圖可知U2用于輸入開關(guān)狀態(tài),其輸出直接與數(shù)據(jù)總線相連,所以要采用三態(tài)緩沖器,以避免總線沖突。U1用于輸出控制LED7LED0顯示,應具有鎖存功能,以保證正確顯示。所以,U1是鎖存器(E)、U2是三態(tài)緩沖器。(2)MOV DX,80HIN AL,DX ;讀人S0S7的通斷狀態(tài)NOT AL ;狀態(tài)位按位求反OUT DX,AL ;狀態(tài)寫入,驅(qū)動LED例7.6 分析圖7.7所示的電路,指出其中的錯誤并說明其后果,圖中三態(tài)門為PC微型機的輸入接口,其地址為100H。解:這是一個用三

26、態(tài)門接口輸入開關(guān)狀態(tài)的接口電路。圖中存在三處錯誤:(1)使用參數(shù)譯碼,得到的是一個輸出口,而不是輸入口。 應改為。(2)圖中使用“或非”門進行地址譯碼,除了A9A0100H這種狀態(tài)外,其他組合均使“或非”門輸出低電平,即大部分時間,三態(tài)門是直通的,這將使開關(guān)輸入狀態(tài)直接送上數(shù)據(jù)總線,從而導致總線沖突。應將“或非”門改為“或”門。(3)開關(guān)K的位置接錯。當開關(guān)K閉合時,反向器輸入為高電平;開關(guān)K打開時,反向器輸入端懸空,而懸空亦常解釋為高電平且狀態(tài)不穩(wěn)定,因而無法獲得正確的開關(guān)狀態(tài)。正確接法見圖7.8。例7.7 兩按鈕K1和K2如圖7.9所示。若給定接口地址E000HE00FH可任意選用。(1)

27、 試自定接口芯片,將此兩按鈕接到80868088的系統(tǒng)總線上,畫出連接圖。(2) 編寫程序,實現(xiàn)如下功能:若K1、K2均未按下,則程序等待;若K1按下,則程序轉(zhuǎn)向PGR1;若K2按下,則程序轉(zhuǎn)向PGR2;若Kl、K2同時按下,則程序轉(zhuǎn)向NEXT。當Kl、K2同時按下時,允許有30ms的時間差。解:這是一個簡單的接口問題,可選用三態(tài)門作輸入接口、門電路作地址譯碼。電路連接如圖7.10所示。由圖可知,此接口占用E000HE00FH 范圍的地址,編程時可任選其中一個地址。當按鈕未按下時,三態(tài)門輸入為高電平;而當按鈕按下時,三態(tài)門輸入則為低電平。由此可編制識別按鍵,控制程序轉(zhuǎn)移的驅(qū)動程序如下:STAR

28、T:MOVDX,0E000H;讀按鈕狀態(tài)NOTALTESTAL,03H;有按鈕按下?JZSTART;無,等待CALLDELAY;延時20ms去抖動INAL,DX;讀按鈕狀態(tài)NOTALANDAL,03H;有按鈕按下?JZSTART;無,等待CMPAL,03H;K1、K2同時按下?JZNEXT;是,轉(zhuǎn)NEXTCMPAL,01H;K1按下?JZPRG1;是,轉(zhuǎn)PRG1JMPPRG2;K2按下,轉(zhuǎn)PRG2分析:設計按鈕或鍵盤接口時,要考慮去抖動問題。同樣考慮兩個按鈕同時按下時,也需要延時檢測,因為兩個按鈕實際上不可能做到真正的同時,總有十幾到幾十ms的時間差。這是一個實際的工程問題,在真正的工程應用中

29、必須加以考慮。例7.8 PC系列微機應用系統(tǒng)以8255A作為接口,采集一組開關(guān) S7S0的狀態(tài),然后它通過一組發(fā)光二極管LED7LED0顯示出來,(Si閉合,對應LEDi亮;Si斷開,對應LEDi滅),電路連接如圖7.11所示。已知8255A的A、B兩組均工作在方式0。(1)寫出8255A四個端口地址;(2)寫出8255A的工作方式控制字;(3)畫出實現(xiàn)給定功能的匯編語言程序流程圖,并編寫程序。解:由圖可知:8255A的A口工作在方式0出,B口工作在方式0入。當:A9A8A7A6A5A4A3A2時,74LS138的輸出低電平,選中8255A。由此可解:(1)8255A A口、B口、C口和控制口

30、地址分別為:320H,321H、322H、323H。(2)8255A的工作方式控制字:82H(未用的位為0)。(3)程序流程圖如圖7.12所示,程序如下:MOVAL,100001BMOVDX,323HOUTDX,AL;8255A初始化DECDXDECDXINAL,DX;讀B口NOTAL;狀態(tài)值按位求非DECDXOUTDX,AL;狀態(tài)寫入A口,驅(qū)動LEDHLT例8.9 某由軟件譯碼的多路復用4位LED顯示器接口電路,如圖7.13所示。圖中4個7段LED復用一個8255A的端口A和一個反向驅(qū)動器。為使LED顯示器的各位能顯示不同的數(shù)字,各個顯示器不同時發(fā)亮,每個LED顯示器的公共陰極由8255A端

31、門B的一條輸出線控制,只有陰極為低電平時,該LED顯示器才能發(fā)亮。在接口電路中數(shù)據(jù)和數(shù)位控制均有規(guī)律地不斷更新(即掃描或刷新)。對每個LED顯示器來說只按順序固定顯示某一定的短暫時間(例如1ms),當刷新速度夠大時,由于視覺暫留現(xiàn)象,感覺4個LED顯示器同時發(fā)亮且無閃爍感。若待顯示字符為分離的BCD代碼(在數(shù)據(jù)段DISBUF為首的存貯單元),其相應的顯示代碼表已存貯在數(shù)據(jù)段中DISCODE為首的存貯單元,試分析該接口電路,回答問題,完成該接口電路的刷新顯示程序的編程(若每個LED顯示器的固定顯示時間為1ms,并由編制好的DIMS軟件延時lms子程序?qū)崿F(xiàn))。(1)該接口電路中8255A的地址是什

32、么?其中各端口的地址又是什么?由哪些引腳選擇確定?(2)分析該接口電路中端口A、端口B應工作在什么方式下?試完成對8255A的初始化編程。(3)如何將要顯示的字符代碼(如分離的BCD數(shù))轉(zhuǎn)換為顯示代碼?用軟件譯碼的原理方法是什么?請簡單說明?(4)根據(jù)圖示接口原理,試定義一個過程,編程實現(xiàn)將DISBUF緩沖區(qū)的4個字符代碼(分離BCD數(shù))顯示于圖示LED顯示器上(即刷新顯示程序)。試說明是否尚有其他的方法刷新顯示?簡述其實現(xiàn)原理,并與軟件譯碼方法比較有何優(yōu)點?解:(1)8255A的地址是200H203H。其中A口、B口、C口、控制口分別為200H、201H、202H和203H。8255A的片選

33、由高位地址線A2Ai通過譯碼得到的。內(nèi)部各端口由地址總線A1、A0選擇確定的。(2)由圖可知,端口A是段碼輸出端口,通過驅(qū)動電路送出顯示代碼到數(shù)碼管相應段;而B口是位碼輸出端口,用作位控制,用于決定哪個數(shù)碼管點亮,可以顯示數(shù)據(jù)。這是最基本的無條件輸出方式。所以,端口A、端口B都應工作在方式0輸出。其初始化程序片段為:MOVDX,203H;控制寄存器地址MOVAL,B;A口和B口均為方式0輸出OUTDX,AL(3)采用軟件譯碼將要顯示的字符代碼轉(zhuǎn)換為LED顯示段碼。軟件譯碼的原理是使用查表法。以分離BCD數(shù)顯示為例,在內(nèi)存中按BCD數(shù)從小到大(09)的順序預先建立各顯示字符的LED顯示段碼表,當

34、要顯示某個分離BCD數(shù)時,以該BCD數(shù)為表項序號查表獲取對應的LED顯示段碼。(4)軟件譯碼動態(tài)顯示DISBUF緩沖區(qū)中4個字符的驅(qū)動程序如下:DISPLAYPROCMOVDI,DISBUFMOVCL,08HMOVAL,00HMOVDX,201HOUTAL,DXDISP:MOVAL,DIMOVBX,DISCODEXLATDECDXOUTDX, ALMOVAL,CLINCDXOUTDX ,ALCALLDIMSCMPCL,01JZDISENDINCDISHRCL,1JMPDISPDISEND:RETDISPLAYENDP除此動態(tài)顯示法外,還有靜態(tài)顯示法,見內(nèi)容提要。也可采用硬件譯碼的動態(tài)掃描、分時

35、顯示接口電路。例8.10 設系統(tǒng)機外擴一片8255以及相應的實驗電路,如圖8.14所示。要求:先預置開關(guān)K3K1為一組狀態(tài),然后按下自復按鈕K產(chǎn)生一個負脈沖信號,輸入到PC4()。用發(fā)光二極管LEDi亮,顯示K3K1的狀態(tài)。重復以上操作,直到主機鍵盤有任意鍵按下時結(jié)束演示。要求:K3K2K1000時,LED1亮,K3K2 K1001時,LED2亮; K3K2K1010時,LED3亮,K3K2K1011時,LED4亮;K3K2K1100時,LED5亮,K3K2 K1101時,LED6亮; K3K2K1110時,LED7亮,K3K2K1111時,LED8亮;K3Kl閉合為0,斷開為1。(1)該接口

36、電路中8255的地址是什么?其中各端口的地址又是什么?(2)分析該接口電路中A端口、B端口應工作在什么方式下?(3)試完成對8255的初始化編程。(4)試完成下列程序主體,實現(xiàn)題中要求。DATASEGMENTMESGDB 8255READY,0DH,0AH,$TABDB BDB BDB BDB BDB BDB BDB BDB BDATAENDSCODESEGMENTASSUME CS: CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCALLI8255;8255初始化MOVAH,9MOVDX,OFFSET MESGINT21H;給出操作提示SCAN:MOVAH,1;讀鍵

37、盤INT16HJNZRETURN;有鍵按下,結(jié)束MOVDX,21AH;讀方式1狀態(tài)字INAL,DXTESTAL,20H;有數(shù)據(jù)輸入(IBFA1)?JZSCAN;無,繼續(xù)查詢等待MOVDX,218H;讀開關(guān)狀態(tài)(A口)INAL,DXMOVBX,OFFSET TAB;查表,將開關(guān)狀態(tài)轉(zhuǎn)換成顯示碼ANDAL,07HXLATINCDXOUTDX,ALJMPSCANRETURN:MOVAH,4CHINT21HI8255:MOVDX,21BHMOVAL,HOUTDX,ALMOVAL,08HOUTDX,ALRETCODEENDSENDSTART例7.11 IBMPC總線上有一鍵盤輸入接口,如圖7.15所示,

38、請問: (1)該I0口的基地址是唯一的嗎?試列出個有效的基地址 ; (2)要判斷是否有鍵按下,掃描地址應是 ; (3)如按下9鍵,掃描地址是 ;(4)從該地址讀入的值是 。解:分析圖7.15,這是一個采用行掃描法的鍵盤接口電路。掃描信號由地址總線A0A3提供,輸入端口由三態(tài)門組成,端口地址由對高端地址A4A9譯碼產(chǎn)生,當A9A8A7A6A5A4時,端口被選中。由此可知,掃描地址為一地址范圍:100H10FH,而對不同行的掃描,是通過對不同地址執(zhí)行讀操作完成的。如要判斷是否有鍵按下,對端口100H執(zhí)行讀操作,地址總線A0A3輸出均為0,相當于同時產(chǎn)生4個行掃描信號,若此時讀到的數(shù)據(jù)D0D3111

39、1,則表明有鍵按下;若要識別按鍵,4個行掃描地址分別為:10EH、10DH、10BH和107H。由此可解:(1)不唯一,100H;(2)100H;(3)10DH;(4)x x x x1011B。例7.12 在上題基礎上,假定行的編號從上到下為03,列的編號從左到右為03,要求任意一鍵按下后,將其所在的行、列按高4位、低4位組合成一個字節(jié),放入KEY單元,編寫用掃描法識別按鍵的程序。解:根據(jù)上述分析編寫的掃描程序如下:START:MOVDX,100HINAL,DX;讀所有按鍵狀態(tài)NOTALTESTAL,0FH;有鍵按下?JZSTART;無,繼續(xù)掃描CALLDELAY;軟件延時20ms,去抖動IN

40、AL,DX;讀所有按鍵狀態(tài)NOTALTESTAL,0FH;有鍵按下?JZSTART;無,表明是干擾信號,繼續(xù)掃描MOVCH,FEH;行掃描信號,從第3行開始MOVBL,3;記錄信號AGAIN:MOVCL,CHANDCL,0FHCMPCL,0FH;掃描完4行?JZSTART;掃描完轉(zhuǎn)START,繼續(xù)等待MOVDX,100HORDL,CL;形成掃描行地址INAL,DX;讀當前行按鍵狀態(tài)ANDAL,0FHCMPAL,0FH;當前行有鍵按下?JNZNEXT;有,轉(zhuǎn)NEXTROLCH,1;指向下一掃描行DECBL;行號減一JMPAGAIN;繼續(xù)行掃描NEXT:MOVCL,4SHLBL,CL;行號送高4位

41、MOVCL,0;計算列號,初值為0KEYMA:TESTAL,01H;當前列有鍵按下?JZEXIT;有鍵按下,CL為列號SHRAL,1;指向下一列INCCL;列號加1JMPKEYMAEXIT:ORBL,CL;形成鍵值MOVKEY,BLHLT7.4 習題精選題7.1 選擇題1并行通信與串行通信相比,具有 的優(yōu)點。 A接口簡單、數(shù)據(jù)傳輸距離遠 B接口簡單、數(shù)據(jù)傳輸速度高 C. 數(shù)據(jù)傳輸速度高、傳輸距離遠2鍵盤、顯示器、打印機等接口中都有相應的I/O數(shù)據(jù)緩存器,對它們都是按 的方式進行訪問的。A 先進先出 B 先進后出 C 隨機進出3采用線反轉(zhuǎn)方法識別被按鍵時,接口電路必須提供 。 A 一個輸出端口和

42、一個輸入端口 B二個輸出端口 C 二個輸入端口 D二個可編程的雙向I/O端口4微機系統(tǒng)中,各模塊發(fā)出的總線請求、總線忙、中斷請求等多線合一的控制信號,一般均采用 作為輸出驅(qū)動電路。 AOC門 B三態(tài)門 C或門 D異或門5. 對8255A的C口執(zhí)行按位置位復位操作時,寫入的端口地址是 。 AC端口 B控制端口 C. A端口 DB端口6. 8255的A口工作在方式1輸入時,其中斷允許控制位INTE的置復位是通過對 的位操作進行的。A. PC2 B. PC4 C.PC6 D. PC07. 8255在方式0工作時,端口A、B和C的輸入/輸出可以有 種組合。 A4 88 C16 D688255的端口A或

43、端口B工作在方式1輸出時,與外部設備的聯(lián)絡信號將使用 。AIBF和 B和INTR C和 DIBF和 9可用作簡單輸入接口的電路是 。 A. 譯碼器 B鎖存器 C反向器 D三態(tài)緩沖器10. 8255工作在方式1輸入、不使用中斷、采用查詢方式輸入數(shù)據(jù),則用于IO同步控制的狀態(tài)信號是 。AIBF BINTR C DINTE題7.2 填空題1. 8255A的三個端口中只有端口 C 沒有輸入鎖存功能。2發(fā)光二極管(LED)組成的8段數(shù)碼顯示器有 共陰極 和 共陽極 兩種接法。不同接法顯示段碼之間的關(guān)系是 互為反碼 。3非編碼鍵盤接口應具備的4個基本功能是去抖動、防串鍵、 識別被按鍵 和 鍵碼產(chǎn)生 。4消

44、除按鍵抖動影響的常用方法有 軟件延時法 和 硬件消抖法 兩種。58255工作方式1或方式2時,INTE為 中斷允許位 ,它的置1清0由 C口置/復位控制字 進行控制。題7.3 判斷題1. 8255的B口工作于方式1時,對PC2的按位置位復位操作僅影響INTE的置位復位,對端口線本身無影響。()2線反轉(zhuǎn)法識別被按鍵的基本思想是由程序逐列對健盤進行掃描,通過檢測行狀態(tài)來確定閉合鍵。()3. 鎖存器既可作為輸出接口,又可作為輸入接口使用。()48255A有三種工作方式,在任一種方式下,都可以分別設置A口、B口、C口高4位和C口低4位這四部分的輸入、輸出狀態(tài)。()5. 利用8255A的C口按位置位/復位功能,一次可使C口的幾位同時置1或置0。()6所謂并行接口和串行接口,顧名思義,就是指I/O接口與MPU和外設之間的通信方式都是一個為并行,一個為串行。()78255工作于方式0時,不能使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論