




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章并行接口8255及應(yīng)用第一節(jié)可編程并行接口8255并行接口概念并行通信就是把一個(gè)字符的各數(shù)位用幾條線同時(shí)進(jìn)行傳輸,并行通信的信息傳輸速度快,信息率高。用于數(shù)據(jù)傳輸要求較高,距離較短的場(chǎng)合并行通信沒(méi)有對(duì)同步和異步傳輸?shù)膰?yán)格定義。如果CPU用一個(gè)時(shí)序信號(hào)來(lái)管理接口和設(shè)備的動(dòng)作,這樣的并行傳輸稱為同步傳輸;如果CPU和接口設(shè)備之間只用應(yīng)答信號(hào)聯(lián)系,這樣的傳輸稱為異步傳輸。8255的內(nèi)部結(jié)構(gòu)8255是Intel系列的并行接口芯片,它是可編程的,可以用來(lái)設(shè)置其工作方式,不需要再附加外部電路。數(shù)據(jù)端口A,B,C:3個(gè)8bit數(shù)據(jù)端口,有各自的特點(diǎn)端口A1個(gè)8bit的數(shù)據(jù)輸入鎖存,一個(gè)8bit的數(shù)據(jù)輸出鎖存;2)端口B1個(gè)8bit的數(shù)據(jù)輸入緩沖,一個(gè)8bit的數(shù)據(jù)輸出鎖存;3)端口C1個(gè)8bit的數(shù)據(jù)輸入緩沖,一個(gè)8bit的數(shù)據(jù)輸出鎖存;端口C常常被分成2個(gè)4位端口,分別作為端口A和端口B的輸入輸出控制線和狀態(tài)信號(hào)線,與端口A、端口B配合使用。2.A組控制和B組控制接受CPU對(duì)控制端口的命令(控制字),可以獨(dú)立地設(shè)置8255中3個(gè)端口的工作方式3.數(shù)據(jù)總線緩沖器雙向三態(tài)8bit數(shù)據(jù)緩沖器,與CPU的數(shù)據(jù)總線相連,同時(shí)與8255的內(nèi)部數(shù)據(jù)總線相連,接受從CPU發(fā)出的控制字,輸入輸出數(shù)據(jù),同時(shí)也向CPU傳輸8255的狀態(tài)字4.讀寫控制邏輯電路接受CPU發(fā)送的讀寫信號(hào),其中A0,A1尋址8255內(nèi)部存放器,共有3個(gè)數(shù)據(jù)端口,1個(gè)控制端口。2.8255的引腳信號(hào)PA7~PA0,PB7~PB0,PC7~PC0與外設(shè)相連的獨(dú)立地址的并行擴(kuò)展口。D7~D0:與CPU的數(shù)據(jù)總線相連,傳輸8255的命令字或I/O數(shù)據(jù)。RESET:高有效,8255內(nèi)部存放器清零,3個(gè)端口均為輸入。:片選信號(hào),為低8255開(kāi)始工作:為低,讀有效,CPU可以從3個(gè)端口讀入數(shù)據(jù)。:為低,寫有效,CPU可以向3個(gè)端口輸出數(shù)據(jù),同時(shí)利用寫信號(hào)可以向8255的控制口寫控制命令,設(shè)置8255的工作方式。3.8255的控制字控制字分兩類,一類是控制并行口的工作方式的命令,一類是專門對(duì)C口各位的設(shè)置。這兩類控制字占用一個(gè)地址,用命令的最高位D7位進(jìn)行區(qū)分,所以控制字的最高位D7稱為控制字標(biāo)志位。為1為方式選擇字,為0為端口C設(shè)置字。D7D6D5D4D3D2D1D0格式字A組工作方式A口I/OC口高半字節(jié)I/OB組工作方式B口I/OC口低半字節(jié)I/O100方式001方式110方式21輸入0輸出1輸入0輸出0方式01方式11輸入0輸出1輸入0輸出
A方式選擇控制字A1,A0:8255內(nèi)部存放器地址尋址信號(hào),8255內(nèi)部有4個(gè)端口,A,B,C與控制口。A1A0端口00A口01B口10C口11控制口說(shuō)明:1)A口有3種工作方式方式0:根本I/O方式;方式1:?jiǎn)蜗蜻x通I/O方式,輸入或輸出只能選一種;方式2:雙向選通I/O方式,一次設(shè)置后通道既可以做輸入又可以做輸出。2)端口B有兩種工作方式即方式0與方式13)A口和B口工作在方式0時(shí),C口也可同時(shí)工作在方式0,且C口高半字節(jié)和低半字節(jié)可以分別獨(dú)立工作。4)A口工作在方式1時(shí),C口的局部位成為A口的信號(hào)聯(lián)絡(luò)線,但B口仍可以獨(dú)立工作。不要求A,B同為輸入或輸出。B口工作于方式1也是一樣。5)A口工作于方式2,C口的大局部位線用于A口的信號(hào)聯(lián)絡(luò)線,B口仍可以獨(dú)立工作于方式0或方式1。D7D6D5D4D3D2D1D0格式字A組工作方式A口I/OC口高半字節(jié)I/OB組工作方式B口I/OC口低半字節(jié)I/O100方式001方式110方式21輸入0輸出1輸入0輸出0方式01方式11輸入0輸出1輸入0輸出一系統(tǒng)采用8255作I/O接口,其控制口的地址為8BH,將端口A設(shè)置為方式0輸入,端口B設(shè)置為方式1輸出,那么A口的地址為_(kāi)____,B口地址為_(kāi)____,控制字為_(kāi)____。8BH10001011
10001000
88H
10001001
89H88H89HD7D6D5D4D3D2D1D01001010094HJ1:A口,方式0,輸出
B口,方式0,輸入
C口高,輸出;C口低,輸入J2:A口,方式0,輸入
B口,方式1,輸出
C口高,輸出J1,J2地址A7A6A5A4A3A2A1A0J1J21×0010088H~8EH1×0000080H~86H00D7D6D5D4D3D2D1D0格式字A組工作方式A口I/OC口高半字節(jié)I/OB組工作方式B口I/OC口低半字節(jié)I/O100方式001方式110方式21輸入0輸出1輸入0輸出0方式01方式11輸入0輸出1輸入0輸出J1:A口,方式0,輸出;B口,方式0,輸入;
C口高,輸出;C口低,輸入地址:88H-8EH控制字:D7D6D5D4D3D2D1D01000001183HD7D6D5D4D3D2D1D0格式字A組工作方式A口I/OC口高半字節(jié)I/OB組工作方式B口I/OC口低半字節(jié)I/O100方式001方式110方式21輸入0輸出1輸入0輸出0方式01方式11輸入0輸出1輸入0輸出J2:A口,方式0,輸入;B口,方式1,輸出;C口高,輸出地址:80H-86H控制字:D7D6D5D4D3D2D1D01001010×94HJ1:A口,方式0,輸出
B口,方式0,輸入
C口高,輸出C口低,輸入地址:88H-8EH,控制字:83H
J2:A口,方式0,輸入
B口,方式1,輸出
C口高,輸出地址:80H-86H,控制字:94HMOVAL,83HOUT8EH,AL;J1控制口MOVAL,94HOUT86H,AL;J2控制口
B端口C口各位設(shè)置字D7D6D5D4D3D2D1D0格式字×××位選擇數(shù)值0000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC71/0例:07H00000111,即將PC3置1。說(shuō)明:1)端口C置0/置1控制字盡管是對(duì)端口C進(jìn)行操作,但此控制字必須寫入控制口,而不是寫入端口C。2)一個(gè)控制字只能對(duì)一位進(jìn)行操作。J1:A口,方式0,輸出B口,方式0,輸入
C口高,輸出,C口低,輸入地址:88H-8EH,控制字:83H
C口PC7置1,PC3置0。MOVAL,0FH
;00001111OUT8EH,ALMOVAL,06H;00000110OUT8EH,AL第二節(jié)8255的工作方式一、方式0根本輸入輸出方式實(shí)際上是4個(gè)端口,A、B、C高、C低,可以獨(dú)立地任意組合,一共可有16種組合方式。輸入時(shí)序1)CPU在發(fā)出讀信號(hào)前,先發(fā)出地址信號(hào),使8255的片選及各存放器有效。2)在CPU發(fā)出讀信號(hào)之前,外設(shè)已將欲輸入的數(shù)據(jù)送入8255的數(shù)據(jù)總線緩沖器。3)8255數(shù)據(jù)總線緩沖器中的數(shù)據(jù)必須保持到讀信號(hào)消失后才結(jié)束。4)讀脈沖寬度至少大于300ns。5)在整個(gè)輸入數(shù)據(jù)期間,地址信號(hào)保持有效。輸出時(shí)序1)地址信號(hào)必須先有效;2)寫脈沖大于400ns;3)數(shù)據(jù)在寫信號(hào)結(jié)束前有效,且能在寫信號(hào)結(jié)束后保持一段時(shí)間;4)在寫信號(hào)結(jié)束后,不超過(guò)350ns,數(shù)據(jù)出現(xiàn)在8255的輸出鎖存器中。在方式0中,可利用C口的各位信號(hào)線做應(yīng)答信號(hào),配合A,B口的輸入輸出操作。圖中,8255地址為02A0H~02A6H根據(jù)開(kāi)關(guān)情況來(lái)控制LED。(開(kāi)關(guān)閉合燈亮),寫出控制程序。分析:A口輸入,方式0;B口輸出,方式0控制字:1001×00×90HMOVDX,2A6HMOVAL,90H
OUTDX,ALMOVDX,2A0HINAL,DXMOVDX,2A2HOUTDX,AL打印機(jī)工作順序(過(guò)程)1)數(shù)據(jù)與STB信號(hào)一起送入打印機(jī),STB相當(dāng)于啟動(dòng)信號(hào),啟動(dòng)打印機(jī)接受數(shù)據(jù);2)打印機(jī)處理數(shù)據(jù),這時(shí)BUSY為高,表示“忙”;3)處理完數(shù)據(jù),BUSY為0,且ACK為低,應(yīng)答主機(jī)。CPU經(jīng)8255與打印機(jī)連接,8255地址:80H~83H,打印從BUF緩沖區(qū)開(kāi)始的100個(gè)字符。分析:8255A口方式0輸出,C口高半位輸出,C口低半位輸入,控制字:10000××181H步驟:1)查看PC2;2)發(fā)送PA;3)發(fā)送PC7。8255地址80H~83H,控制字81HMOVAL,81H
OUT83H,ALMOVAL,0FHOUT83H,ALLEASI,BUFMOVCX,100;設(shè)置PC7為1,不啟動(dòng)打印機(jī)L:INAL,82HANDAL,04HJNZLMOVAL,[SI]OUT80H,ALMOVAL,0EHOUT83H,ALCALLdelayMOVAL,0FHOUT83H,ALINCSIDECCXJNZLHLT;讀C口;判斷PC2;發(fā)送字符;PC7置0;PC7置1;下一個(gè)字符;忙,等待二、方式1選通輸入輸出方式(應(yīng)答方式)1.特點(diǎn)1)A口或B口工作在方式1時(shí),C口各位做聯(lián)絡(luò)應(yīng)答信號(hào)線,其各位的含義是固定的,不可用軟件改變;2)各位聯(lián)絡(luò)信號(hào)都有固定的時(shí)序(自動(dòng)進(jìn)行)3)在輸入輸出操作中,產(chǎn)生固定格式的狀態(tài)字,這些狀態(tài)信息可供CPU查詢或向CPU申請(qǐng)中斷。CPU從端口C中讀取狀態(tài)字。4)方式1為單向傳送,初始化后只能向一個(gè)方向上傳送,假設(shè)要反方向傳送必須再次初始化。2.方式1下輸入操作的聯(lián)絡(luò)信號(hào)線定義及時(shí)序指定了C口的3根線作為A口的聯(lián)絡(luò)線。:外設(shè)送入的選通信號(hào),與外設(shè)數(shù)據(jù)一起送入,相當(dāng)于8255的啟動(dòng)信號(hào)。IBFA:
InputBufferFull,輸入緩沖器滿,高有效,由8255發(fā)往外設(shè),表示8255收到數(shù)據(jù),但未被CPU取走,通知外設(shè)不可再送數(shù)據(jù);當(dāng)其為低時(shí),表示CPU已取走數(shù)據(jù),允許外設(shè)送新的數(shù)據(jù)。&INTRA:8255向CPU申請(qǐng)中斷,高有效,請(qǐng)求CPU中斷。INTR為高有3個(gè)條件:1)STB為高,即數(shù)據(jù)已打入8255;2)IBF為高,即8255已收到數(shù)據(jù);3)INTE(中斷請(qǐng)求允許)為高,即8255允許以中斷方式應(yīng)答。
INTRA為高,通知CPU可以取8255口中的數(shù)。&INTEA:InterruptEnable,中斷允許信號(hào),設(shè)置中斷允許或屏蔽中斷的信號(hào)。INTE沒(méi)有外部引出端,由軟件對(duì)C口某位進(jìn)行置0或置1的操作實(shí)現(xiàn)。對(duì)A口,中斷允許端是PC4,對(duì)B口,是PC2。置1允許中斷,置0屏蔽中斷。&端口B在方式1輸入下各個(gè)聯(lián)絡(luò)線的定義與端口A完全一樣,只是占用C口的聯(lián)絡(luò)線與端口A不同。其中,其中斷屏蔽允許位是PC2。&PC0~2屬于B口聯(lián)絡(luò)線,PC3~5屬于A口聯(lián)絡(luò)線,PC6,PC7沒(méi)有被重新定義,仍可作為根本I/O口使用,屬于C口的高半局部,在控制字中定義其輸入輸出特性。&&工作時(shí)序1)
數(shù)據(jù)與STB由外設(shè)進(jìn)入8255,STB為低,通知8255接受數(shù)據(jù)。2)8255收到STB信號(hào),將IBF置為1,通知外設(shè)禁止再送入數(shù)據(jù),同時(shí)接受數(shù)據(jù)。3)
STB信號(hào)是由外設(shè)發(fā)出,一般有效300ns。4)
具備3個(gè)條件:STB為高,IBF為高,INTE為高,8255向CPU發(fā)中斷申請(qǐng)信號(hào),通知CPU取走數(shù)據(jù)。5)
CPU接到中斷申請(qǐng)后,響應(yīng)中斷,向8255相應(yīng)端口發(fā)讀信號(hào),6)讀信號(hào)的下降沿復(fù)位中斷申請(qǐng),7)
上升沿復(fù)位8255向外設(shè)發(fā)的禁止輸入信號(hào),外設(shè)得以向8255發(fā)送下一數(shù)據(jù)。(4)RD外設(shè)8255CPU(1)STB(2)IBF(3)INTR3.方式1下輸出操作的聯(lián)絡(luò)信號(hào)線定義及時(shí)序指定了端口C的3根線做其聯(lián)絡(luò)信號(hào)線。:OutputBufferFull,輸出緩沖器滿,8255接到CPU送來(lái)的數(shù)據(jù)后,將數(shù)據(jù)連帶這個(gè)信號(hào)一起送往外設(shè),這個(gè)信號(hào)相當(dāng)于啟動(dòng)信號(hào),通知外設(shè)開(kāi)始接收數(shù)據(jù)。:外設(shè)應(yīng)答信號(hào),外設(shè)送入8255,低有效。有效時(shí)表示外設(shè)已接到數(shù)據(jù),這個(gè)信號(hào)可以將OBF變高,表示CPU可以進(jìn)行下一次傳輸。INTR:中斷請(qǐng)求信號(hào),由8255發(fā)往CPU,高有效,為高的條件是:WR、OBF、ACK和INTE均為高電平,分別表示為:WR為高:CPU已寫完一個(gè)數(shù)據(jù);OBF為高:輸出緩沖器已空;ACK為高:外設(shè)應(yīng)答信號(hào)結(jié)束。說(shuō)明外設(shè)收到數(shù)據(jù);INTE為高:8255允許中斷。INTEA:InterruptEnable,中斷允許信號(hào),設(shè)置中斷允許或屏蔽中斷的信號(hào)。INTE沒(méi)有外部引出端,由軟件對(duì)C口某位進(jìn)行置0或置1的操作實(shí)現(xiàn)。對(duì)A口,中斷允許端是PC6,對(duì)B口,是PC2。置1允許中斷,置0屏蔽中斷。端口B在方式1輸出下各個(gè)聯(lián)絡(luò)線的定義與端口A完全一樣,只是占用C口的聯(lián)絡(luò)線與端口A不同。其中,其中斷屏蔽允許位是PC2。其占用的聯(lián)絡(luò)線與輸入時(shí)一樣,但聯(lián)絡(luò)線的定義不同。PC0~2屬于B口聯(lián)絡(luò)線,PC3,PC6,PC7屬于A口聯(lián)絡(luò)線,PC4,PC5沒(méi)有被重新定義,仍可作為根本I/O口使用,屬于C口的高半局部,在控制字中定義其輸入輸出特性。輸出時(shí)序:1)
CPU在INTR為高的情況下WR信號(hào)有效,通過(guò)DB向8255寫入數(shù)據(jù);2)
WR信號(hào)的上升沿使INTR為低,禁止CPU繼續(xù)向8255發(fā)送數(shù)據(jù);3)
WR信號(hào)的上升沿使OBF信號(hào)有效,通知外設(shè)取走8255端口的數(shù)據(jù);同時(shí),CPU輸入的數(shù)據(jù)也出現(xiàn)在8255相應(yīng)的端口上;4)
外設(shè)取走數(shù)據(jù),向8255發(fā)送應(yīng)答信號(hào),5)
其下降沿復(fù)位OBF,6)
其上升沿復(fù)位INTR,使中斷申請(qǐng)信號(hào)有效,8255得以繼續(xù)向CPU申請(qǐng)中斷,輸出下一個(gè)數(shù)據(jù)。外設(shè)8255CPU(1)WR(2)OBF(3)ACK(4)INTRD7D6D5D4D3D2D1D0A組B組輸入:D7D6D5D4D3I/OI/OIBFAINTEAINTRA輸出:D7D6D5D4D3OBFAINTEAI/OI/OINTRAD2D1D0INTEBIBFBINTRBD2D1D0INTEBOBFBINTRB狀態(tài)字中CPU可以查詢的狀態(tài)輸入是IBF和INTR,輸出是OBF和INTR,但一般INTR更可靠。如果中斷允許INTE為0(禁止中斷),那么INTR無(wú)效。但如果CPU禁止8255中斷,一般在硬件上不接INTR管腳,而INTE依然置1,供CPU查詢INTR。4.狀態(tài)字8255有固定的狀態(tài)字,反響了當(dāng)前8255正在工作的各種狀態(tài),即其內(nèi)部各存放器的狀態(tài),供CPU查詢,CPU通過(guò)讀寫8255的端口C可以獲取狀態(tài)字。47(1)未被A口和B口征用的引腳:將從定義為輸入的端口讀到引腳的輸入信息;將從定義為輸出的端口讀到輸出鎖存器的信息。(2)被A口和B口征用做為聯(lián)絡(luò)線的引腳:將從C口讀到反映8255狀態(tài)的狀態(tài)字。在讀C口時(shí),讀到的數(shù)據(jù)有兩種情況:48方式1輸入:I/OI/OIBFAINTEAINTRAINTEBINTRBIBFBD7D6D5D4D3D2D1D0A組B組方式1輸出:OBFAINTEAI/OI/OINTRAINTEBINTRBOBFBD7D6D5D4D3D2D1D0A組B組49方式2:OBFAINTE1IBFAINTRA
D7D6D5D4D3D2D1D0A組B組INTE2端口C讀出內(nèi)容8255工作在方式1控制微型打印機(jī)應(yīng)用實(shí)例分析:PA端口與打印機(jī)的數(shù)據(jù)線相連;OBF(PC7)與打印機(jī)的STB相連,啟動(dòng)打印機(jī);ACK(PC6)與打印機(jī)的ACK相連,打印機(jī)取走數(shù)據(jù);ACK信號(hào)通知8255數(shù)據(jù)已被取走,該信號(hào)自動(dòng)使OBF為高,但由于打印機(jī)速度很慢,因此在打印時(shí),會(huì)發(fā)出BUSY信號(hào),此時(shí),需查詢BUSY為低才可以完成一次數(shù)據(jù)傳輸。所以用PC4接BUSY,設(shè)置為輸入。8255地址:200H~206H控制字:10101×××A8HLEASI,BUFMOVCX,100MOVDX,206HMOVAL,0A8HOUTDX,ALL1:MOVAL,[SI]MOVDX,200HOUTDX,ALMOVDX,204HL2:INAL,DXANDAL,80HJZL2L3:INAL,DXANDAL,10HJNZL3INCSIDECCXJNZL1HLT;寫控制字;A口輸出數(shù)據(jù);讀狀態(tài)字;查看OBF是否為高;讀C口;查看PC4利用中斷申請(qǐng)INTR查詢地址:80H~83H,控制字A8H允許中斷,設(shè)置PC6為1控制字:0×××1101
0DHLEASI,BUFMOVCX,100MOVAL,0A8HOUT83H,ALMOVAL,0DHOUT83H,ALL1:MOVAL,[SI]OUT80H,ALL2:INAL,82HANDAL,08HJZL2L3:INAL,82ANDAL,10HJNZL3INCSIDECCXJNZL1HLT;A口輸出數(shù)據(jù);讀狀態(tài)字;查看INTR是否為高;讀C口;查看PC45354;8255初始化程序MOVDX,0FBC3HMOVAL,81H;方式控制字,A口方式0,輸出,
;C口高半輸出,低半輸入OUTDX,ALMOVAL,0DH;位控制字,使PC6初始狀態(tài)為1OUTDX,AL打印一批字符的程序段〔查詢方式)55MOVCX,COUNTMOVSI,OFFSETDATASTART:MOVDX,0FBC2HINAL,DXANDAL,02H;測(cè)試PC1〔BUSY〕位是否為0。;為0,那么打印機(jī)閑;為1,打印機(jī)忙JNZSTARTMOVAL,[SI]MOVDX,0FBC0HOUTDX,AL;取一個(gè)要打印的字符送A口
56MOVDX,0FBC2HMOVAL,0OUTDX,AL;因PC6初始狀態(tài)為1,使其從高
;到低變化,以便形成負(fù)脈沖MOVAL,40HOUTDX,AL;PC6從低到高,形成負(fù)脈沖INCSILOOPSTARTHLT57PC3連到中斷控制器8259A的中斷請(qǐng)求信號(hào)輸入的IR3端。對(duì)應(yīng)于中斷類型號(hào)0BH,此中斷對(duì)應(yīng)的中斷向量放在00段2CH、2DH、2EH、2FH這4個(gè)單元中。設(shè)8255端口地址為00H~03H,8259端口地址0FF00~0FF01H。58DASEGMENTBUFFDB‘HEKDIKEIDKK’COUNTDB$-DATADAENDSCODESEGMENTASSUMECS:CODE,DS:DA;主程序;8255初始化 MAIN:MOVAL,0A0H〔10100000B〕 OUT03H,AL ;設(shè)置8255A的控制字 MOV AL,01H(00000001B) ;給打印機(jī)STB置1 OUT03H,AL XORAX,AX MOVDS,AX MOVAX,OFFSETROUTINTR59MOVWORDPTR[002CH],AXMOVAX,SEG ROUTINTRMOV WORDPTR[002EH],AX ;送中斷向量MOV AL,0DH〔00001101B〕OUT03H,AL ;使8255AA口輸出允許中斷MOVDI,OFFSETBUFF ;設(shè)置地址指針MOVCX,COUNT ;設(shè)置計(jì)數(shù)器初值MOV AL,[DI]OUT 00H,AL ;輸出一個(gè)字符INC DIMOV AL,00HOUT 03H,AL ;產(chǎn)生選通INC ALOUT 03H,AL ;撤消選通〔產(chǎn)生負(fù)脈沖〕STI ;開(kāi)中斷60NEXT:HLT ;等待中斷LOOP NEXT ;修改計(jì)數(shù)器的值,指向下一個(gè)要輸出的字符HLTCODEENDS中斷效勞子程序ROUTINTR如下:MOVAL,[DI]OUT 00H,AL ;從A口輸出一個(gè)字符MOV AL,00HOUT 03H,AL ;產(chǎn)生選通INC ALMOV 03H,AL ;撤消選通INC DI ;修改地址指針MOVAL,20HMOVDX,0FF00H;向8259發(fā)中斷結(jié)束命令OUTDX,ALIRET ;中斷返回三、方式2雙向應(yīng)答式輸入輸出方式該方式只能用于端口A,指定A口既作入口又作輸出口,可采用中斷或查詢方式與CPU交換數(shù)據(jù),C口用5個(gè)高位數(shù)位為A口提供給答信號(hào)。這時(shí),端口B仍可以方式0或方式1工作。輸出輸入方式2的信號(hào)聯(lián)絡(luò)線實(shí)際上是方式1輸入輸出的組合。同樣,方式2的時(shí)序?qū)嶋H上也是方式1的輸入與輸出的時(shí)序的組合。當(dāng)一個(gè)外設(shè)既可以用作輸入也可以用作輸出時(shí),將其接口初始化為方式2,這樣輸入輸出就不用再重新初始化了,具體某個(gè)時(shí)刻是輸出操作還是輸入操作由程序來(lái)控制,CPU可以通過(guò)中斷或查詢狀態(tài)字來(lái)控制程序進(jìn)程。方式2的輸入與輸出是一個(gè)中斷源,因此,在中斷處理程序中還應(yīng)該查詢8255的狀態(tài)字,進(jìn)一步識(shí)別是輸入申請(qǐng)中斷還是輸出申請(qǐng)中斷,來(lái)啟動(dòng)不同的處理程序。方式2的狀態(tài)字D7D6D5D4D3OBFAINTE1IBFAINTE2INTRA輸入:INTRAINTEAIBFAI/OI/OD3D4D5D6D7輸出:INTRAI/OI/OINTEAOBFAD3D4D5D6D7方式1輸出輸入兩個(gè)中斷允許位INTE1和INTE2要分別設(shè)置。在中服中要查詢OBF和IBF兩位,看是哪個(gè)操作在申請(qǐng)中斷。第三節(jié)鍵盤及LED顯示鍵盤及LED顯示電路鍵盤是微機(jī)系統(tǒng)最常使用的輸入設(shè)備小鍵盤:適用于單板機(jī)或以微處理器為根底的儀器,實(shí)現(xiàn)數(shù)據(jù)、地址、命令及指令等的輸入獨(dú)立鍵盤:通過(guò)5芯電纜與PC微機(jī)主機(jī)連接簡(jiǎn)易鍵盤的工作原理+5V+5V+5V最簡(jiǎn)單的線性結(jié)構(gòu)鍵盤每一個(gè)引腳連接一個(gè)鍵輸入0/1反映鍵是否按下簡(jiǎn)易鍵盤的工作原理1.掃描法先使第0行接低電平,其余行為高電平,然后看第0行是否有鍵閉合〔通過(guò)檢查列線電位實(shí)現(xiàn)〕此后,再將第1行接地,然后檢測(cè)列線是否有變?yōu)榈碗娢坏木€。如此往下一行一行地掃描,直到最后一行在掃描過(guò)程中,當(dāng)發(fā)現(xiàn)某一行有鍵閉合時(shí),便在掃描中途退出通過(guò)組合行線和列線可識(shí)別此刻按下的是哪一鍵KEYMOVDX,pt;pt為8255的控制寄存器地址:MOVAL,82H;方式選擇控制字OUTDX,ALWAITMOVAL,00H:MOVDX,PTA;所有行線輸出低電平,OUTDX,ALMOVDX,PTB;PTB為列線所連接的端口BINAL,DX;讀取列值A(chǔ)NDAL,0FFHCMPAL,0FFH;看是否有列線處于低電平JEWAIT;否,則沒(méi)有鍵閉合,循環(huán)等待CALLDELAY;是,則延遲20ms去抖動(dòng)SCAN:MOVBL,0;鍵號(hào)基值為0MOVDL,0FEH;送掃描初值,只有最低位為“0”MOVCL,8;行數(shù)計(jì)數(shù)值ROW:MOVAL,DLOUTPTA,AL;掃描一行ROLDL,1;修改掃描值,使之下一行為“0”INAL,PTB;讀進(jìn)列值CMPAL,0FFHJNEKEYC;有列線為“0”,則進(jìn)一步取列位置ADDBL,8;沒(méi)有列線接地,則使鍵基值=鍵基值+列數(shù)DECCL;是否各行都掃完JNEROW;未掃完,則掃下一行JMPWAIT;已經(jīng)掃完,沒(méi)有按鍵按下,轉(zhuǎn)WAIT等待KEYC:RCRAL,1JNCPROCE;若此列接地,則轉(zhuǎn)至PROCEINCBL;鍵號(hào)=鍵基值+列號(hào)JMPKEYC;若未找到接地的列線,則轉(zhuǎn)KEYCODE繼續(xù)PROCE…;鍵命令處理,鍵值在BL寄存器中:…;后續(xù)處理程序2.反轉(zhuǎn)法首先,將行線作為控制線接一個(gè)輸出端口,將列線作為檢測(cè)線接一個(gè)輸入端口CPU通過(guò)輸出端口將行線〔控制線〕全部設(shè)置為低電平,然后從輸入端口讀取列線〔檢測(cè)線〕然后,將行線和列線的作用互換,即將列線作為控制線接輸出端口,行線作為檢測(cè)線接輸入端口將剛剛讀得的列值從列線所接端口輸出,再讀取行線的輸入值這樣,當(dāng)一個(gè)鍵被按下時(shí),必定可以讀得一對(duì)唯一的行值和列值
…… ;設(shè)置行線接輸出端口,列線接輸入端口KEY2: MOVAL,00
MOV
DX,ROWPORT
OUTDX,AL
;設(shè)置行線全為低
MOV
DX,COLPORT
INAL,DX
;讀取列值
CMPAL,0FFH
JZKEY2
;無(wú)閉合鍵,循環(huán)等待
PUSHAX
;有閉合鍵,保存列值
PUSHAX
…… ;設(shè)置行線接輸入端口,列線接輸出端
MOVDX,COLPORT POPAX OUTDX,AL ;輸出列值
MOVDX,ROWPORT INAL,DX ;讀取行值
POPBX ;組合行列值
MOVAH,BL ;此時(shí),AL=行值,AH=列值鍵盤掃描程序 MOVSI,OFFSETTABLE MOVDI,OFFSETCHAR MOVCX,64 ;CX=鍵的個(gè)數(shù)KEY3: CMPAX,[SI] ;與鍵值比較 JZKEY4 ;相同,說(shuō)明查到 INCSI ;不相同,繼續(xù)比較 INCSI INCDI LOOPKEY3 JMPKEY1 ;全部比較完,仍無(wú)相同,說(shuō)明是重鍵KEY4: MOVAL,[DI] ;獲取鍵代碼送AL …… ;判斷按鍵是否釋放,沒(méi)有那么等待 CALLDELAY ;按鍵釋放,延時(shí)消除抖動(dòng) …… ;后續(xù)處理 ;鍵盤的行列值表TABLE DW0FEFEH ;鍵0的行列值〔鍵值〕 DW0FDFEH ;鍵1的行列值 DW0FBFEH ;鍵2的行列值 …… ;其他鍵的行列值 ;鍵盤的鍵代碼表CHAR DB…… ;鍵0的代碼值 DB…… ;鍵1的代碼值 …… ;其他鍵的代碼值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稱為a、b、c、d、e、f、g有的產(chǎn)品還附帶有一個(gè)小數(shù)點(diǎn)h通過(guò)7個(gè)發(fā)光段的不同組合主要顯示0-9也可顯示A-F〔16進(jìn)制數(shù)〕還可顯示個(gè)別特殊字符:-、PhgfedcbaLED數(shù)碼管的結(jié)構(gòu)共陽(yáng)極陽(yáng)極+5Vabcdefgh陰極abcdefgh共陰極2.單個(gè)LED數(shù)碼管的顯示8255PA0PA1PA2PA3PA4PA5PA6PA7驅(qū)動(dòng)電路abcdefghhgfedcba
LEDTB DB3FH,06H,5BH,…… ;顯示代碼表
…… MOVAL,1 ;AL←要顯示的數(shù)字
MOVBX,OFFSETLEDTB XLAT ;換碼:AL←DS:[BX+AL] MOVDX,PORT OUTDX,AL ;輸出顯示3.多個(gè)LED數(shù)碼管的顯示8個(gè)數(shù)碼管:用2個(gè)8位輸出端口控制硬件上用公用的驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)各數(shù)碼管軟件上用掃描方法實(shí)現(xiàn)數(shù)碼顯示動(dòng)態(tài)LED顯示器原理Com8255PA7hgfedcbaPA0PB0PB5ComComComComComhgfedcbahgfedcbahgfedcbahgfedcbahgfedcba例:設(shè)計(jì)兩個(gè)8255,要求:8255〔1〕地址為80H-83H,A方式0、輸入、B方式1,輸出,C7-4輸出,C3-0輸入8255〔2〕地址為84H-87H。A方式1、輸出、B方式1,輸入,C7-4輸入,C3-0輸出試?yán)L制與8088的連接電路圖并寫出初始化程序地址選擇:G1G2BG2ACBAA1A0A7M/IOA5+A6A4A3A2A1A010
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030醫(yī)藥設(shè)備市場(chǎng)投資前景分析及供需格局研究研究報(bào)告
- 2025-2030包裝檢測(cè)儀器市場(chǎng)投資前景分析及供需格局研究研究報(bào)告
- 2025-2030辦公用品產(chǎn)業(yè)規(guī)劃專項(xiàng)研究報(bào)告
- 2025-2030再生鋼市場(chǎng)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030全球及中國(guó)金融領(lǐng)域的大數(shù)據(jù)IT支出行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030全球及中國(guó)電子病歷(EMR)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030全球及中國(guó)汽車絲網(wǎng)清洗產(chǎn)品行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030全球及中國(guó)β1腎上腺素受體激動(dòng)劑行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030兒童牙刷產(chǎn)品入市調(diào)查研究報(bào)告
- 2025-2030信貸風(fēng)險(xiǎn)行業(yè)風(fēng)險(xiǎn)投資發(fā)展分析及投資融資策略研究報(bào)告
- GB/T 11313.101-2015射頻連接器第101部分:MMCX系列射頻同軸連接器分規(guī)范
- 10kV架空配電線路帶電安裝故障指示器
- 目標(biāo)與計(jì)劃的重要性課件
- 教師招聘考試題庫(kù)《班主任與班級(jí)管理》必看知識(shí)點(diǎn)
- 顯示屏出廠合格證
- (中職)電子技術(shù)基礎(chǔ)與技能(電子信息類)教案
- 三晶變頻器說(shuō)明書SAJ系列簡(jiǎn)約
- 混凝土模板支撐工程專項(xiàng)施工方案(140頁(yè))
- MATLAB_第6講_GUI界面設(shè)計(jì)
- 高中英語(yǔ)北師大版(2019)必修第一冊(cè) Unit3Lesson1SpringFestival
- 《公輸》(共44張PPT)
評(píng)論
0/150
提交評(píng)論