《微機原理與接口》知識點第7章-并行接口8255_第1頁
《微機原理與接口》知識點第7章-并行接口8255_第2頁
《微機原理與接口》知識點第7章-并行接口8255_第3頁
《微機原理與接口》知識點第7章-并行接口8255_第4頁
《微機原理與接口》知識點第7章-并行接口8255_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章并行接口8255及應(yīng)用第一節(jié)可編程并行接口8255并行接口概念并行通信就是把一個字符的各數(shù)位用幾條線同時進(jìn)行傳輸,并行通信的信息傳輸速度快,信息率高。用于數(shù)據(jù)傳輸要求較高,距離較短的場合并行通信沒有對同步和異步傳輸?shù)膰?yán)格定義。如果CPU用一個時序信號來管理接口和設(shè)備的動作,這樣的并行傳輸稱為同步傳輸;如果CPU和接口設(shè)備之間只用應(yīng)答信號聯(lián)系,這樣的傳輸稱為異步傳輸。8255的內(nèi)部結(jié)構(gòu)8255是Intel系列的并行接口芯片,它是可編程的,可以用來設(shè)置其工作方式,不需要再附加外部電路。數(shù)據(jù)端口A,B,C:3個8bit數(shù)據(jù)端口,有各自的特點端口A1個8bit的數(shù)據(jù)輸入鎖存,一個8bit的數(shù)據(jù)輸出鎖存;2)端口B1個8bit的數(shù)據(jù)輸入緩沖,一個8bit的數(shù)據(jù)輸出鎖存;3)端口C1個8bit的數(shù)據(jù)輸入緩沖,一個8bit的數(shù)據(jù)輸出鎖存;端口C常常被分成2個4位端口,分別作為端口A和端口B的輸入輸出控制線和狀態(tài)信號線,與端口A、端口B配合使用。2.A組控制和B組控制接受CPU對控制端口的命令(控制字),可以獨立地設(shè)置8255中3個端口的工作方式3.數(shù)據(jù)總線緩沖器雙向三態(tài)8bit數(shù)據(jù)緩沖器,與CPU的數(shù)據(jù)總線相連,同時與8255的內(nèi)部數(shù)據(jù)總線相連,接受從CPU發(fā)出的控制字,輸入輸出數(shù)據(jù),同時也向CPU傳輸8255的狀態(tài)字4.讀寫控制邏輯電路接受CPU發(fā)送的讀寫信號,其中A0,A1尋址8255內(nèi)部存放器,共有3個數(shù)據(jù)端口,1個控制端口。2.8255的引腳信號PA7~PA0,PB7~PB0,PC7~PC0與外設(shè)相連的獨立地址的并行擴展口。D7~D0:與CPU的數(shù)據(jù)總線相連,傳輸8255的命令字或I/O數(shù)據(jù)。RESET:高有效,8255內(nèi)部存放器清零,3個端口均為輸入。:片選信號,為低8255開始工作:為低,讀有效,CPU可以從3個端口讀入數(shù)據(jù)。:為低,寫有效,CPU可以向3個端口輸出數(shù)據(jù),同時利用寫信號可以向8255的控制口寫控制命令,設(shè)置8255的工作方式。3.8255的控制字控制字分兩類,一類是控制并行口的工作方式的命令,一類是專門對C口各位的設(shè)置。這兩類控制字占用一個地址,用命令的最高位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)部存放器地址尋址信號,8255內(nèi)部有4個端口,A,B,C與控制口。A1A0端口00A口01B口10C口11控制口說明:1)A口有3種工作方式方式0:根本I/O方式;方式1:單向選通I/O方式,輸入或輸出只能選一種;方式2:雙向選通I/O方式,一次設(shè)置后通道既可以做輸入又可以做輸出。2)端口B有兩種工作方式即方式0與方式13)A口和B口工作在方式0時,C口也可同時工作在方式0,且C口高半字節(jié)和低半字節(jié)可以分別獨立工作。4)A口工作在方式1時,C口的局部位成為A口的信號聯(lián)絡(luò)線,但B口仍可以獨立工作。不要求A,B同為輸入或輸出。B口工作于方式1也是一樣。5)A口工作于方式2,C口的大局部位線用于A口的信號聯(lián)絡(luò)線,B口仍可以獨立工作于方式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口的地址為_____,B口地址為_____,控制字為_____。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。說明:1)端口C置0/置1控制字盡管是對端口C進(jìn)行操作,但此控制字必須寫入控制口,而不是寫入端口C。2)一個控制字只能對一位進(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根本輸入輸出方式實際上是4個端口,A、B、C高、C低,可以獨立地任意組合,一共可有16種組合方式。輸入時序1)CPU在發(fā)出讀信號前,先發(fā)出地址信號,使8255的片選及各存放器有效。2)在CPU發(fā)出讀信號之前,外設(shè)已將欲輸入的數(shù)據(jù)送入8255的數(shù)據(jù)總線緩沖器。3)8255數(shù)據(jù)總線緩沖器中的數(shù)據(jù)必須保持到讀信號消失后才結(jié)束。4)讀脈沖寬度至少大于300ns。5)在整個輸入數(shù)據(jù)期間,地址信號保持有效。輸出時序1)地址信號必須先有效;2)寫脈沖大于400ns;3)數(shù)據(jù)在寫信號結(jié)束前有效,且能在寫信號結(jié)束后保持一段時間;4)在寫信號結(jié)束后,不超過350ns,數(shù)據(jù)出現(xiàn)在8255的輸出鎖存器中。在方式0中,可利用C口的各位信號線做應(yīng)答信號,配合A,B口的輸入輸出操作。圖中,8255地址為02A0H~02A6H根據(jù)開關(guān)情況來控制LED。(開關(guān)閉合燈亮),寫出控制程序。分析:A口輸入,方式0;B口輸出,方式0控制字:1001×00×90HMOVDX,2A6HMOVAL,90H

OUTDX,ALMOVDX,2A0HINAL,DXMOVDX,2A2HOUTDX,AL打印機工作順序(過程)1)數(shù)據(jù)與STB信號一起送入打印機,STB相當(dāng)于啟動信號,啟動打印機接受數(shù)據(jù);2)打印機處理數(shù)據(jù),這時BUSY為高,表示“忙”;3)處理完數(shù)據(jù),BUSY為0,且ACK為低,應(yīng)答主機。CPU經(jīng)8255與打印機連接,8255地址:80H~83H,打印從BUF緩沖區(qū)開始的100個字符。分析: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,不啟動打印機L:INAL,82HANDAL,04HJNZLMOVAL,[SI]OUT80H,ALMOVAL,0EHOUT83H,ALCALLdelayMOVAL,0FHOUT83H,ALINCSIDECCXJNZLHLT;讀C口;判斷PC2;發(fā)送字符;PC7置0;PC7置1;下一個字符;忙,等待二、方式1選通輸入輸出方式(應(yīng)答方式)1.特點1)A口或B口工作在方式1時,C口各位做聯(lián)絡(luò)應(yīng)答信號線,其各位的含義是固定的,不可用軟件改變;2)各位聯(lián)絡(luò)信號都有固定的時序(自動進(jìn)行)3)在輸入輸出操作中,產(chǎn)生固定格式的狀態(tài)字,這些狀態(tài)信息可供CPU查詢或向CPU申請中斷。CPU從端口C中讀取狀態(tài)字。4)方式1為單向傳送,初始化后只能向一個方向上傳送,假設(shè)要反方向傳送必須再次初始化。2.方式1下輸入操作的聯(lián)絡(luò)信號線定義及時序指定了C口的3根線作為A口的聯(lián)絡(luò)線。:外設(shè)送入的選通信號,與外設(shè)數(shù)據(jù)一起送入,相當(dāng)于8255的啟動信號。IBFA:

InputBufferFull,輸入緩沖器滿,高有效,由8255發(fā)往外設(shè),表示8255收到數(shù)據(jù),但未被CPU取走,通知外設(shè)不可再送數(shù)據(jù);當(dāng)其為低時,表示CPU已取走數(shù)據(jù),允許外設(shè)送新的數(shù)據(jù)。&INTRA:8255向CPU申請中斷,高有效,請求CPU中斷。INTR為高有3個條件:1)STB為高,即數(shù)據(jù)已打入8255;2)IBF為高,即8255已收到數(shù)據(jù);3)INTE(中斷請求允許)為高,即8255允許以中斷方式應(yīng)答。

INTRA為高,通知CPU可以取8255口中的數(shù)。&INTEA:InterruptEnable,中斷允許信號,設(shè)置中斷允許或屏蔽中斷的信號。INTE沒有外部引出端,由軟件對C口某位進(jìn)行置0或置1的操作實現(xiàn)。對A口,中斷允許端是PC4,對B口,是PC2。置1允許中斷,置0屏蔽中斷。&端口B在方式1輸入下各個聯(lián)絡(luò)線的定義與端口A完全一樣,只是占用C口的聯(lián)絡(luò)線與端口A不同。其中,其中斷屏蔽允許位是PC2。&PC0~2屬于B口聯(lián)絡(luò)線,PC3~5屬于A口聯(lián)絡(luò)線,PC6,PC7沒有被重新定義,仍可作為根本I/O口使用,屬于C口的高半局部,在控制字中定義其輸入輸出特性。&&工作時序1)

數(shù)據(jù)與STB由外設(shè)進(jìn)入8255,STB為低,通知8255接受數(shù)據(jù)。2)8255收到STB信號,將IBF置為1,通知外設(shè)禁止再送入數(shù)據(jù),同時接受數(shù)據(jù)。3)

STB信號是由外設(shè)發(fā)出,一般有效300ns。4)

具備3個條件:STB為高,IBF為高,INTE為高,8255向CPU發(fā)中斷申請信號,通知CPU取走數(shù)據(jù)。5)

CPU接到中斷申請后,響應(yīng)中斷,向8255相應(yīng)端口發(fā)讀信號,6)讀信號的下降沿復(fù)位中斷申請,7)

上升沿復(fù)位8255向外設(shè)發(fā)的禁止輸入信號,外設(shè)得以向8255發(fā)送下一數(shù)據(jù)。(4)RD外設(shè)8255CPU(1)STB(2)IBF(3)INTR3.方式1下輸出操作的聯(lián)絡(luò)信號線定義及時序指定了端口C的3根線做其聯(lián)絡(luò)信號線。:OutputBufferFull,輸出緩沖器滿,8255接到CPU送來的數(shù)據(jù)后,將數(shù)據(jù)連帶這個信號一起送往外設(shè),這個信號相當(dāng)于啟動信號,通知外設(shè)開始接收數(shù)據(jù)。:外設(shè)應(yīng)答信號,外設(shè)送入8255,低有效。有效時表示外設(shè)已接到數(shù)據(jù),這個信號可以將OBF變高,表示CPU可以進(jìn)行下一次傳輸。INTR:中斷請求信號,由8255發(fā)往CPU,高有效,為高的條件是:WR、OBF、ACK和INTE均為高電平,分別表示為:WR為高:CPU已寫完一個數(shù)據(jù);OBF為高:輸出緩沖器已空;ACK為高:外設(shè)應(yīng)答信號結(jié)束。說明外設(shè)收到數(shù)據(jù);INTE為高:8255允許中斷。INTEA:InterruptEnable,中斷允許信號,設(shè)置中斷允許或屏蔽中斷的信號。INTE沒有外部引出端,由軟件對C口某位進(jìn)行置0或置1的操作實現(xiàn)。對A口,中斷允許端是PC6,對B口,是PC2。置1允許中斷,置0屏蔽中斷。端口B在方式1輸出下各個聯(lián)絡(luò)線的定義與端口A完全一樣,只是占用C口的聯(lián)絡(luò)線與端口A不同。其中,其中斷屏蔽允許位是PC2。其占用的聯(lián)絡(luò)線與輸入時一樣,但聯(lián)絡(luò)線的定義不同。PC0~2屬于B口聯(lián)絡(luò)線,PC3,PC6,PC7屬于A口聯(lián)絡(luò)線,PC4,PC5沒有被重新定義,仍可作為根本I/O口使用,屬于C口的高半局部,在控制字中定義其輸入輸出特性。輸出時序:1)

CPU在INTR為高的情況下WR信號有效,通過DB向8255寫入數(shù)據(jù);2)

WR信號的上升沿使INTR為低,禁止CPU繼續(xù)向8255發(fā)送數(shù)據(jù);3)

WR信號的上升沿使OBF信號有效,通知外設(shè)取走8255端口的數(shù)據(jù);同時,CPU輸入的數(shù)據(jù)也出現(xiàn)在8255相應(yīng)的端口上;4)

外設(shè)取走數(shù)據(jù),向8255發(fā)送應(yīng)答信號,5)

其下降沿復(fù)位OBF,6)

其上升沿復(fù)位INTR,使中斷申請信號有效,8255得以繼續(xù)向CPU申請中斷,輸出下一個數(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無效。但如果CPU禁止8255中斷,一般在硬件上不接INTR管腳,而INTE依然置1,供CPU查詢INTR。4.狀態(tài)字8255有固定的狀態(tài)字,反響了當(dāng)前8255正在工作的各種狀態(tài),即其內(nèi)部各存放器的狀態(tài),供CPU查詢,CPU通過讀寫8255的端口C可以獲取狀態(tài)字。47(1)未被A口和B口征用的引腳:將從定義為輸入的端口讀到引腳的輸入信息;將從定義為輸出的端口讀到輸出鎖存器的信息。(2)被A口和B口征用做為聯(lián)絡(luò)線的引腳:將從C口讀到反映8255狀態(tài)的狀態(tài)字。在讀C口時,讀到的數(shù)據(jù)有兩種情況:48方式1輸入:I/OI/OIBFAINTEAINTRAINTEBINTRBIBFBD7D6D5D4D3D2D1D0A組B組方式1輸出:OBFAINTEAI/OI/OINTRAINTEBINTRBOBFBD7D6D5D4D3D2D1D0A組B組49方式2:OBFAINTE1IBFAINTRA

D7D6D5D4D3D2D1D0A組B組INTE2端口C讀出內(nèi)容8255工作在方式1控制微型打印機應(yīng)用實例分析:PA端口與打印機的數(shù)據(jù)線相連;OBF(PC7)與打印機的STB相連,啟動打印機;ACK(PC6)與打印機的ACK相連,打印機取走數(shù)據(jù);ACK信號通知8255數(shù)據(jù)已被取走,該信號自動使OBF為高,但由于打印機速度很慢,因此在打印時,會發(fā)出BUSY信號,此時,需查詢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利用中斷申請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;測試PC1〔BUSY〕位是否為0。;為0,那么打印機閑;為1,打印機忙JNZSTARTMOVAL,[SI]MOVDX,0FBC0HOUTDX,AL;取一個要打印的字符送A口

56MOVDX,0FBC2HMOVAL,0OUTDX,AL;因PC6初始狀態(tài)為1,使其從高

;到低變化,以便形成負(fù)脈沖MOVAL,40HOUTDX,AL;PC6從低到高,形成負(fù)脈沖INCSILOOPSTARTHLT57PC3連到中斷控制器8259A的中斷請求信號輸入的IR3端。對應(yīng)于中斷類型號0BH,此中斷對應(yīng)的中斷向量放在00段2CH、2DH、2EH、2FH這4個單元中。設(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) ;給打印機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è)置計數(shù)器初值MOV AL,[DI]OUT 00H,AL ;輸出一個字符INC DIMOV AL,00HOUT 03H,AL ;產(chǎn)生選通INC ALOUT 03H,AL ;撤消選通〔產(chǎn)生負(fù)脈沖〕STI ;開中斷60NEXT:HLT ;等待中斷LOOP NEXT ;修改計數(shù)器的值,指向下一個要輸出的字符HLTCODEENDS中斷效勞子程序ROUTINTR如下:MOVAL,[DI]OUT 00H,AL ;從A口輸出一個字符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個高位數(shù)位為A口提供給答信號。這時,端口B仍可以方式0或方式1工作。輸出輸入方式2的信號聯(lián)絡(luò)線實際上是方式1輸入輸出的組合。同樣,方式2的時序?qū)嶋H上也是方式1的輸入與輸出的時序的組合。當(dāng)一個外設(shè)既可以用作輸入也可以用作輸出時,將其接口初始化為方式2,這樣輸入輸出就不用再重新初始化了,具體某個時刻是輸出操作還是輸入操作由程序來控制,CPU可以通過中斷或查詢狀態(tài)字來控制程序進(jìn)程。方式2的輸入與輸出是一個中斷源,因此,在中斷處理程序中還應(yīng)該查詢8255的狀態(tài)字,進(jìn)一步識別是輸入申請中斷還是輸出申請中斷,來啟動不同的處理程序。方式2的狀態(tài)字D7D6D5D4D3OBFAINTE1IBFAINTE2INTRA輸入:INTRAINTEAIBFAI/OI/OD3D4D5D6D7輸出:INTRAI/OI/OINTEAOBFAD3D4D5D6D7方式1輸出輸入兩個中斷允許位INTE1和INTE2要分別設(shè)置。在中服中要查詢OBF和IBF兩位,看是哪個操作在申請中斷。第三節(jié)鍵盤及LED顯示鍵盤及LED顯示電路鍵盤是微機系統(tǒng)最常使用的輸入設(shè)備小鍵盤:適用于單板機或以微處理器為根底的儀器,實現(xiàn)數(shù)據(jù)、地址、命令及指令等的輸入獨立鍵盤:通過5芯電纜與PC微機主機連接簡易鍵盤的工作原理+5V+5V+5V最簡單的線性結(jié)構(gòu)鍵盤每一個引腳連接一個鍵輸入0/1反映鍵是否按下簡易鍵盤的工作原理1.掃描法先使第0行接低電平,其余行為高電平,然后看第0行是否有鍵閉合〔通過檢查列線電位實現(xiàn)〕此后,再將第1行接地,然后檢測列線是否有變?yōu)榈碗娢坏木€。如此往下一行一行地掃描,直到最后一行在掃描過程中,當(dāng)發(fā)現(xiàn)某一行有鍵閉合時,便在掃描中途退出通過組合行線和列線可識別此刻按下的是哪一鍵KEYMOVDX,pt;pt為8255的控制寄存器地址:MOVAL,82H;方式選擇控制字OUTDX,ALWAITMOVAL,00H:MOVDX,PTA;所有行線輸出低電平,OUTDX,ALMOVDX,PTB;PTB為列線所連接的端口BINAL,DX;讀取列值A(chǔ)NDAL,0FFHCMPAL,0FFH;看是否有列線處于低電平JEWAIT;否,則沒有鍵閉合,循環(huán)等待CALLDELAY;是,則延遲20ms去抖動SCAN:MOVBL,0;鍵號基值為0MOVDL,0FEH;送掃描初值,只有最低位為“0”MOVCL,8;行數(shù)計數(shù)值ROW:MOVAL,DLOUTPTA,AL;掃描一行ROLDL,1;修改掃描值,使之下一行為“0”INAL,PTB;讀進(jìn)列值CMPAL,0FFHJNEKEYC;有列線為“0”,則進(jìn)一步取列位置ADDBL,8;沒有列線接地,則使鍵基值=鍵基值+列數(shù)DECCL;是否各行都掃完JNEROW;未掃完,則掃下一行JMPWAIT;已經(jīng)掃完,沒有按鍵按下,轉(zhuǎn)WAIT等待KEYC:RCRAL,1JNCPROCE;若此列接地,則轉(zhuǎn)至PROCEINCBL;鍵號=鍵基值+列號JMPKEYC;若未找到接地的列線,則轉(zhuǎn)KEYCODE繼續(xù)PROCE…;鍵命令處理,鍵值在BL寄存器中:…;后續(xù)處理程序2.反轉(zhuǎn)法首先,將行線作為控制線接一個輸出端口,將列線作為檢測線接一個輸入端口CPU通過輸出端口將行線〔控制線〕全部設(shè)置為低電平,然后從輸入端口讀取列線〔檢測線〕然后,將行線和列線的作用互換,即將列線作為控制線接輸出端口,行線作為檢測線接輸入端口將剛剛讀得的列值從列線所接端口輸出,再讀取行線的輸入值這樣,當(dāng)一個鍵被按下時,必定可以讀得一對唯一的行值和列值

…… ;設(shè)置行線接輸出端口,列線接輸入端口KEY2: MOVAL,00

MOV

DX,ROWPORT

OUTDX,AL

;設(shè)置行線全為低

MOV

DX,COLPORT

INAL,DX

;讀取列值

CMPAL,0FFH

JZKEY2

;無閉合鍵,循環(huán)等待

PUSHAX

;有閉合鍵,保存列值

PUSHAX

…… ;設(shè)置行線接輸入端口,列線接輸出端

MOVDX,COLPORT POPAX OUTDX,AL ;輸出列值

MOVDX,ROWPORT INAL,DX ;讀取行值

POPBX ;組合行列值

MOVAH,BL ;此時,AL=行值,AH=列值鍵盤掃描程序 MOVSI,OFFSETTABLE MOVDI,OFFSETCHAR MOVCX,64 ;CX=鍵的個數(shù)KEY3: CMPAX,[SI] ;與鍵值比較 JZKEY4 ;相同,說明查到 INCSI ;不相同,繼續(xù)比較 INCSI INCDI LOOPKEY3 JMPKEY1 ;全部比較完,仍無相同,說明是重鍵KEY4: MOVAL,[DI] ;獲取鍵代碼送AL …… ;判斷按鍵是否釋放,沒有那么等待 CALLDELAY ;按鍵釋放,延時消除抖動 …… ;后續(xù)處理 ;鍵盤的行列值表TABLE DW0FEFEH ;鍵0的行列值〔鍵值〕 DW0FDFEH ;鍵1的行列值 DW0FBFEH ;鍵2的行列值 …… ;其他鍵的行列值 ;鍵盤的鍵代碼表CHAR DB…… ;鍵0的代碼值 DB…… ;鍵1的代碼值 …… ;其他鍵的代碼值LED數(shù)碼管及其接口發(fā)光二極管LED是最簡單的顯示設(shè)備由7段LED就可以組成的LED數(shù)碼管LED數(shù)碼管廣泛用于單板微型機、微型機控制系統(tǒng)及數(shù)字化儀器中LED數(shù)碼管可以顯示內(nèi)存地址和數(shù)據(jù)等1.LED數(shù)碼管的工作原理主要局部是7段發(fā)光管順時針分別稱為a、b、c、d、e、f、g有的產(chǎn)品還附帶有一個小數(shù)點h通過7個發(fā)光段的不同組合主要顯示0-9也可顯示A-F〔16進(jìn)制數(shù)〕還可顯示個別特殊字符:-、PhgfedcbaLED數(shù)碼管的結(jié)構(gòu)共陽極陽極+5Vabcdefgh陰極abcdefgh共陰極2.單個LED數(shù)碼管的顯示8255PA0PA1PA2PA3PA4PA5PA6PA7驅(qū)動電路abcdefghhgfedcba

LEDTB DB3FH,06H,5BH,…… ;顯示代碼表

…… MOVAL,1 ;AL←要顯示的數(shù)字

MOVBX,OFFSETLEDTB XLAT ;換碼:AL←DS:[BX+AL] MOVDX,PORT OUTDX,AL ;輸出顯示3.多個LED數(shù)碼管的顯示8個數(shù)碼管:用2個8位輸出端口控制硬件上用公用的驅(qū)動電路來驅(qū)動各數(shù)碼管軟件上用掃描方法實現(xiàn)數(shù)碼顯示動態(tài)LED顯示器原理Com8255PA7hgfedcbaPA0PB0PB5ComComComComComhgfedcbahgfedcbahgfedcbahgfedcbahgfedcba例:設(shè)計兩個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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論