第-10-章-并行接口芯片8255-微機原理課件_第1頁
第-10-章-并行接口芯片8255-微機原理課件_第2頁
第-10-章-并行接口芯片8255-微機原理課件_第3頁
第-10-章-并行接口芯片8255-微機原理課件_第4頁
第-10-章-并行接口芯片8255-微機原理課件_第5頁
已閱讀5頁,還剩113頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第10章并行接口芯片825510.1可編程并行輸入輸出接口芯片8255-A的結構10.2方式選擇10.3方式0的功能10.4方式1的功能10.5方式2的功能10.68255應用舉例第10章并行接口芯片825510.1可編程并行輸并行數(shù)據(jù)傳輸方式并行傳輸以計算機的字長為傳輸單位(通常是8位、16位或32位),一次傳送1個字長的數(shù)據(jù)并行傳輸是微機系統(tǒng)中最基本的信息交換方法例如:系統(tǒng)板上各部件之間,接口電路板上各部件之間適合于外部設備與微機之間進行近距離、大量和快速的信息交換例如:微機與并行接口打印機、磁盤驅動器并行數(shù)據(jù)傳輸方式并行傳輸以計算機的字長為傳輸單位(通常是8位74LS373具有三態(tài)輸出的透明鎖存器TTL工作電平LE電平鎖存高電平有效-OE輸出允許74LS373具有三態(tài)輸出的透明鎖存器Intel8282具有三態(tài)輸出的透明鎖存器TTL工作電平STB電平鎖存高電平有效-OE輸出允許Intel8282具有三態(tài)輸出的透明鎖存器74LS244雙4位單向緩沖器分成4位的兩組每組的控制端連接在一起控制端低電平有效輸出與輸入同相74LS244雙4位單向緩沖器雙向三態(tài)緩沖器雙向三態(tài)門具有雙向導通和三態(tài)的特性ABT-OE-OE=0,導通

T=1A→BT=0A←B-OE=1,不導通雙向三態(tài)緩沖器雙向三態(tài)門具有雙向導通和三態(tài)的特性ABT-OEIntel82868位雙向緩沖器控制端連接在一起,低電平有效可以雙向導通輸出與輸入同相-OE=0,導通

T=1A→BT=0A←B-OE=1,不導通Intel82868位雙向緩沖器-OE=0,導通74LS2458位雙向緩沖器控制端連接在一起,低電平有效可以雙向導通輸出與輸入同相-E=0,導通

DIR=1A→BDIR=0A←B-E=1,不導通74LS2458位雙向緩沖器-E=0,導通10.18255A的結構8255A是具有多種功能的可編程并行接口電路芯片其內部最基本的接口部件是:三態(tài)緩沖器鎖存器此外,還包括與CPU的聯(lián)絡電路及與外設的聯(lián)絡電路:狀態(tài)寄存器控制寄存器端口譯碼電路控制電路(如讀寫控制、中斷控制)8255有3個8位的數(shù)據(jù)端口(A/B/C),共24個I/O引腳,各端口共有3種輸入輸出工作方式基本輸入/輸出(A/B/C口)選通輸入或選通輸出(A/B口)雙向選通(A口)10.18255A的結構8255A是具有多種功能的可編程結構方框圖數(shù)據(jù)總線緩沖器內部控制線內部數(shù)據(jù)線D0~D7A組控制A組端口C上部B組控制B組端口BB組端口C下部讀寫控制邏輯PC0~PC3CL口PB0~PB7B口PC4~PC7CH口PA0~PA7A口-RD-WRA0A1-CSRESETA組端口ARESET:高電平有效,清除控制寄存器并置所有端口為輸入方式。結構方框圖數(shù)據(jù)內部控制線內部數(shù)據(jù)線D0~D7A組A組B組B組1.連接外設的數(shù)據(jù)端口端口A:PA0-PA7,8位端口,支持工作方式0、1、2端口B:PB0-PB7,8位端口,支持工作方式0、1端口C:PC0-PC7,拆分為兩個4位端口,僅支持工作方式0端口A:PA0-PA7(A組控制)常作數(shù)據(jù)端口使用,功能最強大端口B:PB0-PB7(B組控制)常作數(shù)據(jù)端口使用端口C:PC4-PC7(A組控制),PC0-PC3(B組控制)可作數(shù)據(jù)、狀態(tài)或控制端口使用可拆分成兩個4位端口分別輸入或輸出每位可獨立進行輸出控制(位控制)使用最靈活,較難掌握1.連接外設的數(shù)據(jù)端口端口A:PA0-PA7,8位端口,2.內部控制邏輯A組和B組控制電路 兩組根據(jù)CPU的命令字控制8255A工作方式的電路。它們有控制寄存器,接受CPU輸出的命令字,然后分別決定兩組的工作方式,也可根據(jù)CPU的命令字對端口C的每一位實現(xiàn)按位“復位”或“置位”。A組控制電路控制端口A和端口C的上半部(PC7~PC4)。B組控制電路控制端口B和端口C的下半部(PC3~PC0)。2.內部控制邏輯A組和B組控制電路A組控制電路控制端口A3.與處理器的接口數(shù)據(jù)總線緩沖器:三態(tài)雙向8位緩沖器,負責CPU與8255的數(shù)據(jù)傳輸。讀/寫控制邏輯:CS、RD、WR、A0、A1CSA1A0RDWR功

能0

000

1對端口A讀0

0101對端口B讀01001對端口C讀01非法,不能對控制口讀輸入0對端口A寫0對端口B寫0對端口C寫0對控制口寫輸出1

×

×

×

×

×

×

×

1

1數(shù)據(jù)緩沖器為三態(tài)斷開01111110000010100113.與處理器的接口數(shù)據(jù)總線緩沖器:三態(tài)雙向8位緩沖器,負引腳圖引腳圖8255A與系統(tǒng)的連接示意圖D0~D7WRRDA1A0CSDBIOWIORA1A0譯碼器8255A口B口C口D0~D7外設1A15~A2系統(tǒng)總線外設2外設38255A與系統(tǒng)的連接示意圖D0~D7WRRDA1A0CSD10.2方式選擇方式0:基本輸入輸出方式(不帶聯(lián)絡)適用于無條件傳送和查詢方式的接口電路方式1:選通輸入輸出方式(帶輸入聯(lián)絡或輸出聯(lián)絡)適用于查詢和中斷方式的接口電路方式2:雙向選通方式(同時帶輸入聯(lián)絡和輸出聯(lián)絡)適用于可雙向傳送數(shù)據(jù)的外設適用于查詢和中斷方式的接口電路10.2方式選擇方式0:基本輸入輸出方式(不帶聯(lián)絡)第-10-章--并行接口芯片8255——微機原理課件10.2.1方式選擇控制字D7D6D5D4D3D2D1D0101001011A口工作方式

00方式001方式11x方式2A口輸出/輸入0輸出1輸入CH口輸出/輸入0輸出1輸入B口工作方式0方式01方式1B口輸出/輸入0輸出1輸入CL口輸出/輸入0輸出1輸入A組控制B組控制表示:A口方式1輸出,CH口輸出,B口方式1輸入,CL口輸入。A510.2.1方式選擇控制字D7D6D5D4D3D2D1D10.2.2方式選擇舉例808610.2.2方式選擇舉例8086片選譯碼1#11111000-11111011 F8H-FBH2#11110100–11110111 F4H-F7H片選譯碼1#11111000-11111011 F8控制字

若要求8255A#1的各個端口處在如下的工作方式:

端口A方式0輸入 端口B方式1輸出 端口C(上半部)PC7~PC4輸出 端口C(下半部)PC3~PC0輸入MOV AL,10010101BOUT 0FBH,AL控制字 若要求8255A#1的各個端口處在如下的工作方式:M要求:設置A口工作在方式2,B口位方式1輸入,8255的控制字方式字ICW=11000110B=C6H要求:設置A口工作在方式2,B口位方式1輸入,8255的控制10.2.3按位置位/復位功能位控字用于控制C口的輸出引腳(CH/CL口工作于基本方式)或內部的中斷允許位(A/B口工作于選通方式),位控字應寫入8255的控制口,例如:

moval,0dh

out控制口,al當CH工作在非選通輸出方式時,令PC6引腳輸出1;當A口工作在選通輸出或雙向選通輸出方式時,將相應的中斷允許位INTEA或INTE1置1(開中斷)。D7D6D5D4D3D2D1D00標志xxx位編碼位數(shù)據(jù)0xxx11010dh10.2.3按位置位/復位功能位控字用于控制C口的輸出引腳10.3方式0的功能(1)兩個8位端口(A,B)和兩個4位端口(端口C);(2)任一個端口可以作為輸入或輸出;(3)輸出是鎖存的;(4)輸入是不鎖存的;(5)在方式0時,各個端口的輸入、輸出可以有16種不同的組合。8255A在方式0工作時,CPU可以采用無條件讀寫方式與8255A交換數(shù)據(jù);如果把C口的兩個部分用作控制和狀態(tài)口,與外設的控制和狀態(tài)端相連,CPU也可以通過對C口的讀寫,實現(xiàn)A口與B口的查詢方式工作;方式0中,不允許采用中斷方式工作。10.3方式0的功能(1)兩個8位端口(A,B)和兩個輸入緩沖器譯碼器數(shù)據(jù)DBAB外設8nRDIO/M輸出鎖存器譯碼器數(shù)據(jù)DBAB外設8nWRIO/M輸入譯碼器數(shù)據(jù)DBAB外設8nRDIO/M輸出譯碼器數(shù)據(jù)DB方式0的輸入時序(數(shù)據(jù)來自外設)外設提供數(shù)據(jù)輸入端口D0~D7-RD-CS、A1A0請體會這里8255A的數(shù)據(jù)緩沖作用數(shù)據(jù)8255外設CPU內總線外總線方式0的輸入時序(數(shù)據(jù)來自外設)外設提供數(shù)據(jù)輸入端口D0~D方式0的輸出時序(數(shù)據(jù)來自CPU)-WRCPU數(shù)據(jù)數(shù)據(jù)輸出端口D0~D7-CS、A1A08255A對CPU輸出的數(shù)據(jù)進行鎖存8255外設CPU內總線外總線需要插入Tw周期方式0的輸出時序(數(shù)據(jù)來自CPU)-WRCPU數(shù)據(jù)數(shù)據(jù)輸出端10.4方式1的功能(1)用作一個或兩個選通端口;(2)每一個端口包含:8位的數(shù)據(jù)端口,三條控制線(是固定指定的,不能用程序改變),提供中斷邏輯;(3)任何一個端口都可作為輸入或輸出;(4)若只有一個端口工作于方式1,余下的13位,可以工作在方式0(由控制字決定);(5)若兩個端口都工作于方式1,端口C還留下兩位,這兩位可以由程序指定作為輸入或輸出,也具有置位/復位功能。10.4方式1的功能(1)用作一個或兩個選通端口;8255方式1的特點(1)方式1是一種選通輸入/輸出方式,因此,需設置專用的聯(lián)絡信號線或應答信號線,以便對I/O設備和CPU兩側進行聯(lián)絡。這種方式通常用于查詢(條件)傳送或中斷傳送。數(shù)據(jù)的輸入輸出都有鎖存能力。(2)PA和PB為數(shù)據(jù)口,而PC口的大部分引腳分配作專用(固定)的聯(lián)絡信號用,對已經分配做聯(lián)絡信號的C口引腳,用戶不能再指定做其它用途。(3)各聯(lián)絡信號之間有固定的時序關系,傳送數(shù)據(jù)時,要嚴格按照時序進行。(4)輸入/輸出操作過程中,產生固定的狀態(tài)字,這些狀態(tài)信息可作為查詢或中斷請求之用。狀態(tài)字從PC口讀取。(5)單向傳送。一次初始化只能設置在一個方向上傳送,不能同時作兩個方向的傳送。8255方式1的特點(1)方式1是一種選通輸入/輸出方式,因方式1輸入引腳:端口APC4PC5PC3PA7~PA0INTEAIBFAINTRA-STBA中斷允許觸發(fā)器輸入緩沖器滿信號表示A口已經接收數(shù)據(jù)數(shù)據(jù)選通信號表示外設已經準備好數(shù)據(jù)中斷請求信號請求CPU接收數(shù)據(jù)外設數(shù)據(jù)征用C口3引腳和1個控制位INTEA可通過對PC4的按位置位/復位來控制。方式1輸入引腳:端口APC4PC5PC3PA7~PA0INT方式1輸入引腳:端口BPC2PC1PC0PB7~PB0INTEBIBFBINTRB-STBB中斷允許觸發(fā)器輸入緩沖器滿信號表示B口已經接收數(shù)據(jù)數(shù)據(jù)選通信號表示外設已經準備好數(shù)據(jù)中斷請求信號請求CPU接收數(shù)據(jù)外設數(shù)據(jù)征用C口3引腳和1個控制位INTEB可通過對PC2的按位置位/復位來控制。方式1輸入引腳:端口BPC2PC1PC0PB7~PB0INT方式1輸入聯(lián)絡信號-STB——選通信號,低電平有效由外設提供的輸入信號,當其有效時,將輸入設備送來的數(shù)據(jù)鎖存至8255A的輸入鎖存器IBF——輸入緩沖器滿信號,高電平有效8255A輸出的聯(lián)絡信號。當其有效時,表示數(shù)據(jù)已鎖存在輸入鎖存器INTR——中斷請求信號,高電平有效8255A輸出的信號,可用于向CPU提出中斷請求,要求CPU讀取外設數(shù)據(jù)方式1輸入聯(lián)絡信號-STB——選通信號,低電平有效方式1輸入時序外設數(shù)據(jù)INTRIBF

數(shù)據(jù)輸入端口D0~D7-STB-RD-STB和IBF是外設和8255A間的一對應答聯(lián)絡信號,為的是可靠地輸入數(shù)據(jù)方式1輸入時序外設數(shù)據(jù)INTRIBF數(shù)據(jù)輸入端口D0方式1中斷控制8255A的中斷由中斷允許觸發(fā)器INTE控制置位允許中斷,復位禁止中斷對INTE的操作通過寫入端口C的對應位實現(xiàn),INTE觸發(fā)器對應端口C的位是作應答聯(lián)絡信號的輸入信號的哪一位,只要對那一位置位/復位就可以控制INTE觸發(fā)器選通輸入方式下端口A的INTEA對應PC4端口B的INTEB對應PC2方式1中斷控制8255A的中斷由中斷允許觸發(fā)器INTE控制方式1輸出引腳:端口APC6PC7PC3PA7~PA0INTEA-OBFAINTRA-ACKA輸出緩沖器滿信號表示CPU已經輸出了數(shù)據(jù)外設響應信號表示外設已經接收到數(shù)據(jù)中斷請求信號請求CPU再次輸出數(shù)據(jù)征用C口3引腳和1個控制位中斷允許觸發(fā)器通過位控PC6

設置INTEA輸出數(shù)據(jù)方式1輸出引腳:端口APC6PC7PC3PA7~PA0INT方式1輸出引腳:端口BPC2PC1PC0PB7~PB0INTEB-OBFBINTRB-ACKB輸出緩沖器滿信號表示CPU已經輸出了數(shù)據(jù)外設響應信號表示外設已經接收到數(shù)據(jù)中斷請求信號請求CPU再次輸出數(shù)據(jù)征用C口3引腳和1個控制位中斷允許觸發(fā)器通過位控PC2設置INTEB輸出數(shù)據(jù)方式1輸出引腳:端口BPC2PC1PC0PB7~PB0INT方式1輸出聯(lián)絡信號-OBF——輸出緩沖器滿信號,低電平有效8255A輸出給外設的一個控制信號,當其有效時,表示CPU已將輸出數(shù)據(jù)鎖存在8255A指定的端口,外設可以來取-ACK——響應信號,低電平有效外設提供的響應信號,通知8255A其端口數(shù)據(jù)已被外設接收INTR——中斷請求信號,高有效當輸出設備已接受數(shù)據(jù)后,8255A輸出此信號向CPU提出中斷請求,要求CPU繼續(xù)提供數(shù)據(jù)端口A的INTEA對應PC6端口B的INTEB對應PC2方式1輸出聯(lián)絡信號-OBF——輸出緩沖器滿信號,低電平有效端方式1輸出時序8255外設CPU內總線外總線

INTR

CPU數(shù)據(jù)數(shù)據(jù)輸出端口D0~D7-WR-OBF-ACK

-OBF和-ACK是外設和8255A間的一對應答聯(lián)絡信號,為的是可靠地輸出數(shù)據(jù)方式1輸出時序8255外設CPU內總線外總線INTR10.5方式2雙向選通方式方式2將方式1的選通輸入與選通輸出功能組合成一個雙向數(shù)據(jù)端口,可以發(fā)送數(shù)據(jù)和接收數(shù)據(jù)只有端口A可以工作于方式2,需要利用端口C的5個信號線,其作用與方式1相同方式2的數(shù)據(jù)輸入過程與方式1的輸入方式一樣方式2的數(shù)據(jù)輸出過程與方式1的輸出方式有一點不同:數(shù)據(jù)輸出時8255A不是在-OBF有效時向外設輸出數(shù)據(jù),而是在外設提供響應信號-ACK有效時才送出數(shù)據(jù)10.5方式2雙向選通方式方式2將方式1的選通輸入與選通方式2雙向選通引腳PC6PC7PC3PA7~PA0INTE1-OBFAINTRA-ACKAPC4PC5IBFA-STBAINTE2數(shù)據(jù)輸入中斷和輸出中斷通過或門輸出INTRA信號征用C口5引腳和2個控制位中斷允許觸發(fā)器(控制中斷輸出)通過位控PC6設置INTE1中斷允許觸發(fā)器(控制中斷輸出)通過位控PC4設置INTE2輸入聯(lián)絡輸出聯(lián)絡方式2雙向選通引腳PC6PC7PC3PA7~PA0INTE方式2雙向選通時序該例中:CPU先輸出數(shù)據(jù),再讀取外設輸入的數(shù)據(jù)

INTR

輸出數(shù)據(jù)輸入數(shù)據(jù)輸入數(shù)據(jù)PA0~PA7D0~D7IBF

-WR-OBF-ACK-STB-RD輸出數(shù)據(jù)方式2雙向選通時序該例中:CPU先輸出數(shù)據(jù),再讀取外設輸入D7D6D5D4D3D2D1D0方式1輸入(A口、B口)I/OI/OIBFAINTEAINTRAINTEBIBFBINTRB方式1輸出(A口、B口)OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB方式2雙向(A口)OBFAINTE1IBFAINTE2INTRA×××A口B口在不同工作方式下從端口C讀到狀態(tài)字A組控制B組控制D7D6D5D4D3D2D1D0方式1輸入(A口、B口)方式1輸入(B口)×××INTRAINTE2IBFAINTE1OBFAINTRBOBFBINTEB方式2雙向(A口)方式1輸出(B口)INTRBIBFBINTEBI/OD0D1D2D3D4D5D6D7A口工作在方式2,B口在不同工作方式下從端口C讀到狀態(tài)字A組控制B組控制I/OI/O方式0(B口)方式1輸入(B口)×××INTRAINTE2IBFAIN方式2的中斷若要允許方式2中斷,則可用端口C的置位/復位命令: 允許輸出中斷,置PC6,則控制字為00001101B。 允許輸入中斷,置PC4,控制字為00001001B。方式2的中斷若要允許方式2中斷,則可用端口C的置位/復位命令1.向控制口寫方式字要求:A口:方式1輸入CH口:輸出CL口:輸入B口:方式0輸出方式控制字:1

0110

001B或B1H初始化的程序段:

movdx,0fffeh ;假設控制端口為FFFEH moval,0b1h ;方式控制字

outdx,al ;送到控制端口編程實例1.向控制口寫方式字要求:編程實例2.讀寫數(shù)據(jù)端口(A口/B口/C口)初始化編程后:當數(shù)據(jù)端口作為輸入接口時,CPU執(zhí)行輸入IN指令,CPU將從輸入設備得到外設數(shù)據(jù)當數(shù)據(jù)端口作為輸出接口時,CPU執(zhí)行輸出OUT指令,將把CPU的數(shù)據(jù)送給輸出設備8255A具有鎖存輸出數(shù)據(jù)的能力對設置為輸出的端口同樣可以輸入(讀)此時不是讀取外設數(shù)據(jù),而是讀取的是前次CPU輸出給外設的數(shù)據(jù)(鎖存在鎖存器中)2.讀寫數(shù)據(jù)端口(A口/B口/C口)初始化編程后:2.讀寫數(shù)據(jù)端口利用8255A的輸出鎖存能力,可實現(xiàn)對某一位的輸出控制

對輸出端口B的PB7位置位的程序段:

movdx,0fffah ;B端口假設為FFFAH

inal,dx ;讀出B端口原輸出內容

oral,80h ;使PB7=1

outdx,al ;輸出新的內容2.讀寫數(shù)據(jù)端口利用8255A的輸出鎖存能力,可實現(xiàn)對某3.涉及C口的操作——歸納1在控制上,C口上半部(CH)和A口被編為A組,C口下半部(CL)和B口被編為B組。即它被拆分成兩個4位端口分別進行控制:兩個4位端口均只能工作于方式0

(指未被征用的引腳)但可分別選擇輸入或者輸出C口具有唯一的地址,可按8位方式進行讀/寫,此時:設置為輸出的引腳可讀可寫(輸出鎖存器)設置為輸入的引腳可讀(引腳)、寫操作無意義在選通方式下,對被征用的引腳可讀(分別映射到中斷允許位、輸入/輸出緩沖器狀態(tài)位、中斷請求狀態(tài)位)。C口還可通過位控字進行按位的寫(只寫C口1位):對設置為輸出的引腳可寫(輸出鎖存器)在選通方式下,對被征用的輸入引腳可寫(映射到中斷允許位)3.涉及C口的操作——歸納1在控制上,C口上半部(CH)3.涉及C口的操作——歸納2當A和B口工作在方式1或方式2時,C口的部分引腳或全部引腳將被征用:A口方式1將征用C口3個引腳:輸出:PC6/PC7(輸出聯(lián)絡),PC3(中斷)輸入:PC4/PC5(輸入聯(lián)絡),PC3(中斷)B口方式1將征用C口3個引腳:輸出:PC2/PC1(輸出聯(lián)絡),PC0(中斷)輸入:PC2/PC1(輸入聯(lián)絡),PC0(中斷)A口方式2將征用5個引腳:PC4/PC5(輸入聯(lián)絡),PC6/PC7(輸出聯(lián)絡),PC3(中斷)C口未被征用的引腳仍將工作在方式0,但必須成組進行設置,即CH或CL中的引腳必須同為輸入或同為輸出。3.涉及C口的操作——歸納2當A和B口工作在方式1或方式23.涉及C口的操作——歸納3對C口的數(shù)據(jù)輸出有兩種辦法向C口直接寫字節(jié)數(shù)據(jù)——該數(shù)據(jù)將被寫進C端口的輸出鎖存器中,并從設置為輸出的引腳輸出,但對設置為輸入的引腳無效。向控制口寫位控字——使C口設置為輸出的某個引腳輸出1或0。在選通方式下向控制口寫位控字——還可置位或復位8255內部的中斷允許觸發(fā)器。在選通方式下,該觸發(fā)器已被映射在C口被征用的某個輸入引腳上。3.涉及C口的操作——歸納3對C口的數(shù)據(jù)輸出有兩種辦法向控制口寫入位控字位控字用于控制C口的輸出引腳(CH/CL口工作于基本方式)或內部的中斷允許位(A/B口工作于選通方式),位控字應寫入8255的控制口,例如:

moval,0dh

out控制口,al當CH工作在非選通輸出方式時,令PC6引腳輸出1;當A口工作在選通輸出或雙向選通輸出方式時,將相應的中斷允許位INTEA或INTE1置1(開中斷)。D7D6D5D4D3D2D1D00標志xxx位編碼位數(shù)據(jù)0xxx11010dh向控制口寫入位控字位控字用于控制C口的輸出引腳(CH/CL3.涉及C口的操作——歸納4讀取C口數(shù)據(jù)有兩種情況:針對未被A和B端口征用的引腳:將從定義為輸入的位讀到引腳上的輸入信息將從定義為輸出的位讀到前次輸出鎖存的信息針對已被A和B端口征用作為聯(lián)絡線的引腳:將讀到反映8255A工作狀態(tài)的狀態(tài)字,其中包括:數(shù)據(jù)緩沖器的狀態(tài)(-OBFx或IBFx)中斷允許的狀態(tài)(INTEx)中斷請求的狀態(tài)(INTRx

)3.涉及C口的操作——歸納4讀取C口數(shù)據(jù)有兩種情況:D7D6D5D4D3D2D1D0方式1輸入(A口、B口)I/OI/OIBFAINTEAINTRAINTEBIBFBINTRB方式1輸出(A口、B口)OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB方式2雙向(A口)OBFAINTE1IBFAINTE2INTRA×××從端口C讀到狀態(tài)字A組控制B組控制D7D6D5D4D3D2D1D0方式1輸入(A口、B口)10.68255A的應用作為通用的并行接口電路芯片,825A具有廣泛的應用,如:應用在IBMPC/XT微機上應用于打印機接口電路用于連接簡易鍵盤用于驅動LED數(shù)碼管等等10.68255A的應用作為通用的并行接口電路芯片,8210.6.18255A在IBMPC/XT上的應用工作在基本輸入/輸出方式0端口A為方式0輸入,用來讀取鍵盤掃描碼端口B工作于方式0輸出,例如控制揚聲器等端口C為方式0輸入,讀取系統(tǒng)狀態(tài)和配置系統(tǒng)的初始化編程:

moval,10011

001b ;方式控制字99H

out63h,al10.6.18255A在IBMPC/XT上的應用工作在打印機接口的信號與時序主機把數(shù)據(jù)送給引腳DATA0~DATA7同時送出數(shù)據(jù)選通信號-STROBE打印期間,打印機在BUSY信號線上發(fā)出忙信號打印機處理好輸入的數(shù)據(jù)時撤消忙信號同時又送出一個響應信號-ACK打印機接口的信號與時序主機把數(shù)據(jù)送給引腳DATA0~DATA以打印機為例說明8255應用打印機接口的信號與時序BUSY(出)DATA0~7(入)-ACK(出)-STROBE(入)打印機忙打印機響應一般用于查詢一般用于選通以打印機為例說明8255應用打印機接口的信號與時序BUSY(10.6.2用8255A方式0與打印機接口BUSY

DATA0~78255APC7PC2PA0~PA7打印機-STROBE10.6.2用8255A方式0與打印機接口BUSYDA8255A的初始化 movdx,0fffeh ;控制口地址:FFFEH moval,10000001B ;方式控制字:91H

outdx,al ;A口方式0輸出,CH輸出、CL輸入

moval,00001111B ;位控字,令PC7=1,即-STROBE無效

outdx,al例10.18255A的初始化 movdx,0fffeh ;控制口地址打印子程序:查詢printc proc pushax pushdxprn: movdx,0fffch ;讀取端口C

inal,dx ;查詢打印機狀態(tài)

andal,04h ;測試PC2(BUSY)

jnzprn ;為1,打印機忙,則循環(huán)等待

movdx,0fff8h;為0,打印機不忙,則輸出數(shù)據(jù)

moval,ah

outdx,al ;將打印數(shù)據(jù)從端口A輸出例10.1打印子程序:查詢printc proc例10.1打印子程序:打印

movdx,0fffeh ;從PC7送出控制負脈沖

moval,00001110B ;置-STROBE=0(有效)

outdx,al nop ;產生一定寬度的負脈沖

nop moval,00001111B ;置-STROBE=1(無效)

outdx,al;打印機-STROBE端輸入負脈沖

popdx popax retprintcendp例10.1打印子程序:打印 movdx,0fffeh ;從PC7送出10.6.3用8255A方式1與打印機接口1000pf2K15321441LS123單穩(wěn)電路+5VDATA0~78255APC6INTRPC3PC7PA0~PA7打印機-ACK-ACK-OBF-STROBE調整-STROBE負脈沖的寬度10.6.3用8255A方式1與打印機接口1000pf28255A方式1與打印機接口時序配合PA0~PA7(DATA0~7)-ACK-OBF-STROBE打印機在方式1工作時的時序8255A方式1與打印機接口時序配合PA0~PA7-ACK-8255A的初始化

movdx,0fffeh moval,0a0h;方式字10100000

outdx,al moval,0ch;位控字,令INTEA(PC6)為0,禁止中斷

outdx,al …… movcx,counter ;打印字節(jié)數(shù)送CX movbx,offsetbuffer ;取字符串首地址

callprints ;調用打印子程序例10.28255A的初始化 movdx,0fffeh例10.2printsproc pushax ;保護寄存器

pushdxprint1:moval,[bx] ;取一個數(shù)據(jù)

movdx,0fff8h

outdx,al ;從端口A輸出

movdx,0fffchprint2: inal,dx testal,80h ;檢測PC7,即-OBFA狀態(tài)

jzprint2 ;為0,說明打印機方面未響應,繼續(xù)檢測

incbx ;為1時打印機已接收數(shù)據(jù)

loopprint1 ;準備輸出下一個數(shù)據(jù)

popdx ;打印結束,恢復寄存器

popaxret ;返回prints endp打印子程序:輸出例10.2printsproc打印子程序:輸出例10.210.6.4雙機并行通信接口PA0~PA7PC4PC08255A甲方(發(fā)送)方式1輸出PA0~PA7PC7PC68255A乙方(接收)方式0輸入-OBF-ACKCPU查詢引腳輸入有效時,讀數(shù)據(jù)并輸出應答信號兩機均采用查詢方式工作CPU查詢中斷請求標志,亦可查詢輸出緩沖器狀態(tài)10.6.4雙機并行通信接口PA0~PA7PC4PC08甲機的初始化 movdx,0fffeh;控制端口

moval,0a0h;方式字1

0100

000:A口方式1輸出

outdx,al moval,0dh;令INTEA(PC6

)=1,允許中斷輸出

outdx,al例10.3設8255A的四個端口地址為:A口-FFF8H B口-FFFAH C口-FFFCH

控制端口-FFFEH甲機的初始化 movdx,0fffeh;控制端口例10甲機發(fā)送程序 trsmt: movdx,0fffch;C口地址

inal,dx;讀C口

andal,08h;查詢INTRA(PC3

jztrsmt ;為0,無中斷請求,繼續(xù)查

movdx,0fff8h ;否則,發(fā)送數(shù)據(jù)

moval,ah

outdx,al例10.3甲機發(fā)送程序 trsmt: movdx,0fffch乙機的初始化 movdx,0fffeh moval,98h;方式字10011000:A口方式0輸入

outdx,al moval,01h;令應答信號(PC0

)=1(初始無效)

outdx,al例10.3乙機的初始化 movdx,0fffeh例10.3乙機:查詢接收receive: movdx,0fffch

inal,dx ;讀C口

andal,10h ;查詢甲機的寫選通信號(PC4

jnzreceive ;為1時無效(甲未發(fā)數(shù)據(jù)), ;繼續(xù)查詢

movdx,0fff8h ;接收數(shù)據(jù)

inal,dx movah,al;數(shù)據(jù)保存于ah例10.3乙機:查詢接收receive: movdx,0fffch 乙機:接收響應 movdx,0fffeh moval,00h;應答信號(PC0

)=0(有效)

outdx,al nop;適當延時,產生一定寬度的有效負脈沖

nop moval,01h;應答信號(PC0

)=1(無效)

outdx,al例10.3乙機:接收響應 movdx,0fffeh例10.3實驗5并行接口實驗要求⑴類似習題10.8要求⑵對應例題10.2請在對比過程中,掌握例題、習題和完成實驗要求

提示實驗5并行接口實驗要求⑴類似習題10.8提示10.3鍵盤及其接口鍵盤是微機系統(tǒng)的標準輸入設備編碼鍵盤:按鍵時自動產生編碼輸出,比如PC鍵盤,在按鍵與釋放會自動向CPU送出16位的編碼。非編碼鍵盤:按鍵時不會自動產生編碼輸出,需要CPU主動去檢查識別,在構成較為簡單的嵌入式系統(tǒng)應用,以實現(xiàn)較為簡單的數(shù)據(jù)輸入,其結構可分為:簡單按鍵——每個按鍵連接1根I/O線矩陣式鍵盤——多根行及列I/O線構成矩陣,按鍵跨接在交叉點上。10.3鍵盤及其接口鍵盤是微機系統(tǒng)的標準輸入設備10.3.1非編碼鍵盤——線性鍵盤線性鍵盤每個按鍵連接1個輸入引腳讀入0時反映鍵被按下讀入1時反映健未被按下對I/O引腳資源消耗大+5V10K10.3.1非編碼鍵盤——線性鍵盤線性鍵盤+5V10K10.3.1非編碼鍵盤——矩陣式鍵盤矩陣式鍵盤每行連接一個I/O引腳每列連接一個I/O引腳在行列交叉點上跨接按鍵通過掃描識別按鍵+5V10K檢測線輸入控制線輸出10.3.1非編碼鍵盤——矩陣式鍵盤矩陣式鍵盤+5V101、逐行掃描法識別矩陣式鍵盤粗掃——行線送全0,列線檢測到全1,說明無鍵按下;否則,有鍵按下,進入下一步逐行掃描。逐行掃描——某行送0其余送1,此時若列線檢測到全1,說明該行無鍵按下,換下一行繼續(xù)掃描;若列線檢測到非全1,說明該行有鍵按下,通過組合此時的行碼和列碼可形成與特定按鍵相對應的識別碼。通過查表環(huán)節(jié)可獲得按鍵鍵值(按鍵的排列序號)。+5V10K檢測線輸入控制線輸出1、逐行掃描法識別矩陣式鍵盤粗掃——逐行掃描——+5V10K第1段:是否有鍵按下key1: moval,00 movdx,rowport ;rowport為連接行線的端口地址

outdx,al ;使所有行線為低電平

movdx,colport ;colport為連接列線的端口地址

inal,dx ;讀取列值

cmpal,0ffh ;判斷列線是否讀到全1 jzkey1 ;是,無閉合鍵,循環(huán)等待

calldelay ;否,延遲20ms清除抖動鍵盤掃描程序第1段:是否有鍵按下key1: moval,00鍵盤掃描程第2段:識別按鍵(掃描) movcx,8 ;掃描行數(shù)送CX movah,0feh ;第一行掃描初值送AHkey2: moval,ah movdx,rowport

outdx,al ;輸出行碼(掃描碼)

movdx,colport

inal,dx ;讀到列碼鍵盤掃描程序第2段:識別按鍵(掃描) movcx,8 ;掃描行數(shù)送C第2段:識別按鍵(判斷) cmpal,0ffh ;判斷列線是否全1 jnzkey3 ;否,有按鍵,轉下一步處理

rolah,1 ;是,無按鍵,掃描碼移位

loopkey2 ;擬掃下一行

jmpkey1 ;所有行都沒有鍵按下,返回粗掃key3: …… ;此時,al=列碼,ah=行碼 鍵盤掃描程序第2段:識別按鍵(判斷) cmpal,0ffh ;判斷列2.行列反轉法識別矩陣式鍵盤第一步,先將行線設為輸出、列線設為檢測輸入CPU通過輸出端口將行線(控制線)全部設置為低電平,然后從輸入端口讀取列線(檢測線),若列碼讀到全1說明無鍵按下,否則有鍵按下,轉第二步。第二步,將行線和列線作用反轉,即列線設為輸出,行線設為檢測輸入。將前一步讀到的列碼從列線端口輸出,并讀取行線的輸入碼(行碼)當一個鍵被按下時,必然涉及一對特定的行碼和列碼,以此組成按鍵特定的識別碼,通過查表環(huán)節(jié)可獲得按鍵鍵值。條件:連接行線和列線的接口電路必須能動態(tài)地改變行線和列線的輸入/輸出方式2.行列反轉法識別矩陣式鍵盤第一步,先將行線設為輸出、列線第1段:是否有鍵按下 …… ;設置行線接輸出端口,列線接輸入端口key2: moval,00 movdx,rowport

outdx,al ;設置行線輸出全0 movdx,colport

inal,dx ;讀取列碼

cmpal,0ffh ;判是否全1 jzkey2 ;是,無鍵閉合,循環(huán)等待

pushax ;否,有閉合鍵,保存列碼

pushax鍵盤掃描程序第1段:是否有鍵按下 ……鍵盤掃描程序第2段:識別按鍵(反轉法) …… ;重新設置行線接輸入口,列線接輸出口

movdx,colport popax

outdx,al ;輸出前面保存的列碼

movdx,rowport

inal,dx ;讀取行碼

popbx ;將行碼、列碼組合

movah,bl ;此時,al=行值,ah=列值鍵盤掃描程序第2段:識別按鍵(反轉法) ……鍵盤掃描程序行列值表和鍵代碼表 ;按鍵的識別碼表table dw0fefeh ;鍵0的識別碼(16位)

dw0fdfeh ;鍵1的識別碼

dw0fbfeh ;鍵2的識別碼

…… ;其他鍵的識別碼

;按鍵鍵值表char db0 ;鍵0的鍵值

db1 ;鍵1的鍵值

db2 ;鍵2的鍵值

…… ;其他鍵的鍵值鍵盤掃描程序行列值表和鍵代碼表 ;按鍵的識別碼第3段:查找鍵代碼 movsi,offsettable

;識別碼表首址

movdi,offsetchar

;鍵值表表首址

movcx,64 ;CX=鍵的總數(shù)key3: cmpax,[si] ;ax與表中識別碼相比較

jzkey4 ;相同,說明找到,跳到key4

incsi ;不同,繼續(xù)比較

incsi

incdi loopkey3 jmpkey1 ;全部比較完,都不同,

;說明是串鍵 鍵盤掃描程序第3段:查找鍵代碼 movsi,offsettable第4段:等待按鍵釋放key4: moval,[di] ;獲取鍵代碼送AL …… ;判斷按鍵是否釋放,沒有則等待

calldelay ;按鍵釋放,延時消除抖動

…… ;后續(xù)處理鍵盤掃描程序第4段:等待按鍵釋放key4: moval,[di] ;獲3.按鍵抖動和串鍵問題機械按鍵按鍵和釋放時存在按鍵抖動現(xiàn)象當鍵按下或釋放時,因接觸電阻的變化對數(shù)字電路來說會導致輸入的不確定性。抖動的持續(xù)時間通常不大于10ms??刹捎糜布峨娐坊蜍浖訒r的方法來去抖。串鍵指兩個或多個鍵同時閉合出現(xiàn)串鍵時,讀取的碼值中必然出現(xiàn)一個以上的0用戶決定是否給予識別處理。3.按鍵抖動和串鍵問題機械按鍵按鍵和釋放時存在按鍵抖動現(xiàn)串鍵處理認為是無效的按鍵——不予識別認為是有效的組合鍵——加以識別只承認先識別出來的鍵連鎖法:直到所有鍵都釋放后,讀入下一個鍵巡回法:等被識別的鍵釋放以后,就可以對其他閉合鍵作識別,而不必等待全部鍵釋放串鍵處理認為是無效的按鍵——不予識別PB6PB7PAIRQ14GND1CLOCK2DATA5+5V3RESETPC鍵盤PC系統(tǒng)板8048單片機8255A8259ALS322串并轉換器鍵盤陣列按鍵選通10.3.2PC機鍵盤的工作原理DBT1P10P21P11P22P20PAPA讀回讀回PB6PB7PAIRQ14GND1CLOCK2支持PC鍵盤的軟件資源——數(shù)據(jù)結構鍵盤緩沖區(qū)及存取指針——共32B,以環(huán)形隊列的方式使用,存放待處理的按鍵數(shù)據(jù),每個按鍵所對應一個16位的數(shù)據(jù)ASCII碼(低)和掃描碼(高),所以鍵盤緩沖區(qū)中最多可緩沖15個按鍵。頭指針——指示緩沖區(qū)中下一個待取的按鍵數(shù)據(jù)的位置尾指針——指示緩沖區(qū)中下一個待存的按鍵數(shù)據(jù)的位置緩沖區(qū)頂——緩沖區(qū)的第一個字節(jié)緩沖區(qū)底——緩沖區(qū)的最末一個字節(jié)當按鍵數(shù)據(jù)出隊列時頭指針將移動,當按鍵數(shù)據(jù)進隊列時尾指針將移動,當頭指針或尾指針移動到緩沖區(qū)底的時候,將繞回到緩沖區(qū)頂當頭指針=尾指針時,說明鍵盤緩沖區(qū)空當尾指針回繞到頭指針前、并緊挨頭指針時,說明鍵盤緩沖區(qū)已滿支持PC鍵盤的軟件資源——數(shù)據(jù)結構鍵盤緩沖區(qū)及存取指針——共支持PC鍵盤的軟件資源——中斷資源09H號硬中斷——處理接通掃描碼并將按鍵數(shù)據(jù)存入鍵盤緩沖區(qū),對斷開掃描碼不作處理。BIOS軟中斷——INT1BH,嵌在09H號硬中斷服務程序中的軟中斷接口,用戶可接管使用。其用法類似嵌在08H號硬中斷中的INT1CH軟中斷BIOS軟中斷——INT16H,也稱鍵盤緩沖區(qū)中斷,負責對鍵盤緩沖區(qū)進行各種操作,主要操作右:AH=0H,讀取鍵盤緩沖區(qū)中的按鍵數(shù)據(jù)AH=1H,查詢鍵盤緩沖區(qū)中有無按鍵數(shù)據(jù)AH=2H,查詢鍵盤狀態(tài)(CTRL/ALT/SHIFT)DOS軟中斷——支持PC鍵盤的軟件資源——中斷資源09H號硬中斷——處理接通1.PC機鍵盤的工作過程鍵盤電路正常工作時,單片機8048CPU不斷地掃描鍵盤矩陣有按鍵事件,則確定按鍵位置之后以串行數(shù)據(jù)形式發(fā)送給系統(tǒng)板鍵盤接口電路:鍵按下時,發(fā)送該鍵的接通掃描碼鍵松開時,發(fā)送該鍵的斷開掃描碼若一直按住某鍵,則以拍發(fā)速率(每秒2~30次)連續(xù)發(fā)送該鍵的接通掃描碼接通掃描碼反映該鍵在鍵盤上的位置斷開掃描碼=接通掃描碼+80H,即將接通掃描碼最高位置11.PC機鍵盤的工作過程鍵盤電路正常工作時,單片機8042.鍵盤接口電路的工作過程以串行數(shù)據(jù)方式接收一個字符(掃描碼)后,進行串并轉換硬件產生鍵盤中斷請求(連接8259A的IRQ1),催促CPU讀取按鍵數(shù)據(jù)CPU響應中斷,則進入09H號鍵盤中斷服務程序:讀取鍵盤掃描碼:用INAL,60H即可向鍵盤送應答信號:先令PB7=1(有效),隨后又令PB7=0(無效)處理鍵盤數(shù)據(jù),并將按鍵數(shù)據(jù)存入鍵盤緩沖區(qū) 給8259A送中斷結束EOI命令,中斷返回2.鍵盤接口電路的工作過程以串行數(shù)據(jù)方式接收一個字符(掃3.PC鍵盤的中斷服務——模擬其工作用kbint過程模擬09H號中斷服務常規(guī)的讀端口操作處理按鍵數(shù)據(jù):對接通掃描碼——通過查表,將之轉換為對應的ASCII碼送鍵盤緩沖區(qū)(對擴展鍵轉換為0)對斷開掃描碼——不做處理用kbget過程模擬鍵盤緩沖區(qū)的操作從鍵盤緩沖區(qū)中讀取按檢索對應的ASCII碼主程序調用kbget功能不斷循環(huán)顯示用戶鍵入的字符3.PC鍵盤的中斷服務——模擬其工作用kbint過程模擬模擬的鍵盤緩沖區(qū)用途:用于暫存按鍵數(shù)據(jù),在中斷服務程序與其他程序間交換按鍵數(shù)據(jù)數(shù)據(jù)結構:10B為先進先出的循環(huán)隊列,每個按鍵對應1B的數(shù)據(jù)(ASCII碼),最多可緩沖9個按鍵。

基本的操作和狀態(tài)進隊列出隊列隊列空隊列滿9210隊列頂隊列底buffer模擬的鍵盤緩沖區(qū)用途:用于暫存按鍵數(shù)據(jù),在中斷服務程序與其他鍵盤緩沖區(qū)buffer db

10

dup(0) ;鍵盤緩沖區(qū)bufptr1 dw0 ;隊列頭指針bufptr2

dw0 ;隊列尾指針例10.49210buffer隊列頂隊列底bufptr1bufptr2鍵盤緩沖區(qū)鍵盤緩沖區(qū)buffer db10dup(0) ;鍵盤緩鍵盤代碼表scantb db0,1,’1234567890-=’,08h ;鍵盤第1排的按鍵,

;從ESC鍵到退格鍵

db

0,’qwertyuiop[]’,0dh ;鍵盤第2排的按鍵,

;從Tab鍵到回車鍵

…… db0,0,’789-456+1230.’ ;右邊小鍵盤, ;從NumLock鍵到Del鍵

例10.4鍵盤代碼表scantb db0,1,’1234567890設置中斷向量1

movax,3509h ;讀原中斷向量并壓棧保存

int21h pushes pushbx ;保存09H號原中斷向量

cli ;關中斷例10.4設置中斷向量1 movax,3509h ;讀原中斷向量并壓設置中斷向量2

pushds ;設置09H號新的中斷向量

mov

ax,segkbint

mov

ds,ax

mov

dx,offsetkbint

movax,2509h

int

21h

pop

ds

inal,21h ;允許IRQ1中斷,其他不變

pushax andal,0fdh

out

21h,al

sti ;開中斷例10.4設置中斷向量2 pushds ;設置09H號新的中斷向量例調用并顯示start1: callkbget ;獲取按鍵的ASCII碼

cmpal,1 ;按鍵處理

jzstart2 ;是ESC鍵,則退出

pushax ;其余鍵,先壓棧以后判斷是否為回車

movdl,al ;顯示該字符

movah,2 int21h popax ;恢復字符例10.4調用并顯示start1: callkbget ;獲取按鍵的處理回車符 cmpal,0dh ;該字符是回車符嗎?

jnzstart1 ;不是,擬取下一個按鍵字符

movdl,0ah ;是回車符,接著再進行一次換行操作

movah,2 int21h jmpstart1 ;繼續(xù)取下一個按鍵字符例10.4處理回車符 cmpal,0dh ;該字符是回車符嗎?例10恢復中斷向量start2: cli popax ;恢復09h原中斷向量

out21h,al popdx popds

movax,2509h int21h sti

movax,4c00h ;返回DOS int21h例10.4恢復中斷向量start2: cli例10.4子程序:判斷緩沖區(qū)空否kbget

prockbget1:

push

bx ;保護BX

cli

movbx,bufptr1 ;取頭指針

cmpbx,bufptr2 ;與尾指針相等否?

jnzkbget2 ;不等,緩沖區(qū)有字符則轉移

sti ;相等,緩沖區(qū)空

popbx

jmp

kbget1 ;等待緩沖區(qū)有字符例10.4子程序:判斷緩沖區(qū)空否kbget proc例10.4子程序:獲取按鍵字符kbget2: mov

al,buffer[bx] ;取字符送AL

inc

bx

;隊列頭指針增量

cmp

bx,10 ;是否指向隊列底

jckbget3 ;否,轉移

mov

bx,0 ;是,頭指針重新指向隊列頂kbget3:

movbufptr1,bx ;設定新隊列頭指針

sti

pop

bx

retkbget endp例10.4子程序:獲取按鍵字符kbget2: moval,buffe中斷服務程序:響應鍵盤kbint proc

sti ;開中斷

pushax ;保護寄存器

pushbx

in

al,60h ;讀取鍵盤掃描碼

pushax

in

al,61h ;令PB7=1,響應鍵盤

oral,80h

out

61h,al

and

al,7fh ;令PB7=0,向鍵盤送出一個有效脈沖

out

61h,al例10.4中斷服務程序:響應鍵盤kbint proc例10.4中斷服務程序:數(shù)據(jù)處理

popax

test

al,80h ;是斷開掃描碼?

jnzkbint2 ;是,不做處理,退出

movbx,offsetscantb ;否,為接通掃描碼,取表首地址

xlat ;將掃描碼轉換成ASCII碼

cmpal,0

;是合法的ASCII碼?

jz

kbint2 ;否,退出例10.4中斷服務程序:數(shù)據(jù)處理 popax例10.4中斷服務程序:指針增量

movbx,bufptr2 ;是合法的ASCII碼

movbuffer[bx],al ;將ASCII碼存入緩沖區(qū)隊列尾

incbx ;隊列尾指針增量

cmp

bx,10 ;是否指向隊列底?

jckbint1 ;否,轉移

mov

bx,0 ;是,令指針重新指向隊列頂 例10.4中斷服務程序:指針增量 movbx,bufptr2 ;是中斷服務程序:判斷緩沖區(qū)滿否kbint1: cmpbx,buffptr1

jzkbint2 ;若隊列滿,則退出

movbufptr2,bx ;隊列不滿,設置新的隊列尾指針

例10.4bufptr1bufptr2buffer41H031H132H239H9隊列頂隊列底中斷服務程序:判斷緩沖區(qū)滿否kbint1: cmpbx,b中斷服務程序:中斷返回kbint2:

moval,20h ;向8259A發(fā)送普通中斷結束命令

out

20h,al popbx ;恢復寄存器

popax

iret ;中斷返回kbint endp例10.4中斷服務程序:中斷返回kbint2: moval,20h實驗6小鍵盤實驗認真閱讀教材中掃描法和反轉法識別按鍵的程序段延時子程序可以采用軟件延時程序(教材P245)延時子程序也可以采用實時時鐘的硬件延時(教材P201),它更精確

提示實驗6小鍵盤實驗認真閱讀教材中掃描法和反轉法識別按鍵的程10.4LED數(shù)碼管及其接口發(fā)光二極管LED是最簡單的顯示設備由8段LED組成的LED數(shù)碼管LED數(shù)碼管廣泛用于單板微型機、微型機控制系統(tǒng)及數(shù)字化儀器中LED數(shù)碼管可以顯示內存地址和數(shù)據(jù)等10.4LED數(shù)碼管及其接口發(fā)光二極管LED是最簡單的顯1.LED數(shù)碼管的工作原理主要部分是7段LED發(fā)光管各段順時針排列,分別稱為a、b、c、d、e、f、g、dp(或h,即小數(shù)點,有時不用)通過7個發(fā)光段的不同組合可顯示可顯示0~9十個數(shù)碼也可以顯示A~F(實現(xiàn)16進制數(shù)的顯示)還可以顯示個別特殊字符,如-、P、H等abcdefg1.LED數(shù)碼管的工作原理主要部分是7段LED發(fā)光管abLED數(shù)碼管的結構共陽極共陽極+5Vabcdefgh共陰極abcdefgh共陰極LED數(shù)碼管的結構共陽極共陽極+5Va共陰極a共陰極2.單個LED數(shù)碼管的顯示8255APA0PA1PA2PA3PA4PA5PA6PA7同相驅動電路abcdefgh+5V對一般數(shù)字電路而言,其灌電流(輸出低電平)的能力要大于拉電流(輸出高電平)的能力共陽數(shù)碼管送0點亮送0點亮2.單個LED數(shù)碼管的顯示8255APA0a+5V對一般單個數(shù)碼管的顯示LEDtb db0c0h,0f9h,0a4h ;共陽七段碼表

db……

moval,1 ;要顯示的數(shù)碼在表中的位置

movbx,offsetLEDtb ;bx指向七段碼表

xlat ;通過換碼取要顯示的七段碼

;al←ds:[bx+al] movdx,port

outdx,al ;輸出七段碼軟件譯碼單個數(shù)碼管的顯示LEDtb db0c0h,0f9h,0a43.多個LED數(shù)碼管的顯示以動態(tài)掃描顯示8個數(shù)碼管為例硬件——使用兩個8位的輸出端口,其中:鎖存輸出七段碼的端口,通過公用的段驅動電路來驅動多個數(shù)碼管各段鎖存輸出位選通碼的端口,每次只點亮一個數(shù)碼管軟件——用輪流點亮(掃描)的方法實現(xiàn)多位數(shù)碼顯示,掃描頻率應控制在16次/秒以上,當掃描頻率達50次/秒時,顯示將無閃爍感。3.多個LED數(shù)碼管的顯示以動態(tài)掃描顯示8個數(shù)碼管為例多個LED數(shù)碼管的顯示8鎖存同相驅動鎖存反相驅動七段碼端口位選通碼端口8共陽數(shù)碼管控制控制數(shù)據(jù)送0時點亮相應段,七段碼:11111001B將顯示數(shù)碼“1”送1時選通相應數(shù)碼管,選通碼:00000001B將選中最左邊的數(shù)碼管1多個LED數(shù)碼管的顯示8鎖存鎖存七段碼端口位選通碼端口8共陽段控制端口電路D0D1D2D3D4D5D6D7陽極位0abcdefgh位1位2段碼D0~D7段控制鎖存/同相驅動segport,-IOW段控制端口電路D0陽極位0abcdefgh位1段控制端口作用控制哪些段點亮,決定具體顯示什么數(shù)碼段控制端口送出七段碼到數(shù)碼管段控制端此端口為8個數(shù)碼管的共用端口段控制:Di=0,相應段點亮D7D6D5D4D3D2D1D0hgfedcba通過位、段控制端口的共同作用才能確定哪個數(shù)碼管顯示什么數(shù)碼段控制端口作用控制哪些段點亮,決定具體顯示什么數(shù)碼段控制:D位控制端口電路D7D6D5D4D3D2D1D0共陽極數(shù)位0數(shù)位1數(shù)位2位碼D0~D7位控制鎖存/反相驅動bitport,-IOW共陽極共陽極位控制端口電路D7共陽極數(shù)位0數(shù)位1數(shù)位2位碼位控制鎖bit位控制端口作用位控制端口控制點亮哪位數(shù)碼管(其余數(shù)碼管暫不點亮)當位控制端口的控制碼某位為0時,經反相驅動,便在相應數(shù)碼管的公共陽極上加了高電平,該數(shù)碼管將點亮并顯示數(shù)據(jù)位控制:Di=0,相應數(shù)位的數(shù)碼管可以發(fā)光D7D6D5D4D3D2D1D0位7位6位5位4位3位2位1位0位控制端口作用位控制端口控制點亮哪位數(shù)碼管(其余數(shù)碼管暫不點數(shù)碼緩沖區(qū) ;數(shù)據(jù)段LEDdt db8dup(0) ;顯示緩沖區(qū),存放要顯示

;數(shù)碼在七段碼表中的序號

;主程序

movsi,offsetLEDdt ;si指向顯示緩沖區(qū)首址

callLEDdisp ;調用顯示子程序例10.4數(shù)碼緩沖區(qū) ;數(shù)據(jù)段例10.4獲取顯示代碼LEDdisp proc pushax pushbx pushdx movbx,offsetLEDtb movah,0feh ;從最左邊數(shù)碼管開始LED1: lodsb ;取顯示數(shù)據(jù)

xlat ;換碼得到要顯示的七段碼

;AL←CS:[BX+AL]例10.4獲取顯示代碼LEDdisp proc例10.4數(shù)碼顯示 movdx,segport ;segport為段控制端口

outdx,al ;送出七段碼

moval,ah ;取出位顯示代碼

movdx,bitport ;bitport為位控制端口

outdx,al ;送出位選通碼

calldelay ;實現(xiàn)數(shù)碼管延時顯示例10.4數(shù)碼顯示 movdx,segport ;segport為段顯示下位數(shù)碼 rolah,1 ;選通碼移位,指向下個數(shù)碼管

cmpah,0feh ;選通碼又回最左邊的數(shù)碼管?

jnzLED1 ;否,顯示下一個數(shù)字

popdx ;是,顯示完一輪,退出

popbx popax retLEDtb db0c0h,0f9h ;共陽七段碼表

db……LEDdisp endp例10.4顯示下位數(shù)碼 rolah,1 ;選通碼移位,指向下個數(shù)碼軟件延時timer =10 ;延時常量delay proc pushbx pushcx movbx,timer ;外循環(huán):timer確定的次數(shù)delay1: xorcx,cxdelay2: loopdelay2 ;內循環(huán):216次循環(huán)

例10.4軟件延時timer =10 ;延時常量例10.4軟件延時 decbx jnzdelay1 popcx popbx retdelay endp例10.4通過控制重復頻率和延時時間就可以得到各種顯示效果軟件延時 decbx例10.4通過控制重復頻率和延時時間實驗7LED數(shù)碼管顯示實驗請認真閱讀教材中8位數(shù)碼管顯示子程序延時子程序可以采用軟件延時程序(教材P245)延時子程序建議采用實時時鐘的硬件延時(教材P201),它更精確,也便于控制時間實驗7LED數(shù)碼管顯示實驗請認真閱讀教材中8位數(shù)碼管顯示10.5并行打印機接口一般采用Centronics標準接口或者其簡化接口Centronics接口是的一個并行接口協(xié)議,該協(xié)議規(guī)定了36腳簧式插頭座和信號含義,其中前11條線是關鍵信號,他們是8條數(shù)據(jù)線3條聯(lián)絡線(選通、響應和打印機忙)Centronics接口信號中還有一些特殊的控制線、和狀態(tài)線PC系列機的并行打印機接口是一個25針插口10.5并行打印機接口一般采用Centronics標準接1.控制打印機的信號——打印機輸入-SLCTIN(選擇輸入)——相當于打印機選中信號-INIT(初始化

溫馨提示

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

評論

0/150

提交評論