2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩124頁(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) 8255A的工作方式和編程 8255A的應(yīng)用 簡(jiǎn)易鍵盤(pán)的掃描程序 LED數(shù)碼管的多位顯示,并行數(shù)據(jù)傳輸方式,以計(jì)算機(jī)的字長(zhǎng),通常是8位、16位或32位為傳輸單位,一次傳送一個(gè)字長(zhǎng)的數(shù)據(jù)適合于外部設(shè)備與微機(jī)之間進(jìn)行近距離、大量和快速的信息交換例如:微機(jī)與并行接口打印機(jī)、磁盤(pán)驅(qū)動(dòng)器微機(jī)系統(tǒng)中最基本的信息交換方法例如:系統(tǒng)板上各部件之間,接口電路板上各部件之間,11.1 并

2、行接口電路8255A,具有多種功能的可編程并行接口電路芯片最基本的接口電路:三態(tài)緩沖器和鎖存器與CPU間、與外設(shè)間的接口電路:狀態(tài)寄存器和控制寄存器還有端口的譯碼和控制電路、中斷控制電路分3個(gè)端口,共24個(gè)外設(shè)引腳共三種輸入輸出工作方式,11.1.1 8255A的內(nèi)部結(jié)構(gòu)和引腳,1. 外設(shè)數(shù)據(jù)端口,端口A:PA0~PA7A組,支持工作方式0、1、2端口B:PB0~PB7B組,支持工作方式0、1端口C:PC0~PC7

3、僅支持工作方式0A組控制高4位PC4~PC7B組控制低4位PC0~PC3,端口A:PA0~PA7常作數(shù)據(jù)端口,功能最強(qiáng)大端口B:PB0~PB7常作數(shù)據(jù)端口端口C:PC0~PC7可作數(shù)據(jù)、狀態(tài)和控制端口分兩個(gè)4位,每位可獨(dú)立操作控制最靈活,最難掌握,2. 與處理器接口,D0 ~ D7數(shù)據(jù)線A0 ~ A1地址線RD*讀信號(hào)WR*寫(xiě)信號(hào)CS*片選信號(hào)RESET復(fù)位信號(hào),11.1.2 8255A的工作方式,方式

4、0:基本輸入輸出方式適用于無(wú)條件傳送和查詢(xún)方式的接口電路方式1:選通輸入輸出方式適用于查詢(xún)和中斷方式的接口電路方式2:雙向選通傳送方式適用于與雙向傳送數(shù)據(jù)的外設(shè)適用于查詢(xún)和中斷方式的接口電路,方式0輸入時(shí)序,,請(qǐng)?bào)w會(huì)這里8255A的數(shù)據(jù)緩沖作用,方式0輸出時(shí)序,8255A對(duì)CPU通過(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)

5、請(qǐng)求CPU接收數(shù)據(jù),方式1輸入引腳:B端口,方式1需借用端口C用做聯(lián)絡(luò)信號(hào)同時(shí)還具有中斷請(qǐng)求和屏蔽功能,方式1輸入聯(lián)絡(luò)信號(hào),STB*——選通信號(hào),低電平有效由外設(shè)提供的輸入信號(hào),當(dāng)其有效時(shí),將輸入設(shè)備送來(lái)的數(shù)據(jù)鎖存至8255A的輸入鎖存器IBF——輸入緩沖器滿信號(hào),高電平有效8255A輸出的聯(lián)絡(luò)信號(hào)。當(dāng)其有效時(shí),表示數(shù)據(jù)已鎖存在輸入鎖存器INTR——中斷請(qǐng)求信號(hào),高電平有效8255A輸出的信號(hào),可用于向CPU提出中斷請(qǐng)求,

6、要求CPU讀取外設(shè)數(shù)據(jù),方式1輸入時(shí)序,STB*和IBF是外設(shè)和8255A間的一對(duì)應(yīng)答聯(lián)絡(luò)信號(hào),為的是可靠地輸入數(shù)據(jù),方式1中斷控制,8255A的中斷由中斷允許觸發(fā)器INTE控制置位允許中斷,復(fù)位禁止中斷對(duì)INTE的操作通過(guò)寫(xiě)入端口C的對(duì)應(yīng)位實(shí)現(xiàn),INTE觸發(fā)器對(duì)應(yīng)端口C的位是作應(yīng)答聯(lián)絡(luò)信號(hào)的輸入信號(hào)的哪一位,只要對(duì)那一位置位/復(fù)位就可以控制INTE觸發(fā)器選通輸入方式下端口A的INTEA對(duì)應(yīng)PC4端口B的INTEB對(duì)應(yīng)PC

7、2,方式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ù),方式1輸出引腳:B端口,方式1輸出聯(lián)絡(luò)信號(hào),OBF*——輸出緩沖器滿信號(hào),低有效8255A輸出給外設(shè)的一個(gè)控制信號(hào),當(dāng)其有效時(shí),表示CPU已把數(shù)據(jù)輸出給指定的端口,外設(shè)可以取走ACK*——響應(yīng)信號(hào),低有效外設(shè)的響應(yīng)信號(hào),指示8255A的端口數(shù)據(jù)已由外設(shè)接受INTR——中斷請(qǐng)求信號(hào),高

8、有效當(dāng)輸出設(shè)備已接受數(shù)據(jù)后,8255A輸出此信號(hào)向CPU提出中斷請(qǐng)求,要求CPU繼續(xù)提供數(shù)據(jù),端口A的INTEA對(duì)應(yīng)PC6端口B的INTEB對(duì)應(yīng)PC2,方式1輸出時(shí)序,OBF*和ACK*是外設(shè)和8255A間的一對(duì)應(yīng)答聯(lián)絡(luò)信號(hào),為的是可靠地輸出數(shù)據(jù),方式2雙向方式,方式2將方式1的選通輸入輸出功能組合成一個(gè)雙向數(shù)據(jù)端口,可以發(fā)送數(shù)據(jù)和接收數(shù)據(jù)只有端口A可以工作于方式2,需要利用端口C的5個(gè)信號(hào)線,其作用與方式1相同方式2的數(shù)據(jù)

9、輸入過(guò)程與方式1的輸入方式一樣方式2的數(shù)據(jù)輸出過(guò)程與方式1的輸出方式有一點(diǎn)不同:數(shù)據(jù)輸出時(shí)8255A不是在OBF*有效時(shí)向外設(shè)輸出數(shù)據(jù),而是在外設(shè)提供響應(yīng)信號(hào)ACK*時(shí)才送出數(shù)據(jù),方式2雙向引腳,用PC6設(shè)置INTE1(輸出)用PC4設(shè)置INTE2(輸入)輸入和輸出中斷通過(guò)或門(mén)輸出INTRA信號(hào),方式2雙向時(shí)序,11.1.3 8255A的編程,初始化編程:一個(gè)方式控制字采用控制I/O地址:A1A0=11工作過(guò)程中:通過(guò)數(shù)據(jù)

10、端口對(duì)外設(shè)數(shù)據(jù)進(jìn)行讀寫(xiě)數(shù)據(jù)讀寫(xiě)利用端口A、B和C的I/O地址,A1A0依次等于00、01、10IBM PC/XT機(jī)上,端口A、B、C和控制端口的I/O地址為60H、61H、62H和63H,1. 寫(xiě)入方式控制字:控制字格式,1. 寫(xiě)入方式控制字:示例,要求:A端口:方式1輸入C端口上半部:輸出,C口下半部:輸入B端口:方式0輸出方式控制字:10110001B或B1H初始化的程序段:mov dx,0fffeh;假設(shè)控

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

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

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

14、位內(nèi)部中斷允許觸發(fā)器INTE,3. 讀寫(xiě)端口C:歸納4,讀取的C端口數(shù)據(jù)有兩種情況未被A和B端口征用的引腳:將從定義為輸入的端口讀到引腳輸入信息;將從定義為輸出的端口讀到輸出鎖存器中的信息被A和B端口征用作為聯(lián)絡(luò)線的引腳:將讀到反映8255A狀態(tài)的狀態(tài)字,端口C的狀態(tài)字,,,,11.2 8255A的應(yīng)用,作為通用的并行接口電路芯片,825A具有廣泛的應(yīng)用應(yīng)用在IBM PC/XT微機(jī)上應(yīng)用于打印機(jī)接口電路連接簡(jiǎn)易鍵盤(pán)驅(qū)動(dòng)L

15、ED數(shù)碼管……,11.2.1 8255A在IBM PC/XT上的應(yīng)用,工作在基本輸入/輸出方式0端口A為方式0輸入,用來(lái)讀取鍵盤(pán)掃描碼端口B工作于方式0輸出,例如控制揚(yáng)聲器等端口C為方式0輸入,讀取系統(tǒng)狀態(tài)和配置系統(tǒng)的初始化編程:mov al,10011001b;方式控制字99Hout 63h,al,打印機(jī)接口的信號(hào)與時(shí)序,主機(jī)把數(shù)據(jù)送給引腳DATA0~DATA7同時(shí)送出數(shù)據(jù)選通信號(hào)STROBE*打印機(jī)在BUS

16、Y信號(hào)線上發(fā)出忙信號(hào)打印機(jī)處理好輸入的數(shù)據(jù)時(shí)撤消忙信號(hào)同時(shí)又送出一個(gè)響應(yīng)信號(hào)ACK*,11.2.2 用8255A方式0與打印機(jī)接口,8255A的初始化,mov dx,0fffeh;控制端口地址:FFFEHmov al,10000001B;方式控制字:91Hout dx,al;A端口方式0輸出,C端口上輸出、下輸入mov al,00001111B;端口C的復(fù)位置位控制字,使PC7=1out dx,a

17、l,例11.1,打印子程序:查詢(xún),printcprocpush axpush dxprn: mov dx,0fffch;讀取端口Cin al,dx;查詢(xún)打印機(jī)狀態(tài)and al,04h;PC2=BUSY=0?jnz prn;PC2=1,打印機(jī)忙,則循環(huán)等待,例11.1,打印子程序:輸出,mov dx,0fff8h;PC2=0,打印機(jī)不忙,則輸出數(shù)據(jù)mov al,ahout dx,

18、al;將打印數(shù)據(jù)從端口A輸出,例11.1,打印子程序:打印,mov dx,0fffeh;從PC7送出控制低脈沖mov al,00001110B;置STROBE*=0out dx,alnop;產(chǎn)生一定寬度的低電平nopmov al,00001111B;置=1out dx,al;最終,STROBE*產(chǎn)生低脈沖信號(hào),例11.1,打印子程序:返回,pop dxpop axretprintce

19、ndp,例11.1,11.2.3 用8255A方式1與打印機(jī)接口,8255A方式1與打印機(jī)接口時(shí)序配合,方式1時(shí)序,打印機(jī)時(shí)序,8255A的初始化,mov dx,0fffehmov al,0a0hout dx,almov al,0ch;使INTEA(PC6)為0,禁止中斷out dx,al……mov cx,counter;打印字節(jié)數(shù)送CXmov bx,offset buffer;取字符串首地址c

20、all prints;調(diào)用打印子程序,例11.2,打印子程序:輸出,printsprocpush ax;保護(hù)寄存器push dxprint1:mov al,[bx];取一個(gè)數(shù)據(jù)mov dx,0fff8hout dx,al;從端口A輸出,例11.2,打印子程序:查詢(xún),mov dx,0fffchprint2:in al,dxtest al,80h;檢測(cè)(PC7)為1否?jz prin

21、t2;為0,說(shuō)明打印機(jī)沒(méi)有響應(yīng),繼續(xù)檢測(cè),例11.2,打印子程序:返回,inc bx;為1,說(shuō)明打印機(jī)已接受數(shù)據(jù)loop print1;準(zhǔn)備取下一個(gè)數(shù)據(jù)輸出pop dx;打印結(jié)束,恢復(fù)寄存器pop axret;返回printsendp,例11.2,11.2.4 雙機(jī)并行通信接口,甲機(jī)的初始化,mov dx,0fffehmov al,0a0hout dx,al;工作方式字:端口A方

22、式1輸出mov al,0dh;使PC6(INTEA)=1,允許中斷out dx,al,例11.3,甲機(jī)發(fā)送程序,trsmt: mov dx,0fffchin al,dx;查詢(xún)PC3(INTRA)=1?and al,08hjz trsmtmov dx,0fff8h;發(fā)送數(shù)據(jù)mov al,ahout dx,al,例11.3,乙機(jī)的初始化,mov dx,0fffehmov al,

23、98hout dx,al;工作方式字:端口A方式0輸入mov al,01h;使PC0(ACK*)=1,因尚未收到數(shù)據(jù)out dx,al,例11.3,乙機(jī):查詢(xún)接收,receive:mov dx,0fffchin al,dx;查詢(xún)PC4(OBF*)=0?and al,10hjnz receivemov dx,0fff8h ;接收數(shù)據(jù)in al,dxmov ah,al,

24、例11.3,乙機(jī):接收響應(yīng),mov dx,0fffehmov al,00h;使PC0(ACK*)=0out dx,alnop;適當(dāng)延時(shí),產(chǎn)生一定寬度的低脈沖nopmov al,01h;使PC0(ACK*)=1out dx,al;產(chǎn)生低脈沖ACK*信號(hào),例11.3,實(shí)驗(yàn)5 并行接口實(shí)驗(yàn),要求⑴類(lèi)似習(xí)題11.8 要求⑵對(duì)應(yīng)例題11.2 請(qǐng)?jiān)趯?duì)比過(guò)程中,掌握例題、習(xí)題和完成實(shí)驗(yàn)要求,提示,11.3

25、 鍵盤(pán)及其接口,鍵盤(pán)是微機(jī)系統(tǒng)最常使用的輸入設(shè)備小鍵盤(pán):適用于單板機(jī)或以微處理器為基礎(chǔ)的儀器,實(shí)現(xiàn)數(shù)據(jù)、地址、命令及指令等的輸入獨(dú)立鍵盤(pán):通過(guò)5芯電纜與PC微機(jī)主機(jī)連接,11.3.1 簡(jiǎn)易鍵盤(pán)的工作原理,最簡(jiǎn)單的線性結(jié)構(gòu)鍵盤(pán)每一個(gè)引腳連接一個(gè)鍵輸入0/1反映健是否高低,11.3.1 簡(jiǎn)易鍵盤(pán)的工作原理,常用的矩陣結(jié)構(gòu)鍵盤(pán)每行連接一個(gè)引腳每列連接一個(gè)引腳利用控制線為低、讀取檢測(cè)線來(lái)識(shí)別閉合鍵,1. 掃描法,先使第0行

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

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

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

29、輸出端口,將列線作為檢測(cè)線接一個(gè)輸入端口CPU通過(guò)輸出端口將行線(控制線)全部設(shè)置為低電平,然后從輸入端口讀取列線(檢測(cè)線)然后,將行線和列線的作用互換,即將列線作為控制線接輸出端口,行線作為檢測(cè)線接輸入端口將剛才讀得的列值從列線所接端口輸出,再讀取行線的輸入值這樣,當(dāng)一個(gè)鍵被按下時(shí),必定可以讀得一對(duì)唯一的行值和列值,條件:連接行線和列線的接口電路必須支持動(dòng)態(tài)改變輸入、輸出方式,第1段:是否有鍵按下,……;設(shè)置行線接輸出

30、端口,列線接輸入端口key2:mov al,00mov dx,rowportout dx,al;設(shè)置行線全為低mov dx,colportin al,dx;讀取列值cmp al,0ffhjz key2;無(wú)閉合鍵,循環(huán)等待push ax;有閉合鍵,保存列值 push ax,鍵盤(pán)掃描程序,第2段:識(shí)別按鍵(反轉(zhuǎn)法),……;設(shè)置行線接輸入端口,列線接輸出端mov dx,c

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

32、盤(pán)的鍵代碼表chardb ……;鍵0的代碼值db ……;鍵1的代碼值……;其他鍵的代碼值,鍵盤(pán)掃描程序,第3段:查找鍵代碼,mov si,offset tablemov di,offset charmov cx,64;CX=鍵的個(gè)數(shù)key3:cmp ax,[si] ;與鍵值比較 jz key4;相同,說(shuō)明查到inc si;不相同,繼續(xù)比較inc siinc di

33、loop key3jmp key1;全部比較完,仍無(wú)相同,說(shuō)明是重鍵,鍵盤(pán)掃描程序,第4段:等待按鍵釋放,key4:mov al,[di];獲取鍵代碼送AL……;判斷按鍵是否釋放,沒(méi)有則等待call delay;按鍵釋放,延時(shí)消除抖動(dòng)……;后續(xù)處理,鍵盤(pán)掃描程序,3. 抖動(dòng)和重健問(wèn)題,機(jī)械按鍵存在抖動(dòng)現(xiàn)象當(dāng)按下或釋放一個(gè)鍵時(shí),往往會(huì)出現(xiàn)按鍵在閉合位置和斷開(kāi)位置之間跳幾下才穩(wěn)定到閉合狀態(tài)

34、抖動(dòng)的持續(xù)時(shí)間通常不大于10ms采用硬件消抖電路或軟件延時(shí)方法解決重鍵指兩個(gè)或多個(gè)鍵同時(shí)閉合出現(xiàn)重鍵時(shí),讀取的鍵值必然出現(xiàn)有一個(gè)以上的0是否給予識(shí)別和識(shí)別哪一個(gè)鍵,重健問(wèn)題的處理,簡(jiǎn)單情況:不予識(shí)別,認(rèn)為是錯(cuò)誤的按鍵通常情況:只承認(rèn)先識(shí)別出來(lái)的鍵連鎖法:直到所有鍵都釋放后,讀入下一個(gè)鍵巡回法:等被識(shí)別的鍵釋放以后,就可以對(duì)其他閉合鍵作識(shí)別,而不必等待全部鍵釋放正常的組合鍵:都識(shí)別出來(lái),11.3.2 PC機(jī)鍵盤(pán)的工作原理

35、,1. PC機(jī)鍵盤(pán)的工作過(guò)程,鍵盤(pán)電路正常工作時(shí)不斷地掃描鍵盤(pán)矩陣有按鍵,則確定按鍵位置之后以串行數(shù)據(jù)形式發(fā)送給系統(tǒng)板鍵盤(pán)接口電路鍵按下時(shí),發(fā)送該鍵的接通掃描碼鍵松開(kāi)時(shí),發(fā)送該鍵的斷開(kāi)掃描碼若一直按住某鍵,則以拍發(fā)速率(每秒2~30次)連續(xù)發(fā)送該鍵的接通掃描碼,接通掃描碼反映該鍵在鍵盤(pán)上的位置斷開(kāi)掃描碼(接通掃描碼最高位置1)=接通掃描碼+80H,2. 鍵盤(pán)接口電路的工作過(guò)程,接收一個(gè)串行形式字符以后,進(jìn)行串并轉(zhuǎn)換然后

36、產(chǎn)生鍵盤(pán)中斷IRQ1請(qǐng)求,等待讀取鍵盤(pán)數(shù)據(jù)CPU響應(yīng)中斷,則進(jìn)入09H鍵盤(pán)中斷服務(wù)程序:① 讀取鍵盤(pán)掃描碼:用IN AL,60H即可② 響應(yīng)鍵盤(pán):系統(tǒng)使PB7=1③ 允許鍵盤(pán)工作:系統(tǒng)使PB7=0④ 處理鍵盤(pán)數(shù)據(jù)⑤ 給8259A中斷結(jié)束EOI命令,中斷返回,3. PC機(jī)鍵盤(pán)中斷服務(wù)程序,09H號(hào)中斷服務(wù)程序(kbint過(guò)程)完成常規(guī)的操作處理鍵盤(pán)數(shù)據(jù):將獲取的掃描碼通過(guò)查表轉(zhuǎn)換為對(duì)應(yīng)的ASCII碼送緩沖區(qū)。對(duì)

37、于不能顯示的按鍵,則轉(zhuǎn)換為0,且不再送至緩沖區(qū)鍵盤(pán)I/O功能程序(kbget子程序)從緩沖區(qū)中讀取轉(zhuǎn)換后的ASCII碼功能調(diào)用(主程序)循環(huán)顯示鍵入的字符,鍵盤(pán)緩沖區(qū),中斷服務(wù)程序與子程序之間傳遞參數(shù)先進(jìn)先出循環(huán)隊(duì)列隊(duì)列空進(jìn)隊(duì)列出隊(duì)列隊(duì)列滿,鍵盤(pán)緩沖區(qū),bufferdb 10 dup(0)bufptr1dw 0;隊(duì)列頭指針bufptr2dw 0;隊(duì)列尾指針,例11.4,鍵盤(pán)代碼表,scantbdb 0,

38、1,’1234567890-=’,08h;鍵盤(pán)第1排的按鍵,從ESC到退格db 0,’qwertyuiop[]’,0dh;鍵盤(pán)第2排的按鍵,從Tab到回車(chē)……db 0,0,’789-456+1230.’;右邊小鍵盤(pán),從Num Lock到Del,例11.4,設(shè)置中斷向量1,mov ax,3509hint 21hpush espush bx;保存09H號(hào)原中斷向量cli;關(guān)中斷push

39、ds;設(shè)置09H號(hào)新中斷向量mov ax,seg kbintmov ds,axmov dx,offset kbint,例11.4,設(shè)置中斷向量2,mov ax,2509hint 21hpop dsin al,21h;允許IRQ1中斷,其他不變push axand al,0fdhout 21h,alsti;開(kāi)中斷,例11.4,調(diào)用并顯示,start1:call kbget;獲取按鍵的ASC

40、II碼cmp al,1jz start2;是ESC鍵,則退出push ax;保護(hù)字符mov dl,al;顯示字符mov ah,2int 21hpop ax;恢復(fù)字符,例11.4,處理回車(chē)符,cmp al,0dh;該字符是回車(chē)符嗎?jnz start1;不是,取下一個(gè)按鍵字符mov dl,0ah;是回車(chē)符,則再進(jìn)行換行mov ah,2int 21hjmp star

41、t1;繼續(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ù)BXclimov bx,bufptr1;取頭指針

42、cmp bx,bufptr2;與尾指針相等否?jnz kbget2;不相等,說(shuō)明緩沖區(qū)有字符,轉(zhuǎn)移sti;相等,說(shuō)明緩沖區(qū)空pop bx jmp kbget1;等待緩沖區(qū)有字符,例11.4,子程序:獲取按鍵字符,kbget2:mov al,buffer[bx];取字符送ALinc bx;隊(duì)列頭指針增量cmp bx,10;是否指向隊(duì)列末端jc kbget3;沒(méi)有,轉(zhuǎn)移m

43、ov bx,0;指針指向隊(duì)列末端,則循環(huán),指向始端kbget3:mov bufptr1,bx;設(shè)定新隊(duì)列頭指針stipop bxretkbgetendp,例11.4,中斷服務(wù)程序:響應(yīng)鍵盤(pán),kbintprocsti;開(kāi)中斷push ax;保護(hù)寄存器push bxin al,60h;讀取鍵盤(pán)掃描碼push axin al,61h;使PB7=1,響應(yīng)鍵盤(pán)or

44、 al,80hout 61h,aland al,7fh;使PB7=0,允許鍵盤(pán)out 61h,al,例11.4,中斷服務(wù)程序:數(shù)據(jù)處理,pop axtest al,80h;是斷開(kāi)掃描碼?jnz kbint2;是,則退出mov bx,offset scantb;是接通掃描碼,取表首地址 xlat;將掃描碼轉(zhuǎn)換成ASCII碼cmp al,0;是否為合法的ASCII碼?jz kbint2

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

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

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

48、顯示0~9也可顯示A~F(16進(jìn)制數(shù))還可顯示個(gè)別特殊字符:-、P,LED數(shù)碼管的結(jié)構(gòu),共陽(yáng)極,共陰極,2. 單個(gè)LED數(shù)碼管的顯示,單個(gè)數(shù)碼管的顯示,LEDtbdb 3fh,06h,5bh,……;顯示代碼表……mov al,1;AL←要顯示的數(shù)字mov bx,offset LEDtbxlat;換碼:AL←DS:[BX+AL]mov dx,portout dx,al;輸出顯示,軟件譯碼,3.

49、多個(gè)LED數(shù)碼管的顯示,8個(gè)數(shù)碼管:用2個(gè)8位輸出端口控制硬件上用公用的驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)各數(shù)碼管軟件上用掃描方法實(shí)現(xiàn)數(shù)碼顯示,位控制端口電路,位控制端口作用,控制哪個(gè)(位)數(shù)碼管顯示當(dāng)位控制端口的控制碼某位為低電平時(shí),經(jīng)反相驅(qū)動(dòng),便在相應(yīng)數(shù)碼管的陽(yáng)極加上了高電平,這個(gè)數(shù)碼管就可以顯示數(shù)據(jù),,位控制:Di=0,相應(yīng)位發(fā)光,,,,段控制端口電路,D0D1D2D3D4D5D6D7,陽(yáng)極,位0,a b c d e f g h,

50、位1,位2,,,,,,,,,,,,,,,,,,,D0~D7,段控制,,,,正相寄存驅(qū)動(dòng),段控制端口作用,控制哪個(gè)段顯示,決定具體顯示什么數(shù)碼段控制端口送出顯示代碼到數(shù)碼管相應(yīng)段此端口由8個(gè)數(shù)碼管共用,,段控制:Di=0,相應(yīng)段發(fā)光,通過(guò)位、段控制端口的共同作用才能確定哪個(gè)數(shù)碼管顯示什么數(shù)碼,數(shù)碼緩沖區(qū),;數(shù)據(jù)段LEDdtdb 8 dup(0);數(shù)碼緩沖區(qū);主程序mov si,offset LEDdt

51、call LEDdisp;調(diào)用顯示子程序,例11.5,獲取顯示代碼,LEDdispprocpush axpush bxpush dxmov bx,offset LEDtbmov ah,0feh;指向最左邊數(shù)碼管LED1: lodsb;取出要顯示的數(shù)字xlat cs:LEDtb;得到顯示代碼:AL←CS:[BX+AL],例11.5,數(shù)碼顯示,mov dx,segport;segpo

52、rt為段控制端口out dx,al;送出段碼mov al,ah;取出位顯示代碼 mov dx,bitport;bitport為位控制端口out dx,al;送出位碼call delay;實(shí)現(xiàn)數(shù)碼管延時(shí)顯示,例11.5,顯示下位數(shù)碼,rol ah,1;指向下一個(gè)數(shù)碼管 cmp ah,0feh;最右邊的數(shù)碼管?jnz LED1;顯示下一個(gè)數(shù)字pop dxpop bxpop a

53、xret;8位數(shù)碼管都顯示LEDtbdb 0c0h,0f9h, ……LEDdispendp,例11.5,軟件延時(shí),timer= 10;延時(shí)常量delayprocpush bxpush cxmov bx,timer;外循環(huán):timer確定的次數(shù)delay1:xor cx,cxdelay2:loop delay2;內(nèi)循環(huán):216次循環(huán),例11.5,軟件延時(shí),dec bxjnz

54、 delay1pop cxpop bxretdelayendp,例11.5,通過(guò)控制重復(fù)頻率和延時(shí)時(shí)間就可以得到各種顯示效果,實(shí)驗(yàn)7 LED數(shù)碼管顯示實(shí)驗(yàn),請(qǐng)認(rèn)真閱讀教材中8位數(shù)碼管顯示子程序 延時(shí)子程序可以采用軟件延時(shí)程序 延時(shí)子程序建議采用實(shí)時(shí)時(shí)鐘的硬件延時(shí),它更精確,也便于控制時(shí)間,提示,11.5 并行打印機(jī)接口,一般采用Centronics標(biāo)準(zhǔn)接口或其簡(jiǎn)化接口Centronics接口是的一個(gè)

55、并行接口協(xié)議這個(gè)協(xié)議規(guī)定了36腳簧式插頭座和信號(hào)含義其中前11條線是關(guān)鍵信號(hào),他們是8條數(shù)據(jù)線、3條聯(lián)絡(luò)線(選通、響應(yīng)和打印機(jī)忙)還有一些特殊控制線、狀態(tài)線PC系列機(jī)的并行打印機(jī)接口是一個(gè)25針插口,1. 控制打印機(jī)的輸出信號(hào),SLCTIN*選擇輸入——相當(dāng)于打印機(jī)選中信號(hào)INIT*初始化——使打印機(jī)被復(fù)位成初始狀態(tài)AUTOFEEDXT*自動(dòng)走紙——使打印機(jī)打印后自動(dòng)走紙一行STROBE*選通——用于使打印機(jī)接收數(shù)據(jù)的選

56、通信號(hào)。負(fù)脈沖的寬度在接收端應(yīng)大于0.5?s,數(shù)據(jù)才可靠地存入打印機(jī)數(shù)據(jù)緩沖區(qū),2. 反映打印機(jī)狀態(tài)的輸入信號(hào),BUSY忙——表示打印機(jī)不能接收數(shù)據(jù)ACK*響應(yīng)——打印機(jī)接收一個(gè)數(shù)據(jù)字節(jié)后就回送一個(gè)響應(yīng)的負(fù)脈沖信號(hào)(脈寬約為5?s),表示打印機(jī)已準(zhǔn)備好接收新數(shù)據(jù)PE紙用完——說(shuō)明打印機(jī)無(wú)紙SLCT選擇——表示處于聯(lián)機(jī)選中狀態(tài)ERROR*錯(cuò)誤——當(dāng)打印機(jī)處于無(wú)紙、脫機(jī)或錯(cuò)誤狀態(tài)之一時(shí),這個(gè)信號(hào)變?yōu)榈碗娖?3. 輸出數(shù)據(jù)線,DA

57、TA0~DATA7——8位并行數(shù)據(jù)信號(hào)線打印數(shù)據(jù)通過(guò)它們送至打印機(jī)8位數(shù)據(jù)的可靠輸出通過(guò)選通STROBE*、響應(yīng)ACK*和忙BUSY三個(gè)聯(lián)絡(luò)信號(hào)控制,打印時(shí)序,打印機(jī)時(shí)序,第11章教學(xué)要求,1. 掌握8255A的結(jié)構(gòu)特點(diǎn)和引腳功能2. 掌握8255A的各種工作方式、編程及方式0/1的應(yīng)用3. 理解簡(jiǎn)易鍵盤(pán)的工作原理、抖動(dòng)和重鍵問(wèn)題及解決方法4. 掌握鍵盤(pán)掃描程序(掃描法、行反轉(zhuǎn)法)的編寫(xiě),第11章教學(xué)要求(續(xù)),5. 了解PC

58、機(jī)鍵盤(pán)的工作原理6. 掌握LED數(shù)碼管的工作原理和多位顯示方法7. 了解并行打印機(jī)接口的引腳定義和接口時(shí)序習(xí)題11(第 274 頁(yè))——11.4 11.7 11.8 11.10 11.11 11.15,8255A的鍵盤(pán)和揚(yáng)聲器控制示意,,打印機(jī)時(shí)序,,方式1輸出時(shí)序,,矩陣結(jié)構(gòu)鍵盤(pán),,機(jī)械按鍵的抖動(dòng)現(xiàn)象,,硬件消抖電路,,鍵位置和掃描碼,,隊(duì)列空,隊(duì)列中無(wú)字符,隊(duì)列頭指針等于隊(duì)列尾指針,,進(jìn)隊(duì)列,數(shù)據(jù)進(jìn)入由隊(duì)列尾指針指示的單元

溫馨提示

  • 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ù)僅提供信息存儲(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)論