第11章_并行接口_第1頁(yè)
第11章_并行接口_第2頁(yè)
第11章_并行接口_第3頁(yè)
第11章_并行接口_第4頁(yè)
第11章_并行接口_第5頁(yè)
已閱讀5頁(yè),還剩121頁(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)介

1、第第11 11章章 并行接口并行接口教學(xué)重點(diǎn)n 8255A的工作方式和編程的工作方式和編程n 8255A的應(yīng)用的應(yīng)用n 簡(jiǎn)易鍵盤(pán)的掃描程序簡(jiǎn)易鍵盤(pán)的掃描程序n LED數(shù)碼管的多位顯示數(shù)碼管的多位顯示動(dòng)作演示n源程序源程序n演示演示并行數(shù)據(jù)傳輸方式n以計(jì)算機(jī)的字長(zhǎng),通常是以計(jì)算機(jī)的字長(zhǎng),通常是8位、位、16位或位或32位為傳輸單位,一次傳送一個(gè)字長(zhǎng)的數(shù)據(jù)位為傳輸單位,一次傳送一個(gè)字長(zhǎng)的數(shù)據(jù)n適合于外部設(shè)備與微機(jī)之間進(jìn)行近距離、適合于外部設(shè)備與微機(jī)之間進(jìn)行近距離、大量和快速的信息交換大量和快速的信息交換n例如:微機(jī)與并行接口打印機(jī)、磁盤(pán)驅(qū)動(dòng)器例如:微機(jī)與并行接口打印機(jī)、磁盤(pán)驅(qū)動(dòng)器n微機(jī)系統(tǒng)中最基本

2、的信息交換方法微機(jī)系統(tǒng)中最基本的信息交換方法n例如:系統(tǒng)板上各部件之間,接口電路板上例如:系統(tǒng)板上各部件之間,接口電路板上各部件之間各部件之間11.1 并行接口電路8255An具有多種功能的可編程并行接口電路芯片具有多種功能的可編程并行接口電路芯片n最基本的接口電路:三態(tài)緩沖器和鎖存器最基本的接口電路:三態(tài)緩沖器和鎖存器n與與CPU間、與外設(shè)間的接口電路:狀態(tài)寄存間、與外設(shè)間的接口電路:狀態(tài)寄存器和控制寄存器器和控制寄存器n還有端口的譯碼和控制電路、中斷控制電路還有端口的譯碼和控制電路、中斷控制電路n分分3個(gè)端口,共個(gè)端口,共24個(gè)外設(shè)引腳個(gè)外設(shè)引腳n共三種輸入輸出工作方式共三種輸入輸出工作方

3、式11.1.1 8255A的內(nèi)部結(jié)構(gòu)和引腳數(shù)據(jù)數(shù)據(jù)總線總線緩沖器緩沖器內(nèi)部控制線內(nèi)部控制線內(nèi)部數(shù)據(jù)線內(nèi)部數(shù)據(jù)線D0D7A組組控制控制A組組端口端口AA組組端口端口C上部上部B組組控制控制B組組端口端口BB組組端口端口C下部下部讀寫(xiě)讀寫(xiě)控制控制邏輯邏輯PC0PC3PB0PB7PC4PC7PA0PA7RDWRA0A1CSRESET1. 外設(shè)數(shù)據(jù)端口n端口端口A:PA0PA7nA組,支持工作方式組,支持工作方式0、1、2n端口端口B:PB0PB7nB組,支持工作方式組,支持工作方式0、1n端口端口C:PC0PC7n僅支持工作方式僅支持工作方式0nA組控制高組控制高4位位PC4PC7nB組控制低組控制

4、低4位位PC0PC3n端口端口A:PA0PA7n常作數(shù)據(jù)端口,功能最強(qiáng)大常作數(shù)據(jù)端口,功能最強(qiáng)大n端口端口B:PB0PB7n常作數(shù)據(jù)端口常作數(shù)據(jù)端口n端口端口C:PC0PC7n可作數(shù)據(jù)、狀態(tài)和控制端口可作數(shù)據(jù)、狀態(tài)和控制端口n分兩個(gè)分兩個(gè)4位,每位可獨(dú)立操作位,每位可獨(dú)立操作n控制最靈活,最難掌握控制最靈活,最難掌握2. 與處理器接口CS* A1 A0I/O地址地址讀操作讀操作RD* 寫(xiě)操作寫(xiě)操作WR*0 0 00 0 10 1 00 1 160H61H62H63H讀端口讀端口A讀端口讀端口B讀端口讀端口C非法非法寫(xiě)端口寫(xiě)端口A寫(xiě)端口寫(xiě)端口B寫(xiě)端口寫(xiě)端口C寫(xiě)控制字寫(xiě)控制字nD0 D7數(shù)據(jù)線數(shù)據(jù)

5、線A0 A1地址線地址線nRD*讀信號(hào)讀信號(hào)WR*寫(xiě)信號(hào)寫(xiě)信號(hào)nCS*片選信號(hào)片選信號(hào)RESET復(fù)位信號(hào)復(fù)位信號(hào)11.1.2 8255A的工作方式n方式方式0:基本輸入輸出方式基本輸入輸出方式n適用于無(wú)條件傳送和查詢方式的接口電路適用于無(wú)條件傳送和查詢方式的接口電路n方式方式1:選通輸入輸出方式選通輸入輸出方式n適用于查詢和中斷方式的接口電路適用于查詢和中斷方式的接口電路n方式方式2:雙向選通傳送方式雙向選通傳送方式n適用于與雙向傳送數(shù)據(jù)的外設(shè)適用于與雙向傳送數(shù)據(jù)的外設(shè)n適用于查詢和中斷方式的接口電路適用于查詢和中斷方式的接口電路方式0輸入時(shí)序datadata輸入端口輸入端口D0D7RD CS

6、,A1,A0請(qǐng)?bào)w會(huì)這里請(qǐng)?bào)w會(huì)這里8255A8255A的數(shù)據(jù)緩沖作用的數(shù)據(jù)緩沖作用方式0輸出時(shí)序WRdatadata輸出端口輸出端口D0D7 CS,A1,A08255A8255A對(duì)對(duì)CPUCPU通過(guò)它輸出給外設(shè)的數(shù)據(jù)進(jìn)行鎖存通過(guò)它輸出給外設(shè)的數(shù)據(jù)進(jìn)行鎖存方式1輸入引腳:A端口數(shù)據(jù)選通信號(hào)表示外設(shè)已經(jīng)準(zhǔn)備好數(shù)據(jù)輸入緩沖器滿信號(hào)表示A口已經(jīng)接收數(shù)據(jù)中斷請(qǐng)求信號(hào)請(qǐng)求CPU接收數(shù)據(jù)PC4PC5PC3PA7PA0INTEAIBFAINTRASTBA中斷允許觸發(fā)器方式1輸入引腳:B端口PC2PC1PC0PB7PB0INTEBIBFBINTRBSTBB數(shù)據(jù)選通信號(hào)表示外設(shè)已經(jīng)準(zhǔn)備好數(shù)據(jù)輸入緩沖器滿信號(hào)表示A口

7、已經(jīng)接收數(shù)據(jù)中斷請(qǐng)求信號(hào)請(qǐng)求CPU接收數(shù)據(jù)中斷允許觸發(fā)器方式方式1 1需借用端口需借用端口C C用做聯(lián)絡(luò)信號(hào)用做聯(lián)絡(luò)信號(hào)同時(shí)還具有中斷請(qǐng)求和屏蔽功能同時(shí)還具有中斷請(qǐng)求和屏蔽功能方式1輸入聯(lián)絡(luò)信號(hào)nSTB*選通信號(hào),低電平有效選通信號(hào),低電平有效n由外設(shè)提供的輸入信號(hào),當(dāng)其有效時(shí),將輸入設(shè)備送由外設(shè)提供的輸入信號(hào),當(dāng)其有效時(shí),將輸入設(shè)備送來(lái)的數(shù)據(jù)鎖存至來(lái)的數(shù)據(jù)鎖存至8255A的輸入鎖存器的輸入鎖存器nIBF輸入緩沖器滿信號(hào),高電平有效輸入緩沖器滿信號(hào),高電平有效n8255A輸出的聯(lián)絡(luò)信號(hào)。當(dāng)其有效時(shí),表示數(shù)據(jù)已輸出的聯(lián)絡(luò)信號(hào)。當(dāng)其有效時(shí),表示數(shù)據(jù)已鎖存在輸入鎖存器鎖存在輸入鎖存器nINTR中斷請(qǐng)

8、求信號(hào),高電平有效中斷請(qǐng)求信號(hào),高電平有效n8255A輸出的信號(hào),可用于向輸出的信號(hào),可用于向CPU提出中斷請(qǐng)求,提出中斷請(qǐng)求,要求要求CPU讀取外設(shè)數(shù)據(jù)讀取外設(shè)數(shù)據(jù)方式1輸入時(shí)序dataINTRIBF data輸入端口輸入端口D0D7STBRDSTBSTB* *和和IBFIBF是外設(shè)和是外設(shè)和8255A8255A間間的一對(duì)應(yīng)答聯(lián)絡(luò)信號(hào),的一對(duì)應(yīng)答聯(lián)絡(luò)信號(hào),為的是可靠地輸入數(shù)據(jù)為的是可靠地輸入數(shù)據(jù)方式1中斷控制n8255A的中斷由中斷允許觸發(fā)器的中斷由中斷允許觸發(fā)器INTE控制控制n置位允許中斷,復(fù)位禁止中斷置位允許中斷,復(fù)位禁止中斷n對(duì)對(duì)INTE的操作通過(guò)寫(xiě)入端口的操作通過(guò)寫(xiě)入端口C的對(duì)應(yīng)位

9、實(shí)的對(duì)應(yīng)位實(shí)現(xiàn),現(xiàn),INTE觸發(fā)器對(duì)應(yīng)端口觸發(fā)器對(duì)應(yīng)端口C的位是作應(yīng)答的位是作應(yīng)答聯(lián)絡(luò)信號(hào)的輸入信號(hào)的哪一位,只要對(duì)那聯(lián)絡(luò)信號(hào)的輸入信號(hào)的哪一位,只要對(duì)那一位置位一位置位/復(fù)位就可以控制復(fù)位就可以控制INTE觸發(fā)器觸發(fā)器n選通輸入方式下選通輸入方式下n端口端口A的的INTEA對(duì)應(yīng)對(duì)應(yīng)PC4n端口端口B的的INTEB對(duì)應(yīng)對(duì)應(yīng)PC2方式1輸出引腳:A端口外設(shè)響應(yīng)信號(hào)表示外設(shè)已經(jīng)接收到數(shù)據(jù)輸出緩沖器滿信號(hào)表示CPU已經(jīng)輸出了數(shù)據(jù)中斷請(qǐng)求信號(hào)請(qǐng)求CPU再次輸出數(shù)據(jù)PC6PC7PC3PA7PA0INTEAOBFAINTRAACKA中斷允許觸發(fā)器方式1輸出引腳:B端口PC2PC1PC0PB7PB0INTE

10、BOBFBINTRBACKB外設(shè)響應(yīng)信號(hào)表示外設(shè)已經(jīng)接收到數(shù)據(jù)輸出緩沖器滿信號(hào)表示CPU已經(jīng)輸出了數(shù)據(jù)中斷請(qǐng)求信號(hào)請(qǐng)求CPU再次輸出數(shù)據(jù)中斷允許觸發(fā)器方式1輸出聯(lián)絡(luò)信號(hào)nOBF*輸出緩沖器滿信號(hào),低有效輸出緩沖器滿信號(hào),低有效n8255A輸出給外設(shè)的一個(gè)控制信號(hào),當(dāng)其有效時(shí),輸出給外設(shè)的一個(gè)控制信號(hào),當(dāng)其有效時(shí),表示表示CPU已把數(shù)據(jù)輸出給指定的端口,外設(shè)可以取走已把數(shù)據(jù)輸出給指定的端口,外設(shè)可以取走nACK*響應(yīng)信號(hào),低有效響應(yīng)信號(hào),低有效n外設(shè)的響應(yīng)信號(hào),指示外設(shè)的響應(yīng)信號(hào),指示8255A的端口數(shù)據(jù)已由外設(shè)的端口數(shù)據(jù)已由外設(shè)接受接受nINTR中斷請(qǐng)求信號(hào),高有效中斷請(qǐng)求信號(hào),高有效n當(dāng)輸出

11、設(shè)備已接受數(shù)據(jù)后,當(dāng)輸出設(shè)備已接受數(shù)據(jù)后,8255A輸出此信號(hào)向輸出此信號(hào)向CPU提出中斷請(qǐng)求,要求提出中斷請(qǐng)求,要求CPU繼續(xù)提供數(shù)據(jù)繼續(xù)提供數(shù)據(jù)端口端口A A的的INTEAINTEA對(duì)應(yīng)對(duì)應(yīng)PCPC6 6端口端口B B的的INTEBINTEB對(duì)應(yīng)對(duì)應(yīng)PCPC2 2方式1輸出時(shí)序 INTR datadata輸出端口輸出端口D0D7WROBFACK OBFOBF* *和和ACKACK* *是外設(shè)和是外設(shè)和8255A8255A間間的一對(duì)應(yīng)答聯(lián)絡(luò)信號(hào),的一對(duì)應(yīng)答聯(lián)絡(luò)信號(hào),為的是可靠地輸出數(shù)據(jù)為的是可靠地輸出數(shù)據(jù)方式2雙向方式n方式方式2將方式將方式1的選通輸入輸出功能組合成一個(gè)的選通輸入輸出功能組

12、合成一個(gè)雙向數(shù)據(jù)端口,可以發(fā)送數(shù)據(jù)和接收數(shù)據(jù)雙向數(shù)據(jù)端口,可以發(fā)送數(shù)據(jù)和接收數(shù)據(jù)n只有端口只有端口A可以工作于方式可以工作于方式2,需要利用端口,需要利用端口C的的5個(gè)信號(hào)線,其作用與方式個(gè)信號(hào)線,其作用與方式1相同相同n方式方式2的數(shù)據(jù)輸入過(guò)程與方式的數(shù)據(jù)輸入過(guò)程與方式1的輸入方式一樣的輸入方式一樣n方式方式2的數(shù)據(jù)輸出過(guò)程與方式的數(shù)據(jù)輸出過(guò)程與方式1的輸出方式有一的輸出方式有一點(diǎn)不同:數(shù)據(jù)輸出時(shí)點(diǎn)不同:數(shù)據(jù)輸出時(shí)8255A不是在不是在OBF*有效時(shí)有效時(shí)向外設(shè)輸出數(shù)據(jù),而是在外設(shè)提供響應(yīng)信號(hào)向外設(shè)輸出數(shù)據(jù),而是在外設(shè)提供響應(yīng)信號(hào)ACK*時(shí)才送出數(shù)據(jù)時(shí)才送出數(shù)據(jù)方式2雙向引腳PC6PC7PC

13、3PA7PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2用PC6設(shè)置INTE1(輸出)用PC4設(shè)置INTE2(輸入)輸入和輸出中斷通過(guò)或門(mén)輸出INTRA信號(hào)方式2雙向時(shí)序data-out INTR data-outdata-indata-inPA0PA7D0D7IBF WROBFACKSTBRD11.1.3 8255A的編程n初始化編程:一個(gè)方式控制字初始化編程:一個(gè)方式控制字n采用控制采用控制I/O地址:地址:A1A011n工作過(guò)程中:通過(guò)數(shù)據(jù)端口對(duì)外設(shè)數(shù)據(jù)工作過(guò)程中:通過(guò)數(shù)據(jù)端口對(duì)外設(shè)數(shù)據(jù)進(jìn)行讀寫(xiě)進(jìn)行讀寫(xiě)n數(shù)據(jù)讀寫(xiě)利用端口數(shù)據(jù)讀寫(xiě)利用端口A、B和和C的的I/

14、O地址,地址,A1A0依次等于依次等于00、01、10nIBM PC/XT機(jī)上,端口機(jī)上,端口A、B、C和控制和控制端口的端口的I/O地址為地址為60H、61H、62H和和63H1. 寫(xiě)入方式控制字:控制字格式1. 寫(xiě)入方式控制字:示例n要求:要求:nA端口:方式端口:方式1輸入輸入nC端口上半部:輸出,端口上半部:輸出,C口下半部:輸入口下半部:輸入nB端口:方式端口:方式0輸出輸出n方式控制字:方式控制字:10110001B或或B1Hn初始化的程序段:初始化的程序段:mov dx,0fffeh;假設(shè)控制端口為假設(shè)控制端口為FFFEHmov al,0b1h ;方式控制字方式控制字out dx

15、,al;送到控制端口送到控制端口2. 讀寫(xiě)數(shù)據(jù)端口n初始化編程后:初始化編程后:n當(dāng)數(shù)據(jù)端口作為輸入接口時(shí),執(zhí)行輸入當(dāng)數(shù)據(jù)端口作為輸入接口時(shí),執(zhí)行輸入IN指指令將從輸入設(shè)備得到外設(shè)數(shù)據(jù)令將從輸入設(shè)備得到外設(shè)數(shù)據(jù)n當(dāng)數(shù)據(jù)端口作為輸出接口時(shí),執(zhí)行輸出當(dāng)數(shù)據(jù)端口作為輸出接口時(shí),執(zhí)行輸出OUT指令將把指令將把CPU的數(shù)據(jù)送給輸出設(shè)備的數(shù)據(jù)送給輸出設(shè)備n8255A具有鎖存輸出數(shù)據(jù)的能力具有鎖存輸出數(shù)據(jù)的能力n對(duì)輸出方式的端口同樣可以輸入對(duì)輸出方式的端口同樣可以輸入n不是讀取外設(shè)數(shù)據(jù)不是讀取外設(shè)數(shù)據(jù)n讀取的是上次讀取的是上次CPU給外設(shè)的數(shù)據(jù)給外設(shè)的數(shù)據(jù)2. 讀寫(xiě)數(shù)據(jù)端口:示例n利用利用8255A的輸出鎖

16、存能力,可實(shí)現(xiàn)按位的輸出鎖存能力,可實(shí)現(xiàn)按位輸出控制輸出控制 n對(duì)輸出端口對(duì)輸出端口B的的PB7位置位的程序段:位置位的程序段:mov dx,0fffah;B端口假設(shè)為端口假設(shè)為FFFAHin al,dx;讀出讀出B端口原輸出內(nèi)容端口原輸出內(nèi)容or al,80h;使使PB71out dx,al;輸出新的內(nèi)容輸出新的內(nèi)容3. 讀寫(xiě)端口C:歸納1nC端口被分成端口被分成兩個(gè)兩個(gè)4位端口位端口,兩個(gè)端,兩個(gè)端口只能以方式口只能以方式0工工作,可分別選擇作,可分別選擇輸入或輸出輸入或輸出n在控制上,在控制上,C端口上半部和端口上半部和A端口編為端口編為A組,組,C端口下半部和端口下半部和B端口編為端口

17、編為B組組3. 讀寫(xiě)端口C:歸納2n當(dāng)當(dāng)A和和B端口工作端口工作在方式在方式1或方式或方式2時(shí),時(shí),C端口的部分或全端口的部分或全部引腳將部引腳將被征用被征用n其余引腳仍可設(shè)定工作在方式其余引腳仍可設(shè)定工作在方式03. 讀寫(xiě)端口C:歸納3n對(duì)端口對(duì)端口C的數(shù)據(jù)輸出有兩種辦法的數(shù)據(jù)輸出有兩種辦法n通過(guò)端口通過(guò)端口C的的I/O地址:地址:向向C端口直接端口直接寫(xiě)入寫(xiě)入字節(jié)數(shù)據(jù)字節(jié)數(shù)據(jù)。這一數(shù)據(jù)被寫(xiě)進(jìn)。這一數(shù)據(jù)被寫(xiě)進(jìn)C端口的輸出端口的輸出鎖存器,并從輸出引腳輸出,但對(duì)設(shè)置為鎖存器,并從輸出引腳輸出,但對(duì)設(shè)置為輸入的引腳無(wú)效輸入的引腳無(wú)效n通過(guò)控制端口:通過(guò)控制端口:向向C端口端口寫(xiě)入位控字寫(xiě)入位控字

18、,使,使C端口的某個(gè)引腳輸出端口的某個(gè)引腳輸出1或或0,或置位復(fù)位,或置位復(fù)位內(nèi)部的中斷允許觸發(fā)器內(nèi)部的中斷允許觸發(fā)器端口C的位控制字n位控制字寫(xiě)入控制端口位控制字寫(xiě)入控制端口n特別便于置位復(fù)位內(nèi)部特別便于置位復(fù)位內(nèi)部中斷允許觸發(fā)器中斷允許觸發(fā)器INTE3. 讀寫(xiě)端口C:歸納4n讀取的讀取的C端口數(shù)據(jù)有兩種情況端口數(shù)據(jù)有兩種情況n未被未被A和和B端口征用的引腳端口征用的引腳:將從定義為:將從定義為輸入的端口讀到引腳輸入信息;將從定義輸入的端口讀到引腳輸入信息;將從定義為輸出的端口讀到輸出鎖存器中的信息為輸出的端口讀到輸出鎖存器中的信息n被被A和和B端口征用作為聯(lián)絡(luò)線的引腳端口征用作為聯(lián)絡(luò)線的引

19、腳:將:將讀到反映讀到反映8255A狀態(tài)的狀態(tài)的狀態(tài)字狀態(tài)字D D7 7D D6 6D D5 5D D4 4D D3 3D D2 2D D1 1D D0 0方式方式1輸入輸入I/OI/OIBFAINTEA INTRAINTEBIBFBINTRB方式方式1輸出輸出OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB方式方式2雙向雙向OBFAINTE1IBFAINTE2INTRA端口C的狀態(tài)字A組組B組組11.2 8255A的應(yīng)用作為通用的并行接口電路芯片,作為通用的并行接口電路芯片,825A具有廣泛的應(yīng)用具有廣泛的應(yīng)用n應(yīng)用在應(yīng)用在IBM PC/XT微機(jī)上微機(jī)上n應(yīng)用于打印機(jī)接口

20、電路應(yīng)用于打印機(jī)接口電路n連接簡(jiǎn)易鍵盤(pán)連接簡(jiǎn)易鍵盤(pán)n驅(qū)動(dòng)驅(qū)動(dòng)LED數(shù)碼管數(shù)碼管n11.2.1 8255A在IBM PC/XT上的應(yīng)用n工作在基本輸入工作在基本輸入/輸出方式輸出方式0n端口端口A為方式為方式0輸入,用來(lái)讀取鍵盤(pán)掃描碼輸入,用來(lái)讀取鍵盤(pán)掃描碼n端口端口B工作于方式工作于方式0輸出,例如控制揚(yáng)聲器等輸出,例如控制揚(yáng)聲器等n端口端口C為方式為方式0輸入,讀取系統(tǒng)狀態(tài)和配置輸入,讀取系統(tǒng)狀態(tài)和配置n系統(tǒng)的初始化編程:系統(tǒng)的初始化編程:mov al,10011001b;方式控制字方式控制字99Hout 63h,al打印機(jī)接口的信號(hào)與時(shí)序BUSYDATA07ACKSTROBEn主機(jī)把數(shù)據(jù)送

21、給引腳主機(jī)把數(shù)據(jù)送給引腳DATA0DATA7n同時(shí)送出數(shù)據(jù)選通信號(hào)同時(shí)送出數(shù)據(jù)選通信號(hào)STROBE*n打印機(jī)在打印機(jī)在BUSY信號(hào)線上發(fā)出忙信號(hào)信號(hào)線上發(fā)出忙信號(hào)n打印機(jī)處理好輸入的數(shù)據(jù)時(shí)打印機(jī)處理好輸入的數(shù)據(jù)時(shí)n撤消忙信號(hào)撤消忙信號(hào)n同時(shí)又送出一個(gè)響應(yīng)信號(hào)同時(shí)又送出一個(gè)響應(yīng)信號(hào)ACK*11.2.2 用8255A方式0與打印機(jī)接口BUSY DATA078255APC7PC2PA0PA7打印機(jī)打印機(jī)STROBE8255A的初始化mov dx,0fffeh;控制端口地址:控制端口地址:FFFEHmov al,10000001B;方式控制字:方式控制字:91Hout dx,al;A端口方式端口方式0

22、輸出,輸出,C端口上輸出、下輸入端口上輸出、下輸入mov al,00001111B;端口端口C的復(fù)位置位控制字,使的復(fù)位置位控制字,使PC71out dx,al例11.1打印子程序:查詢printcprocpush axpush dxprn: mov dx,0fffch ;讀取端口讀取端口Cin al,dx;查詢打印機(jī)狀態(tài)查詢打印機(jī)狀態(tài)and al,04h;PC2BUSY0?jnz prn;PC21,打印機(jī)忙,則循環(huán)等待,打印機(jī)忙,則循環(huán)等待例11.1打印子程序:輸出mov dx,0fff8h;PC20,打印機(jī)不忙,則輸出數(shù)據(jù),打印機(jī)不忙,則輸出數(shù)據(jù)mov al,ahout dx,al;將打印

23、數(shù)據(jù)從端口將打印數(shù)據(jù)從端口A輸出輸出例11.1打印子程序:打印mov dx,0fffeh;從從PC7送出控制低脈沖送出控制低脈沖mov al,00001110B ;置置STROBE*0out dx,alnop;產(chǎn)生一定寬度的低電平產(chǎn)生一定寬度的低電平nopmov al,00001111B ;置置=1out dx,al;最終,最終,STROBE*產(chǎn)生低脈沖信號(hào)產(chǎn)生低脈沖信號(hào)例11.1打印子程序:返回pop dxpop axretprintcendp例11.111.2.3 用8255A方式1與打印機(jī)接口1000pf2K15321441LS123單穩(wěn)單穩(wěn)電路電路+5VDATA078255APC6IN

24、TRPC3PC7PA0PA7打印機(jī)打印機(jī)ACKACKOBFSTROBE8255A方式1與打印機(jī)接口時(shí)序配合PA0PA7(DATA07)ACKOBFSTROBE方式方式1 1時(shí)序時(shí)序打印機(jī)時(shí)序打印機(jī)時(shí)序8255A的初始化mov dx,0fffehmov al,0a0hout dx,almov al,0ch;使使INTEA(PC6)為)為0,禁止中斷,禁止中斷out dx,almov cx,counter;打印字節(jié)數(shù)送打印字節(jié)數(shù)送CXmov bx,offset buffer ;取字符串首地址取字符串首地址call prints;調(diào)用打印子程序調(diào)用打印子程序例11.2打印子程序:輸出printspr

25、ocpush ax;保護(hù)寄存器保護(hù)寄存器push dxprint1:mov al,bx;取一個(gè)數(shù)據(jù)取一個(gè)數(shù)據(jù)mov dx,0fff8hout dx,al;從端口從端口A輸出輸出 例11.2打印子程序:查詢mov dx,0fffchprint2:in al,dxtest al,80h;檢測(cè)(檢測(cè)(PC7)為)為1否否?jz print2;為為0,說(shuō)明打印機(jī)沒(méi)有響應(yīng),繼續(xù)檢測(cè),說(shuō)明打印機(jī)沒(méi)有響應(yīng),繼續(xù)檢測(cè) 例11.2打印子程序:返回inc bx;為為1,說(shuō)明打印機(jī)已接受數(shù)據(jù),說(shuō)明打印機(jī)已接受數(shù)據(jù)loop print1;準(zhǔn)備取下一個(gè)數(shù)據(jù)輸出準(zhǔn)備取下一個(gè)數(shù)據(jù)輸出pop dx;打印結(jié)束,恢復(fù)寄存器打印結(jié)

26、束,恢復(fù)寄存器pop axret;返回返回printsendp例11.211.2.4 雙機(jī)并行通信接口PA0PA7PC4PC08255A甲方(發(fā)送)甲方(發(fā)送)PA0PA7PC7PC68255A已方(接收)已方(接收)甲機(jī)的初始化mov dx,0fffehmov al,0a0hout dx,al;工作方式字:端口工作方式字:端口A方式方式1輸出輸出mov al,0dh;使使PC6(INTEA)1,允許中斷,允許中斷out dx,al例11.3甲機(jī)發(fā)送程序trsmt: mov dx,0fffchin al,dx;查詢查詢PC3(INTRA)1?and al,08hjz trsmtmov dx,0

27、fff8h ;發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù)mov al,ahout dx,al例11.3乙機(jī)的初始化mov dx,0fffehmov al,98hout dx,al;工作方式字:端口工作方式字:端口A方式方式0輸入輸入mov al,01h;使使PC0(ACK*)1,因尚未收到數(shù)據(jù),因尚未收到數(shù)據(jù)out dx,al例11.3乙機(jī):查詢接收receive: mov dx,0fffchin al,dx;查詢查詢PC4(OBF*)0?and al,10hjnz receivemov dx,0fff8h ;接收數(shù)據(jù)接收數(shù)據(jù)in al,dxmov ah,al例11.3乙機(jī):接收響應(yīng)mov dx,0fffehmov a

28、l,00h;使使PC0(ACK*)0out dx,alnop;適當(dāng)延時(shí),產(chǎn)生一定寬度的低脈沖適當(dāng)延時(shí),產(chǎn)生一定寬度的低脈沖nopmov al,01h;使使PC0(ACK*)1out dx,al;產(chǎn)生低脈沖產(chǎn)生低脈沖ACK*信號(hào)信號(hào)例11.3實(shí)驗(yàn)實(shí)驗(yàn)5 5 并行接口實(shí)驗(yàn)并行接口實(shí)驗(yàn)n 要求要求類(lèi)似習(xí)題類(lèi)似習(xí)題11.8n 要求要求對(duì)應(yīng)例題對(duì)應(yīng)例題11.2n 請(qǐng)?jiān)趯?duì)比過(guò)程中,掌握例題、請(qǐng)?jiān)趯?duì)比過(guò)程中,掌握例題、習(xí)題和完成實(shí)驗(yàn)要求習(xí)題和完成實(shí)驗(yàn)要求 提示提示11.3 鍵盤(pán)及其接口n鍵盤(pán)是微機(jī)系統(tǒng)最常使用的輸入設(shè)備鍵盤(pán)是微機(jī)系統(tǒng)最常使用的輸入設(shè)備n小鍵盤(pán)小鍵盤(pán):適用于單板機(jī)或以微處理器為基:適用于單板機(jī)

29、或以微處理器為基礎(chǔ)的儀器,實(shí)現(xiàn)數(shù)據(jù)、地址、命令及指令礎(chǔ)的儀器,實(shí)現(xiàn)數(shù)據(jù)、地址、命令及指令等的輸入等的輸入n獨(dú)立鍵盤(pán)獨(dú)立鍵盤(pán):通過(guò):通過(guò)5芯電纜與芯電纜與PC微機(jī)主機(jī)連微機(jī)主機(jī)連接接11.3.1 簡(jiǎn)易鍵盤(pán)的工作原理+5V+5V+5Vn最簡(jiǎn)單的線性結(jié)構(gòu)鍵盤(pán)最簡(jiǎn)單的線性結(jié)構(gòu)鍵盤(pán)n每一個(gè)引腳連接一個(gè)鍵每一個(gè)引腳連接一個(gè)鍵n輸入輸入0/1反映健是否高低反映健是否高低11.3.1 簡(jiǎn)易鍵盤(pán)的工作原理+5V+5V控制線控制線檢檢測(cè)測(cè)線線n常用的矩陣結(jié)構(gòu)鍵盤(pán)常用的矩陣結(jié)構(gòu)鍵盤(pán)n每行連接一個(gè)引腳每行連接一個(gè)引腳n每列連接一個(gè)引腳每列連接一個(gè)引腳n利 用 控 制 線 為 低 、利 用 控 制 線 為 低 、讀取檢

30、測(cè)線來(lái)識(shí)別閉合鍵讀取檢測(cè)線來(lái)識(shí)別閉合鍵1. 掃描法n先使第先使第0行接低電平,其余行為高電平,然后看行接低電平,其余行為高電平,然后看第第0行是否有鍵閉合(通過(guò)檢查列線電位實(shí)現(xiàn))行是否有鍵閉合(通過(guò)檢查列線電位實(shí)現(xiàn))n此后,再將第此后,再將第1行接地,然后檢測(cè)列線是否有變行接地,然后檢測(cè)列線是否有變?yōu)榈碗娢坏木€。如此往下為低電位的線。如此往下一行一行地掃描一行一行地掃描,直到,直到最后一行最后一行n在掃描過(guò)程中,當(dāng)發(fā)現(xiàn)某一行有鍵閉合時(shí),便在在掃描過(guò)程中,當(dāng)發(fā)現(xiàn)某一行有鍵閉合時(shí),便在掃描中途退出掃描中途退出n通過(guò)組合行線和列線可識(shí)別此刻按下的是哪一鍵通過(guò)組合行線和列線可識(shí)別此刻按下的是哪一鍵第1

31、段:是否有鍵按下key1:mov al,00mov dx,rowportout dx,al ;使所有行線為低電平使所有行線為低電平 mov dx,colport in al,dx;讀取列值讀取列值cmp al,0ffh;判定是否有列線為低電平判定是否有列線為低電平j(luò)z key1;無(wú)閉合鍵,循環(huán)等待無(wú)閉合鍵,循環(huán)等待call delay ;有,延遲有,延遲20ms清除抖動(dòng)清除抖動(dòng)鍵盤(pán)掃描程序第2段:識(shí)別按鍵(掃描)mov cx,8 ;行數(shù)送行數(shù)送CXmov ah,0feh;掃描初值送掃描初值送AHkey2:mov al,ahmov dx,rowportout dx,al ;輸出行值(掃描值)輸出

32、行值(掃描值)mov dx,colportin al,dx;讀進(jìn)列值讀進(jìn)列值鍵盤(pán)掃描程序第2段:識(shí)別按鍵(判斷)cmp al,0ffh;判斷有無(wú)低電平的列線判斷有無(wú)低電平的列線jnz key3;有,則轉(zhuǎn)下一步處理有,則轉(zhuǎn)下一步處理rol ah,1;無(wú),則移位掃描值無(wú),則移位掃描值loop key2;準(zhǔn)備下一行掃描準(zhǔn)備下一行掃描jmp key1;所有行都沒(méi)有鍵按下,則返回繼續(xù)檢測(cè)所有行都沒(méi)有鍵按下,則返回繼續(xù)檢測(cè)key3: ;此時(shí),此時(shí),al列值,列值,ah行值行值鍵盤(pán)掃描程序2. 反轉(zhuǎn)法n首先,將行線作為控制線接一個(gè)輸出端口,將列首先,將行線作為控制線接一個(gè)輸出端口,將列線作為檢測(cè)線接一個(gè)輸入

33、端口線作為檢測(cè)線接一個(gè)輸入端口nCPU通過(guò)輸出端口將行線(控制線)全部設(shè)置為低電通過(guò)輸出端口將行線(控制線)全部設(shè)置為低電平,然后從輸入端口讀取列線(檢測(cè)線)平,然后從輸入端口讀取列線(檢測(cè)線)n然后,將行線和列線的作用互換,即將列線作為然后,將行線和列線的作用互換,即將列線作為控制線接輸出端口,行線作為檢測(cè)線接輸入端口控制線接輸出端口,行線作為檢測(cè)線接輸入端口n將剛才讀得的列值從列線所接端口輸出,再讀取行線將剛才讀得的列值從列線所接端口輸出,再讀取行線的輸入值的輸入值n這樣,當(dāng)一個(gè)鍵被按下時(shí),必定可以讀得一對(duì)唯這樣,當(dāng)一個(gè)鍵被按下時(shí),必定可以讀得一對(duì)唯一的行值和列值一的行值和列值條件條件:連

34、接行線和列線的接口電路:連接行線和列線的接口電路必須支持必須支持動(dòng)態(tài)改變輸入、輸出方式動(dòng)態(tài)改變輸入、輸出方式第1段:是否有鍵按下;設(shè)置行線接輸出端口,列線接輸入端口設(shè)置行線接輸出端口,列線接輸入端口key2:mov al,00mov dx,rowportout dx,al;設(shè)置行線全為低設(shè)置行線全為低mov dx,colportin al,dx;讀取列值讀取列值cmp al,0ffhjz key2;無(wú)閉合鍵,循環(huán)等待無(wú)閉合鍵,循環(huán)等待push ax;有閉合鍵,保存列值有閉合鍵,保存列值 push ax鍵盤(pán)掃描程序第2段:識(shí)別按鍵(反轉(zhuǎn)法);設(shè)置行線接輸入端口,列線接輸出端設(shè)置行線接輸入端口,列

35、線接輸出端mov dx,colportpop axout dx,al;輸出列值輸出列值mov dx,rowportin al,dx;讀取行值讀取行值pop bx;組合行列值組合行列值mov ah,bl;此時(shí),此時(shí),al行值,行值,ah列值列值鍵盤(pán)掃描程序行列值表和鍵代碼表;鍵盤(pán)的行列值表鍵盤(pán)的行列值表tabledw 0fefeh;鍵鍵0的行列值(鍵值)的行列值(鍵值)dw 0fdfeh;鍵鍵1的行列值的行列值dw 0fbfeh;鍵鍵2的行列值的行列值;其他鍵的行列值其他鍵的行列值;鍵盤(pán)的鍵代碼表鍵盤(pán)的鍵代碼表chardb ;鍵鍵0的代碼值的代碼值db ;鍵鍵1的代碼值的代碼值;其他鍵的代碼值其

36、他鍵的代碼值鍵盤(pán)掃描程序第3段:查找鍵代碼mov si,offset tablemov di,offset charmov cx,64;CX鍵的個(gè)數(shù)鍵的個(gè)數(shù)key3:cmp ax,si ;與鍵值比較與鍵值比較 jz key4;相同,說(shuō)明查到相同,說(shuō)明查到inc si;不相同,繼續(xù)比較不相同,繼續(xù)比較inc siinc diloop key3jmp key1;全部比較完,仍無(wú)相同,說(shuō)明是重鍵全部比較完,仍無(wú)相同,說(shuō)明是重鍵鍵盤(pán)掃描程序第4段:等待按鍵釋放key4:mov al,di;獲取鍵代碼送獲取鍵代碼送AL;判斷按鍵是否釋放,沒(méi)有則等待判斷按鍵是否釋放,沒(méi)有則等待call delay;按鍵釋

37、放,延時(shí)消除抖動(dòng)按鍵釋放,延時(shí)消除抖動(dòng);后續(xù)處理后續(xù)處理鍵盤(pán)掃描程序3. 抖動(dòng)和重健問(wèn)題n機(jī)械按鍵存在抖動(dòng)現(xiàn)象機(jī)械按鍵存在抖動(dòng)現(xiàn)象n當(dāng)按下或釋放一個(gè)鍵時(shí),往往會(huì)出現(xiàn)按鍵在閉合位置當(dāng)按下或釋放一個(gè)鍵時(shí),往往會(huì)出現(xiàn)按鍵在閉合位置和斷開(kāi)位置之間跳幾下才穩(wěn)定到閉合狀態(tài)和斷開(kāi)位置之間跳幾下才穩(wěn)定到閉合狀態(tài)n抖動(dòng)的持續(xù)時(shí)間通常不大于抖動(dòng)的持續(xù)時(shí)間通常不大于10msn采用硬件消抖電路或軟件延時(shí)方法解決采用硬件消抖電路或軟件延時(shí)方法解決n重鍵指兩個(gè)或多個(gè)鍵同時(shí)閉合重鍵指兩個(gè)或多個(gè)鍵同時(shí)閉合n出現(xiàn)重鍵時(shí),讀取的鍵值必然出現(xiàn)有一個(gè)以上的出現(xiàn)重鍵時(shí),讀取的鍵值必然出現(xiàn)有一個(gè)以上的0n是否給予識(shí)別和識(shí)別哪一個(gè)鍵是否給

38、予識(shí)別和識(shí)別哪一個(gè)鍵重健問(wèn)題的處理n簡(jiǎn)單情況:不予識(shí)別,認(rèn)為是錯(cuò)誤的按鍵簡(jiǎn)單情況:不予識(shí)別,認(rèn)為是錯(cuò)誤的按鍵n通常情況:只承認(rèn)先識(shí)別出來(lái)的鍵通常情況:只承認(rèn)先識(shí)別出來(lái)的鍵n連鎖法:直到所有鍵都釋放后,讀入下一個(gè)鍵連鎖法:直到所有鍵都釋放后,讀入下一個(gè)鍵n巡回法:等被識(shí)別的鍵釋放以后,就可以對(duì)其巡回法:等被識(shí)別的鍵釋放以后,就可以對(duì)其他閉合鍵作識(shí)別,而不必等待全部鍵釋放他閉合鍵作識(shí)別,而不必等待全部鍵釋放n正常的組合鍵:都識(shí)別出來(lái)正常的組合鍵:都識(shí)別出來(lái)DBPB6PB7PAIRQ1T1P10P21P11P22P204 GND1 CLOCK2 DATA5 +5V3 RESETPC機(jī)鍵盤(pán)機(jī)鍵盤(pán)系統(tǒng)板

39、系統(tǒng)板80488255A8259ALS322串串并并轉(zhuǎn)轉(zhuǎn)換換器器鍵鍵盤(pán)盤(pán)陣陣列列按鍵按鍵選通選通11.3.2 PC機(jī)鍵盤(pán)的工作原理1. PC機(jī)鍵盤(pán)的工作過(guò)程n鍵盤(pán)電路正常工作時(shí)不斷地掃描鍵盤(pán)矩陣鍵盤(pán)電路正常工作時(shí)不斷地掃描鍵盤(pán)矩陣n有按鍵,則確定按鍵位置之后以串行數(shù)據(jù)有按鍵,則確定按鍵位置之后以串行數(shù)據(jù)形式發(fā)送給系統(tǒng)板鍵盤(pán)接口電路形式發(fā)送給系統(tǒng)板鍵盤(pán)接口電路n鍵按下時(shí),發(fā)送該鍵的接通掃描碼鍵按下時(shí),發(fā)送該鍵的接通掃描碼n鍵松開(kāi)時(shí),發(fā)送該鍵的斷開(kāi)掃描碼鍵松開(kāi)時(shí),發(fā)送該鍵的斷開(kāi)掃描碼n若一直按住某鍵,則以拍發(fā)速率(每秒若一直按住某鍵,則以拍發(fā)速率(每秒230次)連續(xù)發(fā)送該鍵的接通掃描碼次)連續(xù)發(fā)送

40、該鍵的接通掃描碼接通掃描碼反映該鍵在鍵盤(pán)上的位置接通掃描碼反映該鍵在鍵盤(pán)上的位置斷開(kāi)掃描碼(接通掃描碼最高位置斷開(kāi)掃描碼(接通掃描碼最高位置1 1)接通掃描碼接通掃描碼80H80H2. 鍵盤(pán)接口電路的工作過(guò)程n接收一個(gè)串行形式字符以后,進(jìn)行串并轉(zhuǎn)換接收一個(gè)串行形式字符以后,進(jìn)行串并轉(zhuǎn)換n然后產(chǎn)生鍵盤(pán)中斷然后產(chǎn)生鍵盤(pán)中斷IRQ1請(qǐng)求,等待讀取鍵盤(pán)數(shù)請(qǐng)求,等待讀取鍵盤(pán)數(shù)據(jù)據(jù)nCPU響應(yīng)中斷,則進(jìn)入響應(yīng)中斷,則進(jìn)入09H鍵盤(pán)中斷服務(wù)程序鍵盤(pán)中斷服務(wù)程序: 讀取鍵盤(pán)掃描碼:用讀取鍵盤(pán)掃描碼:用IN AL,60H即可即可 響應(yīng)鍵盤(pán):系統(tǒng)使響應(yīng)鍵盤(pán):系統(tǒng)使PB71 允許鍵盤(pán)工作:系統(tǒng)使允許鍵盤(pán)工作:系統(tǒng)使

41、PB70 處理鍵盤(pán)數(shù)據(jù)處理鍵盤(pán)數(shù)據(jù) 給給8259A中斷結(jié)束中斷結(jié)束EOI命令,中斷返回命令,中斷返回3. PC機(jī)鍵盤(pán)中斷服務(wù)程序n09H號(hào)中斷服務(wù)程序(號(hào)中斷服務(wù)程序(kbint過(guò)程)過(guò)程)n完成常規(guī)的操作完成常規(guī)的操作n處理鍵盤(pán)數(shù)據(jù):將獲取的掃描碼通過(guò)查表轉(zhuǎn)換處理鍵盤(pán)數(shù)據(jù):將獲取的掃描碼通過(guò)查表轉(zhuǎn)換為對(duì)應(yīng)的為對(duì)應(yīng)的ASCII碼送緩沖區(qū)。對(duì)于不能顯示的碼送緩沖區(qū)。對(duì)于不能顯示的按鍵,則轉(zhuǎn)換為按鍵,則轉(zhuǎn)換為0,且不再送至緩沖區(qū),且不再送至緩沖區(qū)n鍵盤(pán)鍵盤(pán)I/O功能程序(功能程序(kbget子程序)子程序)n從緩沖區(qū)中讀取轉(zhuǎn)換后的從緩沖區(qū)中讀取轉(zhuǎn)換后的ASCII碼碼n功能調(diào)用(主程序)功能調(diào)用(主

42、程序)n循環(huán)顯示鍵入的字符循環(huán)顯示鍵入的字符鍵盤(pán)緩沖區(qū)n中斷服務(wù)程序與子程序之間傳遞參數(shù)中斷服務(wù)程序與子程序之間傳遞參數(shù)n先進(jìn)先出循環(huán)隊(duì)列先進(jìn)先出循環(huán)隊(duì)列n隊(duì)列空隊(duì)列空n進(jìn)隊(duì)列進(jìn)隊(duì)列n出隊(duì)列出隊(duì)列n隊(duì)列滿隊(duì)列滿buffer0129隊(duì)列始端隊(duì)列始端隊(duì)列末端隊(duì)列末端鍵盤(pán)緩沖區(qū)bufferdb 10 dup(0)bufptr1dw 0;隊(duì)列頭指針隊(duì)列頭指針bufptr2dw 0;隊(duì)列尾指針隊(duì)列尾指針例11.4buffer0129隊(duì)列始端隊(duì)列始端隊(duì)列末端隊(duì)列末端bufptr1bufptr2鍵盤(pán)代碼表scantbdb 0,1,1234567890-=,08h;鍵盤(pán)第鍵盤(pán)第1排的按鍵,從排的按鍵,從ESC

43、到退格到退格db 0,qwertyuiop,0dh;鍵盤(pán)第鍵盤(pán)第2排的按鍵,從排的按鍵,從Tab到回車(chē)到回車(chē)db 0,0,789-456+1230.;右邊小鍵盤(pán),從右邊小鍵盤(pán),從Num Lock到到Del例11.4設(shè)置中斷向量1mov ax,3509hint 21hpush espush bx;保存保存09H號(hào)原中斷向量號(hào)原中斷向量cli;關(guān)中斷關(guān)中斷push ds;設(shè)置設(shè)置09H號(hào)新中斷向量號(hào)新中斷向量mov ax,seg kbintmov ds,axmov dx,offset kbint例11.4設(shè)置中斷向量2mov ax,2509hint 21hpop dsin al,21h;允許允許I

44、RQ1中斷,其他不變中斷,其他不變push axand al,0fdhout 21h,alsti;開(kāi)中斷開(kāi)中斷例11.4調(diào)用并顯示start1:call kbget ;獲取按鍵的獲取按鍵的ASCII碼碼cmp al,1jz start2;是是ESC鍵,則退出鍵,則退出push ax;保護(hù)字符保護(hù)字符mov dl,al ;顯示字符顯示字符mov ah,2int 21hpop ax;恢復(fù)字符恢復(fù)字符例11.4處理回車(chē)符cmp al,0dh;該字符是回車(chē)符嗎?該字符是回車(chē)符嗎?jnz start1;不是,取下一個(gè)按鍵字符不是,取下一個(gè)按鍵字符mov dl,0ah;是回車(chē)符,則再進(jìn)行換行是回車(chē)符,則再

45、進(jìn)行換行mov ah,2int 21hjmp start1;繼續(xù)取字符繼續(xù)取字符例11.4恢復(fù)中斷向量start2:clipop axout 21h,alpop dxpop dsmov ax,2509hint 21hstimov ax,4c00h;返回返回DOSint 21h例11.4子程序:判斷緩沖區(qū)空否kbgetprockbget1: push bx;保護(hù)保護(hù)BXclimov bx,bufptr1 ;取頭指針取頭指針cmp bx,bufptr2 ;與尾指針相等否?與尾指針相等否?jnz kbget2;不相等,說(shuō)明緩沖區(qū)有字符,轉(zhuǎn)移不相等,說(shuō)明緩沖區(qū)有字符,轉(zhuǎn)移sti;相等,說(shuō)明緩沖區(qū)空相等

46、,說(shuō)明緩沖區(qū)空pop bx jmp kbget1;等待緩沖區(qū)有字符等待緩沖區(qū)有字符例11.4子程序:獲取按鍵字符kbget2: mov al,bufferbx;取字符送取字符送ALinc bx;隊(duì)列頭指針增量隊(duì)列頭指針增量cmp bx,10;是否指向隊(duì)列末端是否指向隊(duì)列末端jc kbget3;沒(méi)有,轉(zhuǎn)移沒(méi)有,轉(zhuǎn)移mov bx,0;指針指向隊(duì)列末端,則指針指向隊(duì)列末端,則循環(huán)循環(huán),指向始端,指向始端kbget3: mov bufptr1,bx ;設(shè)定新隊(duì)列頭指針設(shè)定新隊(duì)列頭指針stipop bxretkbgetendp例11.4中斷服務(wù)程序:響應(yīng)鍵盤(pán)kbintprocsti;開(kāi)中斷開(kāi)中斷push

47、 ax;保護(hù)寄存器保護(hù)寄存器push bxin al,60h;讀取鍵盤(pán)掃描碼讀取鍵盤(pán)掃描碼push axin al,61h;使使PB71,響應(yīng)鍵盤(pán),響應(yīng)鍵盤(pán)or al,80hout 61h,aland al,7fh;使使PB70,允許鍵盤(pán),允許鍵盤(pán)out 61h,al例11.4中斷服務(wù)程序:數(shù)據(jù)處理pop axtest al,80h;是斷開(kāi)掃描碼是斷開(kāi)掃描碼?jnz kbint2;是,則退出是,則退出mov bx,offset scantb;是接通掃描碼,取表首地址是接通掃描碼,取表首地址 xlat;將掃描碼轉(zhuǎn)換成將掃描碼轉(zhuǎn)換成ASCII碼碼cmp al,0;是否為合法的是否為合法的ASCII

48、碼?碼?jz kbint2;不是,則退出不是,則退出例11.4中斷服務(wù)程序:指針增量mov bx,bufptr2mov bufferbx,al;將將ASCII碼存入緩沖區(qū)隊(duì)列尾碼存入緩沖區(qū)隊(duì)列尾inc bx;隊(duì)列尾指針增量隊(duì)列尾指針增量cmp bx,10;是否指向隊(duì)列末端?是否指向隊(duì)列末端?jc kbint1;沒(méi)有,轉(zhuǎn)移沒(méi)有,轉(zhuǎn)移mov bx,0;指針指向隊(duì)列末端,則指針指向隊(duì)列末端,則循環(huán)循環(huán),指向始端,指向始端例11.4中斷服務(wù)程序:判斷緩沖區(qū)滿否kbint1: cmp bx,bufptr1jz kbint2 ;若隊(duì)列滿,則退出若隊(duì)列滿,則退出mov bufptr2,bx;隊(duì)列不滿,設(shè)置新

49、的隊(duì)列尾指針隊(duì)列不滿,設(shè)置新的隊(duì)列尾指針例11.4bufptr1bufptr2buffer41H031H132H239H9隊(duì)列始端隊(duì)列始端隊(duì)列末端隊(duì)列末端中斷服務(wù)程序:中斷返回kbint2:mov al,20h;向向8259A發(fā)送普通中斷結(jié)束命令發(fā)送普通中斷結(jié)束命令out 20h,alpop bx;恢復(fù)寄存器恢復(fù)寄存器pop axiret ;中斷返回中斷返回kbintendp例11.4實(shí)驗(yàn)實(shí)驗(yàn)6 6 小鍵盤(pán)實(shí)驗(yàn)小鍵盤(pán)實(shí)驗(yàn)n認(rèn)真閱讀教材中掃描法和反轉(zhuǎn)認(rèn)真閱讀教材中掃描法和反轉(zhuǎn)法識(shí)別按鍵的程序段法識(shí)別按鍵的程序段n 延時(shí)子程序可以采用軟件延時(shí)延時(shí)子程序可以采用軟件延時(shí)程序程序n 延時(shí)子程序也可以采

50、用實(shí)時(shí)時(shí)延時(shí)子程序也可以采用實(shí)時(shí)時(shí)鐘的硬件延時(shí),它更精確鐘的硬件延時(shí),它更精確 提示提示11.4 LED數(shù)碼管及其接口n發(fā)光二極管發(fā)光二極管LED是是最簡(jiǎn)單的顯示設(shè)備最簡(jiǎn)單的顯示設(shè)備n由由7段段LED就可以組成的就可以組成的LED數(shù)碼管數(shù)碼管nLED數(shù)碼管廣泛用于單板微型機(jī)、微型機(jī)數(shù)碼管廣泛用于單板微型機(jī)、微型機(jī)控制系統(tǒng)及數(shù)字化儀器中控制系統(tǒng)及數(shù)字化儀器中nLED數(shù)碼管可以顯示內(nèi)存地址和數(shù)據(jù)等數(shù)碼管可以顯示內(nèi)存地址和數(shù)據(jù)等1. LED數(shù)碼管的工作原理n主要部分是主要部分是7段發(fā)光管段發(fā)光管n順時(shí)針?lè)謩e稱(chēng)為順時(shí)針?lè)謩e稱(chēng)為a、b、c、d、e、f、gn有的產(chǎn)品還附帶有一個(gè)小數(shù)點(diǎn)有的產(chǎn)品還附帶有一個(gè)小

51、數(shù)點(diǎn)hn通過(guò)通過(guò)7個(gè)發(fā)光段的不同組合個(gè)發(fā)光段的不同組合n主要顯示主要顯示09n也可顯示也可顯示AF(16進(jìn)制數(shù))進(jìn)制數(shù))n還可顯示個(gè)別特殊字符:、還可顯示個(gè)別特殊字符:、P hgfedcbaLED數(shù)碼管的結(jié)構(gòu)共陽(yáng)極共陽(yáng)極陽(yáng)極陽(yáng)極+5Vabcdefgh陰極陰極abcdefgh共陰極共陰極2. 單個(gè)LED數(shù)碼管的顯示8255APA0PA1PA2PA3PA4PA5PA6PA7驅(qū)驅(qū)動(dòng)動(dòng)電電路路abcdefgh單個(gè)數(shù)碼管的顯示LEDtb db 3fh,06h,5bh,;顯示代碼表顯示代碼表mov al,1;AL要顯示的數(shù)字要顯示的數(shù)字mov bx,offset LEDtbxlat;換碼:換碼:ALDS:

52、BXALmov dx,portout dx,al;輸出顯示輸出顯示軟件譯碼3. 多個(gè)LED數(shù)碼管的顯示n8個(gè)數(shù)碼管:用個(gè)數(shù)碼管:用2個(gè)個(gè)8位輸出端口控制位輸出端口控制n硬件上用公用的驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)各數(shù)碼管硬件上用公用的驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)各數(shù)碼管n軟件上用掃描方法實(shí)現(xiàn)數(shù)碼顯示軟件上用掃描方法實(shí)現(xiàn)數(shù)碼顯示位控制端口電路D7D6D5D4D3D2D1D0陽(yáng)極陽(yáng)極位位0位位1位位2D0D7位控制位控制反反相相寄寄存存驅(qū)驅(qū)動(dòng)動(dòng)bitport, IOW位控制端口作用n控制哪個(gè)(控制哪個(gè)(位位)數(shù)碼管顯示)數(shù)碼管顯示n當(dāng)位控制端口的控制碼某位為低電平時(shí),當(dāng)位控制端口的控制碼某位為低電平時(shí),經(jīng)反相驅(qū)動(dòng),便在相應(yīng)數(shù)碼

53、管的陽(yáng)極加上經(jīng)反相驅(qū)動(dòng),便在相應(yīng)數(shù)碼管的陽(yáng)極加上了高電平,這個(gè)數(shù)碼管就可以顯示數(shù)據(jù)了高電平,這個(gè)數(shù)碼管就可以顯示數(shù)據(jù)位控制:位控制:Di0,相應(yīng)位發(fā)光,相應(yīng)位發(fā)光D7D6D5D4D3D2D1D0位位7位位6位位5位位4位位3位位2位位1位位0段控制端口電路D0D1D2D3D4D5D6D7陽(yáng)極陽(yáng)極位位0a b c d e f g h位位1位位2D0D7段控制段控制正正相相寄寄存存驅(qū)驅(qū)動(dòng)動(dòng)segport, IOW段控制端口作用n控制哪個(gè)控制哪個(gè)段段顯示,決定具體顯示什么數(shù)碼顯示,決定具體顯示什么數(shù)碼n段控制端口送出顯示代碼到數(shù)碼管相應(yīng)段段控制端口送出顯示代碼到數(shù)碼管相應(yīng)段n此端口由此端口由8個(gè)數(shù)碼

54、管共用個(gè)數(shù)碼管共用段控制:段控制:Di0,相應(yīng)段發(fā)光,相應(yīng)段發(fā)光D7D6D5D4D3D2D1D0hgfedcba通過(guò)位、段控制端口的共同作用通過(guò)位、段控制端口的共同作用才能確定才能確定哪個(gè)數(shù)碼管哪個(gè)數(shù)碼管顯示顯示什么數(shù)碼什么數(shù)碼數(shù)碼緩沖區(qū);數(shù)據(jù)段數(shù)據(jù)段LEDdtdb 8 dup(0);數(shù)碼緩沖區(qū)數(shù)碼緩沖區(qū);主程序主程序mov si,offset LEDdtcall LEDdisp;調(diào)用顯示子程序調(diào)用顯示子程序例11.5獲取顯示代碼LEDdisp procpush axpush bxpush dxmov bx,offset LEDtbmov ah,0feh;指向最左邊數(shù)碼管指向最左邊數(shù)碼管LED

55、1: lodsb;取出要顯示的數(shù)字取出要顯示的數(shù)字xlat cs:LEDtb;得到顯示代碼:得到顯示代碼:ALCS:BXAL例11.5數(shù)碼顯示mov dx,segport;segport為段控制端口為段控制端口out dx,al;送出段碼送出段碼mov al,ah;取出位顯示代碼取出位顯示代碼 mov dx,bitport;bitport為位控制端口為位控制端口out dx,al;送出位碼送出位碼call delay;實(shí)現(xiàn)數(shù)碼管延時(shí)顯示實(shí)現(xiàn)數(shù)碼管延時(shí)顯示例11.5顯示下位數(shù)碼rol ah,1;指向下一個(gè)數(shù)碼管指向下一個(gè)數(shù)碼管 cmp ah,0feh ;最右邊的數(shù)碼管?最右邊的數(shù)碼管?jnz L

56、ED1;顯示下一個(gè)數(shù)字顯示下一個(gè)數(shù)字pop dxpop bxpop axret;8位數(shù)碼管都顯示位數(shù)碼管都顯示LEDtbdb 0c0h,0f9h, LEDdisp endp例11.5軟件延時(shí)timer= 10 ;延時(shí)常量延時(shí)常量delayprocpush bxpush cxmov bx,timer;外循環(huán):外循環(huán):timer確定的次數(shù)確定的次數(shù)delay1:xor cx,cxdelay2:loop delay2;內(nèi)循環(huán):內(nèi)循環(huán):216次循環(huán)次循環(huán)例11.5軟件延時(shí)dec bxjnz delay1pop cxpop bxretdelayendp例11.5通過(guò)控制重復(fù)頻率和延時(shí)時(shí)間通過(guò)控制重復(fù)頻率

57、和延時(shí)時(shí)間就可以得到各種顯示效果就可以得到各種顯示效果實(shí)驗(yàn)實(shí)驗(yàn)7 LED7 LED數(shù)碼管顯示實(shí)驗(yàn)數(shù)碼管顯示實(shí)驗(yàn)n 請(qǐng)認(rèn)真閱讀教材中請(qǐng)認(rèn)真閱讀教材中8位數(shù)碼管位數(shù)碼管顯示子程序顯示子程序n 延時(shí)子程序可以采用軟件延時(shí)延時(shí)子程序可以采用軟件延時(shí)程序程序n 延時(shí)子程序建議采用實(shí)時(shí)時(shí)鐘延時(shí)子程序建議采用實(shí)時(shí)時(shí)鐘的硬件延時(shí),它更精確,也便于的硬件延時(shí),它更精確,也便于控制時(shí)間控制時(shí)間 提示提示11.5 并行打印機(jī)接口n一般采用一般采用Centronics標(biāo)準(zhǔn)接口或其簡(jiǎn)化接口標(biāo)準(zhǔn)接口或其簡(jiǎn)化接口nCentronics接口是的一個(gè)并行接口協(xié)議接口是的一個(gè)并行接口協(xié)議n這個(gè)協(xié)議規(guī)定了這個(gè)協(xié)議規(guī)定了36腳簧式插頭座和信號(hào)含義腳簧式插頭座和信號(hào)含義n其中前其中前11條線是關(guān)鍵信號(hào),他們是條線是關(guān)鍵信號(hào),他們是8條數(shù)據(jù)線、條數(shù)據(jù)線、3條聯(lián)絡(luò)線(選通、響應(yīng)和打印機(jī)忙)條聯(lián)絡(luò)線(選通、響應(yīng)和打印機(jī)忙)n還有一些特殊控制線、狀態(tài)線還有一些特殊控制線、狀態(tài)線nPC系列

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論