單片機(jī)第五章_第1頁(yè)
單片機(jī)第五章_第2頁(yè)
單片機(jī)第五章_第3頁(yè)
單片機(jī)第五章_第4頁(yè)
單片機(jī)第五章_第5頁(yè)
已閱讀5頁(yè),還剩59頁(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)介

第五章單片機(jī)I/O口原理及應(yīng)用單片機(jī)共有P0、P1、P2、P3四個(gè)8位準(zhǔn)雙向輸入輸出端口,每個(gè)端口都有鎖存器、輸出驅(qū)動(dòng)器和輸入緩沖器,都能作輸入輸出口用。單片機(jī)對(duì)外界進(jìn)行控制,是通過(guò)I/O口實(shí)現(xiàn)的,因此I/O口極具重要性??捎糜谧R(shí)別按鍵輸入和控制LED、數(shù)碼管等操作。13.2.1P1口、P3口的內(nèi)部結(jié)構(gòu)

一、P1口的內(nèi)部結(jié)構(gòu) 由一個(gè)輸出鎖存器、兩個(gè)三態(tài)輸入緩沖器和輸出驅(qū)動(dòng)電路組成----準(zhǔn)雙向口。DQCLKQP1.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳VCCRTP1口引腳21.輸出功能 內(nèi)部數(shù)據(jù)通過(guò)時(shí)鐘保存在鎖存器中,反相端連接到輸出驅(qū)動(dòng)電路,在管腳上同相輸出。 MOV(字節(jié))DQCLKQP1.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳VCCRTP1口引腳32.輸入功能:讀引腳或讀鎖存器讀引腳:I/O口作為源操作數(shù)的指令。下面一個(gè)緩沖器用于讀端口引腳數(shù)據(jù),當(dāng)執(zhí)行該類(lèi)指令時(shí),讀脈沖把該三態(tài)緩沖器打開(kāi),這樣端口引腳上的數(shù)據(jù)經(jīng)過(guò)緩沖器讀入到內(nèi)部總線。DQCLKQP1.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳VCCRTP1口引腳如:MOV、JB、JNB4讀鎖存器Read-Modify-Write I/O口作為目的操作數(shù)的指令(包含讀的步驟),讀取輸出鎖存器的狀態(tài)。上面一個(gè)緩沖器用于讀端口鎖存器數(shù)據(jù)。DQCLKQP1.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳VCCRTP1口引腳如:ANL、ORL、XRL、INC、DEC、DJNZ、CPL、JBC、MOVB、CLR、SETB5讀鎖存器原因:如果原端口輸出為1,且端口負(fù)載恰是一個(gè)晶體管基極,那么導(dǎo)通了的PN結(jié)會(huì)把端口引腳高電平拉低(見(jiàn)圖)。若直接讀端口引腳信號(hào),將會(huì)把原輸出的“1”電平誤讀為“0”電平。采用讀輸出鎖存器代替讀引腳,可避免上述錯(cuò)誤。6準(zhǔn)雙向口:下圖中,在讀入端口數(shù)據(jù)時(shí),由于輸出驅(qū)動(dòng)FET并接在引腳上,如果T導(dǎo)通,就會(huì)將輸入的高電平拉成低電平,產(chǎn)生誤讀。所以在端口進(jìn)行輸入操作前,應(yīng)先向端口鎖存器寫(xiě)“1”,使T截止,引腳處于懸浮狀態(tài),變?yōu)楦咦杩馆斎?。這就是準(zhǔn)雙向口的含義。DQCLKQP1.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳VCCRTP1口引腳7P1口工作原理輸出高低電平的實(shí)現(xiàn)(各個(gè)組成器件功能的理解)輸入狀態(tài)的實(shí)現(xiàn),兩種輸入操作的區(qū)別(源操作數(shù)或目的操作數(shù)指令,C51定義位變量sbit操作管腳。)輸入操作的條件?準(zhǔn)雙向口的含義8二、P3口的一位結(jié)構(gòu)DQCLKQP3.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳VCCRTP3口引腳第二輸入功能第二輸出功能1.作為通用I/O口與P1口類(lèi)似----準(zhǔn)雙向口(W=1)W192.P3口的第二功能(Q=1)DQCLKQP3.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳VCCRTP3口引腳第二輸入功能第二輸出功能 此時(shí)引腳部分輸入(Q=1、W=1)

,部分輸出(Q=1、W輸出)。W10P3口第二功能各引腳功能定義:P3.0:RXD串行口輸入P3.1:TXD串行口輸出P3.2:INT0外部中斷0輸入P3.3:INT1外部中斷1輸入P3.4:T0定時(shí)器0外部輸入P3.5:T1定時(shí)器1外部輸入P3.6:WR外部寫(xiě)控制P3.7:RD外部讀控制113.2.2P0口、P2口的內(nèi)部結(jié)構(gòu)一、P2口的內(nèi)部結(jié)構(gòu)

1.P2口作為普通I/O口DQCLKQMUXP2.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳地址控制VCCRTP2口引腳CPU發(fā)出控制電平“0”,使多路開(kāi)關(guān)MUX倒向鎖存器輸出Q端,構(gòu)成一個(gè)準(zhǔn)雙向口。其功能與P1相同。122.P2口作為地址總線 在系統(tǒng)擴(kuò)展片外存儲(chǔ)器時(shí),CPU發(fā)出控制電平“1”,使多路開(kāi)關(guān)MUX連接內(nèi)部地址線。此時(shí),P2輸出高8位地址。DQCLKQMUXP2.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳地址控制VCCRTP2口引腳13 由一個(gè)輸出鎖存器、兩個(gè)三態(tài)輸入緩沖器和輸出驅(qū)動(dòng)電路及控制電路組成。從圖中可以看出,P0口既可以作為I/O用,也可以作為地址/數(shù)據(jù)線用。DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳二、P0口的內(nèi)部結(jié)構(gòu)141.P0口作為普通I/O口①輸出時(shí) CPU發(fā)出控制電平“0”封鎖“與”門(mén),將輸出上拉場(chǎng)效應(yīng)管T1截止,同時(shí)使多路開(kāi)關(guān)MUX連接鎖存器輸出端。DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳15 這樣鎖存器便與驅(qū)動(dòng)場(chǎng)效應(yīng)管T2柵極接通。故內(nèi)部總線與P0口同相。由于輸出驅(qū)動(dòng)級(jí)是漏極開(kāi)路電路,若驅(qū)動(dòng)NMOS或其它拉流負(fù)載時(shí),需要外接上拉電阻。DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳16②輸入時(shí),分讀引腳或讀鎖存器

上、下兩個(gè)緩沖器分別用于讀鎖存器和端口引腳數(shù)據(jù),與前面講述相同。DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳172.P0作為地址/數(shù)據(jù)總線在系統(tǒng)擴(kuò)展時(shí),P0端口作為地址/數(shù)據(jù)總線使用,分為:

P0引腳輸出地址/數(shù)據(jù)信息;P0引腳輸出地址/輸入數(shù)據(jù)。18

CPU發(fā)出控制電平“1”,打開(kāi)“與”門(mén),又使多路開(kāi)關(guān)MUX把CPU的地址/數(shù)據(jù)總線與T2柵極反相接通,輸出地址或數(shù)據(jù)。由圖上可以看出,上下兩個(gè)FET處于反相,構(gòu)成了推拉式的輸出電路,其負(fù)載能力大大增強(qiáng),可驅(qū)動(dòng)8個(gè)LSTTL負(fù)載(其它口為4個(gè))。DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳①

P0引腳輸出地址/數(shù)據(jù)信息19 輸入信號(hào)是從引腳通過(guò)輸入緩沖器進(jìn)入內(nèi)部總線。此時(shí),CPU自動(dòng)使MUX向下,并向P0口寫(xiě)“1”,“讀引腳”控制信號(hào)有效,下面的緩沖器打開(kāi),外部數(shù)據(jù)讀入內(nèi)部總線。②

P0引腳輸出地址/輸入數(shù)據(jù)----真正的雙向口DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫(xiě)鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳20小節(jié)共同點(diǎn):I/O準(zhǔn)雙向,位/字節(jié)操作,管腳/鎖存器輸入。復(fù)位時(shí),鎖存器均輸出高。區(qū)別:P1只有基本功能。P3口具有第二功能。P2口還可作為擴(kuò)展系統(tǒng)的地址總線,輸出高8位地址。P0作為I/O口使用時(shí),輸出級(jí)屬于開(kāi)漏電路,必須外接上拉電阻才會(huì)有高電平輸出。P0口作為地址/數(shù)據(jù)總線使用時(shí),輸出為推挽方式,驅(qū)動(dòng)能力強(qiáng);是真正的雙向口。215.2I/O端口的應(yīng)用

數(shù)碼管顯示和按鍵識(shí)別電路22一、顯示器及其接口單片機(jī)系統(tǒng)中常用的顯示器有:

發(fā)光二極管LED(LightEmittingDiode)顯示器、液晶LCD(LiquidCrystalDisplay)顯示器、CRT顯示器等。LED、LCD顯示器有兩種顯示結(jié)構(gòu):段顯示(7段、米字型等)和點(diǎn)陣顯示(5×8、8×8點(diǎn)陣等)。23七段LED顯示器

注意區(qū)分上面兩種接法。為了顯示數(shù)字或字符,必須進(jìn)行編碼。七段數(shù)碼管加上一個(gè)小數(shù)點(diǎn),共計(jì)8段。因此編碼正好是一個(gè)字節(jié)。用共陰LED顯示器顯示16進(jìn)制數(shù)的編碼列在下表。

24共陰數(shù)碼管碼表

0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0 1 2 345

0x7d,0x07,0x7f,0x6f,0x77,0x7c,

6 7 8 9AB

0x39,0x5e,0x79,0x71,0x00

CDEF 無(wú)顯示指令:MOVC共陽(yáng):CPL指令25LED數(shù)碼管顯示方式及電路

1.靜態(tài)顯示方式每個(gè)數(shù)碼管連接一個(gè)8位鎖存器來(lái)鎖存待顯示的字形碼。鎖存后顯示字形一直保持,直到送入新字形碼為止。優(yōu)點(diǎn):占用CPU時(shí)間少,編程簡(jiǎn)單。缺點(diǎn):占用硬件資源多,成本高。編程方法?262.動(dòng)態(tài)顯示方式(多位)連接:所有數(shù)碼管的段選線并聯(lián)在一起,由位選線控制哪一位數(shù)碼管有效。簡(jiǎn)化了硬件電路。方法:動(dòng)態(tài)掃描顯示是輪流向數(shù)碼管送出位選信號(hào)和相應(yīng)的字形碼,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。注意:必須持續(xù)送出顯示信號(hào)。2728動(dòng)態(tài)顯示流程入口當(dāng)前位=第1位,位選碼,位數(shù)返回位數(shù)=0YN輸出位選碼取數(shù)、查表并輸出段顯碼延時(shí)200us當(dāng)前位+1/移動(dòng)保存,位數(shù)-1實(shí)際工作流程開(kāi)始調(diào)用動(dòng)態(tài)顯示其它任務(wù)保存多位數(shù)據(jù),碼表29數(shù)碼管顯示實(shí)例例,4個(gè)共陰數(shù)碼管組成動(dòng)態(tài)顯示接口電路。顯示數(shù)據(jù)放在片內(nèi)RAM30H~33H單元(4位非壓縮BCD碼),編寫(xiě)動(dòng)態(tài)掃描顯示程序

。解:根據(jù)硬件端口P0/P2連接,編寫(xiě)共陰數(shù)碼管的動(dòng)態(tài)掃描顯示程序。注意:共陰和共陽(yáng)的區(qū)別。30源程序主程序流程

(無(wú)其它功能)開(kāi)始準(zhǔn)備數(shù)據(jù),表頭調(diào)用顯示子程序

ORG0000HMOV30H,#0MOV31H,#1MOV32H,#2MOV33H,#3;預(yù)置顯示數(shù)據(jù)為0,1,2,3MOVDPTR,#TAB;段選碼表首地址MAIN:ACALLDISPLAY

NOPAJMPMAINDISP:???RETTAB:DB3FH,06H,5bH,4fH,66HDB6DH,7DH,07H,7fH,6fH

END31源程序DISP:MOVR0,#30H;數(shù)據(jù)緩沖區(qū)首址MOVR1,#0FEH;共陰初始位選碼MOVR2,#4;數(shù)碼管個(gè)數(shù)loop:MOVA,@R0;取待顯示數(shù)據(jù)MOVCA,@A+DPTR;查顯示碼MOVP0,A;送出顯示段碼MOVP2,R1;送出位選碼LCALLDELAY;延時(shí)200us左右

INCR0;修改地址指針MOVA,R1RLAMOVR1,A;移位位選碼DJNZR2,LOOP;未顯示完,繼續(xù)

RET入口返回位數(shù)=0YN輸出位選碼取數(shù)、查表并輸出段顯碼延時(shí)200us當(dāng)前位=第1位,位數(shù)=4,位選碼當(dāng)前位+1/移動(dòng)保存,位數(shù)-1共陰和共陽(yáng)的區(qū)別:段碼和位碼都取反32C51源程序#include<REG52.h>#defineucharunsignedcharvoidmain(){

uchar*addr,*temp1;

ucharcodetab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar

se_bit=0xfe;

ucharcount,temp2;

addr=0x30;temp1=addr;

for(count=0;count<4;count++){*temp1=count;temp1+=1;}while(1){temp1=addr;temp2=se_bit;

for(count=0;count<4;count++){P0=tab[*temp1];P2=temp2;Delay();temp1++;temp2=(temp2<<1)+1;}}}靈活變化端口,共陰/共陽(yáng),數(shù)量,內(nèi)容,高、低位等。開(kāi)始輸出n位段碼,位碼,延時(shí)返回輸出3位段碼,位碼,延時(shí)輸出2位段碼,位碼,延時(shí)輸出1位段碼,位碼,延時(shí)初始化33二、鍵盤(pán)的分類(lèi)鍵盤(pán)分編碼鍵盤(pán)和非編碼鍵盤(pán)。鍵盤(pán)上閉合鍵的識(shí)別由專(zhuān)用的硬件編碼器實(shí)現(xiàn),并產(chǎn)生鍵編碼號(hào)或鍵值的稱(chēng)為編碼鍵盤(pán),如BCD碼鍵盤(pán)、ASCII碼鍵盤(pán);而靠軟件來(lái)識(shí)別的稱(chēng)為非編碼鍵盤(pán); 在單片機(jī)組成的測(cè)控系統(tǒng)及智能化儀器中,用的最多的是非編碼行列式鍵盤(pán)。獨(dú)立式按鍵。34按鍵工作原理:用電平變化識(shí)別按鍵狀態(tài)(中斷或查詢(xún)),在閉合和斷開(kāi)時(shí),觸點(diǎn)會(huì)存在抖動(dòng)現(xiàn)象,需要消抖處理。硬件和軟件(延時(shí)5~15ms)消抖。還要避免重復(fù)處理。按鍵的行程分為三段:A抖動(dòng),懸空,B抖動(dòng)。35獨(dú)立式按鍵處理電路連接,處理簡(jiǎn)單,數(shù)量少,占用資源。處理語(yǔ)句匯編語(yǔ)言:MOVA,P2JB(JNB)P2.2,LabelC51,sbit變量,if(Key)語(yǔ)句等位和字節(jié)操作P2.0P2.1P2.2P2.3AT89C5136獨(dú)立按鍵控制程序1例,按鍵K/P2.3的狀態(tài)控制LED的亮滅:常態(tài)滅,按下亮。解:程序?yàn)檠h(huán)結(jié)構(gòu),按鍵的狀態(tài)引起兩分支:分別為亮、滅狀態(tài),再重復(fù)循環(huán)。MAIN: JBP2.3,OFF CLRP1.1 JMPNEXTOFF: SETBP1.1NEXT: JMPMAIN37獨(dú)立按鍵控制程序2例,用R7對(duì)按鍵K/P2.3的操作計(jì)數(shù)。解:程序?yàn)檠h(huán)結(jié)構(gòu),按鍵的狀態(tài)引起兩分支:分別為常態(tài)無(wú)效、按下遞加,再重復(fù)循環(huán)。MAIN: MOVR7,#0LOOP: JBP2.3,$ INCR7

JNBP2.3,$

JMPLOOPP2.0P2.1P2.2P2.3AT89C51思考:前例可否重復(fù)處理?顯示結(jié)果;多個(gè)按鍵38行列式按鍵處理可處理比獨(dú)立式按鍵更多的數(shù)量,識(shí)別步驟增加(兩種識(shí)別方法)電路連接,見(jiàn)下頁(yè)識(shí)別原理:行、列分別操作,再查表判斷。也可掃描檢測(cè)(見(jiàn)教材P122)。條件:只按一個(gè)鍵,簡(jiǎn)化處理39404×4行列式按鍵代碼表

0 1 2 3

ee de be 7e

4 5 6 7 ed dd

bd 7d

8 9 A B

eb db bb 7b

C D E F e7 d7 b7 7741鍵盤(pán)處理的一般過(guò)程1判斷有無(wú)按鍵被按下2消除鍵盤(pán)抖動(dòng)(10ms,實(shí)驗(yàn)可省略)3識(shí)別鍵盤(pán)的“按下鍵”4執(zhí)行對(duì)應(yīng)的任務(wù)(或標(biāo)記)5等待鍵盤(pán)松開(kāi)(200ms,兩種方法)要點(diǎn):一般作為子程序;避免重復(fù)處理42獨(dú)立按鍵處理流程:

防干擾、抖動(dòng)和重復(fù)(時(shí)間長(zhǎng))入口返回YN任務(wù)11鍵按下?2鍵按下?1鍵按下?2鍵按下?NNNYYY任務(wù)243行列按鍵處理流程1入口返回YN標(biāo)記或處理延時(shí)列輸出低,取行值鍵按下?1鍵按下?2鍵按下?NNYY合并行列鍵值行輸出低,取列值標(biāo)記或處理44圖5-15鍵盤(pán)掃描程序流程圖行列按鍵處理流程2

(教材P122)45小節(jié)獨(dú)立按鍵識(shí)別方法鍵盤(pán)和數(shù)碼管工作原理按鍵處理和動(dòng)態(tài)顯示流程46三程序?qū)嵗?,單片機(jī)端口P1.1控制單個(gè)LED亮滅,實(shí)現(xiàn)閃爍。算法:程序?yàn)檠h(huán)結(jié)構(gòu):端口先輸出初始亮狀態(tài),延時(shí),再輸出滅狀態(tài),延時(shí),再重復(fù)??刂疲?為亮,1為滅。延時(shí)在300ms~1s范圍便于觀察。47LED閃爍流程源程序開(kāi)始輸出亮狀態(tài)延時(shí)輸出滅狀態(tài)延時(shí)

ORG0000HMAIN:CLRP1.1;低電平LED亮

ACALLDELAY;調(diào)延時(shí)子程序

SETBP1.1ACALLDELAYAJMPMAIN;循環(huán)DELAY:???RETEND48流水燈程序?qū)嵗?例,8個(gè)LED的流水燈控制。P1端口連接LED。從右到左逐個(gè)點(diǎn)亮并循環(huán),其余7個(gè)LED熄滅。算法:程序?yàn)樘厥獾难h(huán)結(jié)構(gòu):端口先輸出初始狀態(tài),延時(shí),再輸出下一個(gè)狀態(tài),直到完成所有8個(gè)狀態(tài),再重復(fù)??刂疲?為亮,1為滅,因此初始狀態(tài)為FEH,或11111110b

。0的位置逐次左移并循環(huán)。49流水燈流程開(kāi)始準(zhǔn)備初始狀態(tài)位數(shù)=0技巧做法(簡(jiǎn)練)特殊循環(huán)輸出狀態(tài)延時(shí)簡(jiǎn)單方法(麻煩)修改狀態(tài)開(kāi)始輸出狀態(tài)1,延時(shí)輸出狀態(tài)2,延時(shí)輸出狀態(tài)3,延時(shí)輸出狀態(tài)8,延時(shí)查表法50源程序

ORG0000HMOVR7,#0FEH;初始點(diǎn)亮最右邊LEDLOOP:MOVP1,R7;輸出數(shù)據(jù)到P1口LCALLDELAY;延時(shí)MOVA,R7RLAMOVR7,A;點(diǎn)亮的LED左移一位SJMPLOOP;循環(huán)DELAY:MOVR6,#4H;延時(shí)子程序DE1:MOVR5,#150DE2:MOVR4,#250DJNZR4,$DJNZR5,DE2DJNZR6,DE1

RETEND靈活變化端口,方向,花樣(亮滅),數(shù)量等。51C51源程序#include<REG52.h>#defineucharunsignedcharvoidDelay(){unsignedintx; for(x=0;x<60000;x++);}voidmain(){

uchar

cmd=0xfe; while(1){ P1=cmd; Delay(); if((cmd&0x80)==0x80)

cmd=(cmd<<1)+1;elsecmd=cmd<<1;}}52流水燈程序?qū)嵗?例,按鍵控制8個(gè)LED的流水燈移動(dòng)。P2.1連接按鍵,按1次LED移動(dòng)1位,從中間往兩邊循環(huán)。解:P2.0P2.1P2.2P2.3AT89C51識(shí)別按鍵后移動(dòng)LED,流水燈用查表法。MAIN: MOVR7,#0LOOP: JBP2.1,$ CALLLED2 INCR7 CJNER7,#4,LOOP

JMPMAIN53行列式按鍵識(shí)別實(shí)例例,4×4行列按鍵與P2端口連接,P2的低4bit連接行,高4bit連接列,編寫(xiě)按鍵識(shí)別程序

。算法:先由低4位送0識(shí)別列的狀態(tài),再由高4位送0識(shí)別行的狀態(tài)。將合并的狀態(tài)同按鍵碼比較即可識(shí)別按鍵的操作。注意消除按鍵抖動(dòng)。54簡(jiǎn)單識(shí)別子程序KScan: mov P2,#0xff mov P2,#0x0fmov a,P2 cjne a,#0x0f,key16

mov a,#0xff ajmp KeyexitKey16:mov b,amov P2,#0xf0mov a,P2

orl a,b簡(jiǎn)單操作:未延時(shí)消抖。靈活變化端口,內(nèi)容(按鍵號(hào)),標(biāo)記或執(zhí)行等。 cjne a,#0xee,key_0 ;11101110 mov a,#0 jmp keyexitkey_0: cjne a,#0xde,key_1 ;11011110 mov a,#1jmp keyexitkey_1: cjne a,#0xbe,key_2 mov a,#2 jmp keyexitkey_2: cjne a,#0x7e,key_3 mov a,#3 jmp keyexitkey_3: ......Keyexit: ret55C51簡(jiǎn)單識(shí)別源程序voidScan16(){

uchar

KeyStatus,cow,col; P2=0xff; P2=0x0f; KeyStatus=P2; if(KeyStatus!=0x0f){ P2=0x0f; cow=P2; P2=0xf0; col=P2;

KeyStatus=cow+col; switch(KeyStatus){ case0xee: DisBuf[7]=0xe;break; case0xde: DisBuf[7]=0;break; case0xbe: DisBuf[7]=0xf;break; case0x7e: DisBuf[7]=0xd;break; case0xed: DisBuf[7]=7;break; case0xdd: DisBuf[7]=8;break; case0xbd: DisBuf[7]=9;break; case0x7d: DisBuf[7]=0xc;break; case0xeb: DisBuf[7]=4;break; case0xdb: DisBuf[7]=5;break; case0xbb: DisBuf[7]=6;break; case0x7b: DisBuf[7]=0xb;break; case0xe7: DisBuf[7]=1;break; case0xd7: DisBuf[7]=2;break; case0xb7: DisBuf[7]=3;break; case0x77: DisBuf[7]=0xa;break;}}}56避

溫馨提示

  • 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)論