單片機(jī)鍵盤(pán)掃描及數(shù)碼管顯示_第1頁(yè)
單片機(jī)鍵盤(pán)掃描及數(shù)碼管顯示_第2頁(yè)
單片機(jī)鍵盤(pán)掃描及數(shù)碼管顯示_第3頁(yè)
已閱讀5頁(yè),還剩6頁(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、單片機(jī)鍵盤(pán)掃描及數(shù)碼管顯示2010-08-19 09:32*MCS-51單片機(jī)匯編程序語(yǔ)言基本模型*ORG 0003HLJMP MY.INT0;外部中斷0入口LED_D EQU 6ORG 0000HLJMP START;顯示模塊數(shù);復(fù)位后程序計(jì)數(shù)器PC二0000HORG 000BHLJMP MY.T0;定時(shí)器中斷0入口ORG 0013HLJMP MY.INT1;外部中斷1入口ORG 001BHLJMP MY.T1ORG 0023HLJMP MY.TXORG 002BHLJMP MY.T2;定時(shí)器中斷1入口;串行口中斷入口;定時(shí)器中斷2入口 (8032/8052)ORG 0030HSTART:;

2、程序開(kāi)始MOV SP,#50H;設(shè)巻堆棧指針;MOV IE, S10000001B ;EA - ET2 ES ET1 EXI ETO EXOSETB EA ;總中斷允許SETB EXO ;外部中斷0允許MOV P1,#OFH;鍵盤(pán)中斷條件MOV 30H,#0MOV 31H,#16; 16二空值MOV 32H,#16MOV 33H,#16MOV 34H,#16MOV 35H,#16LCALL LED.OUTLCALL DELAY;延時(shí)子程序MAIN:lcall keylcall led_outLCALL DELAY;延時(shí)子程序LJMP MAIN;程序結(jié)朿MY_ITO:;外部中斷0服務(wù)子程序LCA

3、LL KEYLJMP GO_TOINTO.END:LCALL LED_OUT ;顯示輸出子程序RETI;中斷返回MY_INT1:;外部中斷1服務(wù)子程序RETI;中斷返回MY_TO:;泄時(shí)器中斷0服務(wù)子程序RETI;中斷返回MY_T1:;泄時(shí)器中斷1服務(wù)子程序RETI;中斷返回MY_TX:;串行口中斷服務(wù)子程序RETI;中斷返回MY_T2:;泄時(shí)器中斷2服務(wù)子程序(8032/8052)RETI;中斷返回*;鍵盤(pán)掃描子程序;岀口: A二鍵值;占用:A, Pl, SP, R2, R3, R6, R7*KEY:LCALL KS1JZ KEYENDLCALL YS10MSLCALL KS1JZ KEYE

4、NDMOV R2,#OEFHMOV R3, #00H;是否有鍵按下;無(wú)鍵按下,返回;1OMS延時(shí);是否有鍵按下;無(wú)鍵按下,返回;賦首列掃描字;賦首列指針LK1:MOV P1,R2;掃描字=>P1MOV A, Pl;讀戸1 口JB ACC. 0, LONE ;0行無(wú)鍵按下,轉(zhuǎn)1行MOV A, #0;0行有鍵按下,賦行號(hào)=>ALJMP LKP;轉(zhuǎn)求鍵號(hào)LONE:JB ACC. 1,LTWO ; 1行無(wú)鍵按下,轉(zhuǎn)2行MOV A, #4;1行有鍵按下,賦行號(hào)=>ALJMP LKP;轉(zhuǎn)求鍵號(hào)LTWO:JB ACC. 2, LTHR ;2行無(wú)鍵按下,轉(zhuǎn)3行MOV A, #8;2行有鍵按下

5、,賦行號(hào)=>ALJMP LKP;轉(zhuǎn)求鍵號(hào)LTHR:JB ACC. 3, NEXT ;3行無(wú)鍵按下,轉(zhuǎn)列加一MOV A, #12;3行有鍵按下,賦行號(hào)=>ALJMP LKP;轉(zhuǎn)求鍵號(hào)NEXT:INC R3;列加一,指向下一列MOV A, R2;掃描字二ARL A;掃描字左移MOV R2, A;暫存掃描字LJMP LK1;轉(zhuǎn)下一列掃描LKP:ADD A, R3;求鍵值(當(dāng)前行+當(dāng)前列)PUSH A;鍵值一壓入堆棧LK2:LCALL KS1;是否有鍵按下JNZ LK2;A不等于0,再判斷POP A;鍵已經(jīng)釋放,A二鍵值lcall YS10MS;10MS 延時(shí)lcall YS10MS;10

6、MS 延時(shí)KEYEND:;返回RET豐卒半半平不審茶券畢卒豐豐彷彷蘋(píng)豐豐半節(jié)平彷畢舉卒卒卒下卒不彷豐卒卒不不不不芥卒卒卒不彷蘋(píng)畢豐平平豐豐不不怎茶KS1:;是否有鍵按下,有A二1,否則A=0MOV P1,#OFH ;列線全部有效MOV A, Pl;CPL A;ANL A, #OFH;RETYS10MS:涎時(shí)10亳秒,晶振頻率為12. OOMHZMOV R6, #50LOOP:MOV R7, #98DJNZ R7, SNOPDJNZ R6, LOOPRETdelay:涎時(shí)mov r7, #1loop2:mov r6, #20;0loopl:mov r5,#50 djnz r5, $ djnz r

7、6,loopl djnz r7,loop2retLED.OUT:;顯示輸出子程序(741S164)MOV RO, #30H;顯示緩沖區(qū)首地址MOV R2, #LED_D ;顯示模塊長(zhǎng)度MOV DPTR, STABLED_01:MOV A, R0INC ROMOVC A,©A+DPTRMOV SBUF,AJNB TI,$CLR TIDJNZ R2, LED_OCLR P3. 4SETB P3. 4;鎖存脈沖RET*X*t» 丫 r* * j : T . I | J 丫 ( * | *y* * | «7» 丫. j j | < *T» 丫.

8、| | rTAB:;段碼表 ABCDEFG.DB0000001IBDB10011U1BDB00100101BDB00001101BDB10011001BDB01001001BDB01000001BDB00011U1BDB00000001BDB00001001B0123456789DB00010001BADB11000001BBDB01100011BCDB1OOOO1O1BDDB0U00001BEDB01110001BFDB11111U1B空DB1111U01B一;段碼表ABCDEFG. *fMY_R:;顯示緩沖區(qū)左移MOV 35H, 34HMOV 34H, 33HMOV 33H,32HMOV

9、32H, 31HMOV 31H, 30HRET *fGO.TO:;散轉(zhuǎn)程序;散轉(zhuǎn)表首地址;鍵值;乘2;0轉(zhuǎn)移MOV DPTR, #TBJMOV 40H, AADD A, 40HJMP ©A+DPTRTBJ: SJMP MY_KOSJMP MY.KlSJMP MY.K2SJMP HY_K3SJMP HY_K4SJMP HY_K5SJMP HY_K6SJMP MY.K7SJMP MY.K8SJMP MY.K9SJMP MY.K1OSJMP MY.KllSJMP MY.K12SJMP MY.K13SJMP MY.K14SJMP MY.K15MY_KO:LJMP MY.KEYOMY_K1:L

10、JMP MY.KEYlMY_K2:LJMP MY.KEY2MY_K3:MY_K4:MY_K5:MY_K6:MY_K7:MY_K8:MY_K9:MY_K10:MY_K11:MY_K12:MY_K13:MY_K14:MY_K15:TMY_KEYO:MY_KEY1:MY_KEY2:MY_KEY3:LJMP MY.KEY3LJMP HY_KEY4LJMP MY.KEY5LJMP MY.KEY6LJMP MY_KEY7LJMP MY_KEY8LJMP HY_KEY9LJMP MY.KEY10LJMP MY.KEY11LJMP MY.KEY12LJMP HY_KEY13LJMP MY_KEY14LJMP

11、MY_KEY15;此處添加0號(hào)鍵程序代碼LCALL MY_R ;緩沖區(qū)顯示值左移一位MOV 30H, #0LJMP INTO.END;此處添加1號(hào)鍵程序代碼LCALL MY_RMOV 30H, #1LJMP INTOJND;此處添加2號(hào)鍵程序代碼LCALL MY_RMOV 30H, #2LJMP INTO.END;此處添加3號(hào)鍵程序代碼LCALL MY_RMOV 30H, #3LJMP INTO.ENDMY_KEY4:;此處添加4號(hào)鍵程序代碼LCALL MY_RMOV 30比 #4LJMP INTO.ENDMY_KEY5:;此處添加5號(hào)鍵程序代碼LCALL MY_RMOV 30H, #5LJM

12、P INTO.ENDMY_KEY6:;此處添加6號(hào)鍵程序代碼LCALL MY_RMOV 30H, #6LJMP INTO.ENDMY_KEY7:;此處添加7號(hào)鍵程序代碼LCALL MY_RMOV 30H, #7LJMP INTO.ENDMY_KEY8:;此處添加8號(hào)鍵程序代碼LCALL MY_RMOV 30H, #8LJMP INTO.ENDMY_KEY9:;此處添加9號(hào)鍵程序代碼LCALL MY_RMOV 30H, #9LJMP INTO.ENDMY_KEY10:;此處添加A號(hào)鍵程序代碼LCALL MY_RMOV 30H, #10LJMP INTO.ENDMY_KEY11:;此處添加B號(hào)鍵程序代碼LCALL MY_RMOV 30H,#ULJMP INTO.ENDMY_KEY12:;此處添加C號(hào)鍵程序代碼LCALL MY_RMOV 30

溫馨提示

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