單片機鍵盤掃描和數(shù)碼管顯示_第1頁
單片機鍵盤掃描和數(shù)碼管顯示_第2頁
單片機鍵盤掃描和數(shù)碼管顯示_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機鍵盤掃描及數(shù)碼管顯示2010-08-19 09:32*;MCS-51單片機匯編程序語言基本模型*LED_D EQU 6ORG 0000H;顯示模塊數(shù)LJMP START;復(fù)位后程序計數(shù)器 PC=0000HORG 0003HLJMP MY INTO;夕卜部中斷0入口ORG 000BHLJMP MY T0;定時器中斷0入口ORG 0013HLJMP MY INT1;夕卜部中斷1入口ORG 001BHLJMP MY T1;定時器中斷1入口ORG 0023HLJMP MY TX;串行口中斷入口ORG 002BHLJMP MY T2;定時器中斷2入口( 8032/8052)START:ORG 00

2、30H;程序開始MOV SP,#50H;設(shè)置堆棧指針;MOV IE,#10000001B ;EA - ET2 ES ET1 EX1 ET0 EX0SETB EA ;總中斷允許SETB EX0 ;外部中斷0允許MOV P1,#0FH;鍵盤中斷條件MOV 30H,#0MOV 31H,#16 ;16= 空值MOV 32H,#16MOV 33H,#16MOV 34H,#16MOV 35H,#16LCALL LED_OUTLCALL DELAY;延時子程序MAIN:Icall keyIcall led_out;延時子程序;程序結(jié)束LJMP MAINMY INTO:;外部中斷0服務(wù)子程序LCALL KEY

3、LCALL DELAYLJMP GO TOINTO END:LCALL LED_OUT ;顯示輸出子程序RETI;中斷返回MY INT1:;外部中斷1服務(wù)子程序RETIMY TO:;定時器中斷0服務(wù)子程序;中斷返回RETIMY T1:;定時器中斷1服務(wù)子程序;中斷返回RETIMY TX:;串行口中斷服務(wù)子程序;中斷返回RETI;中斷返回MY T2:;定時器中斷2服務(wù)子程序(8032/8052 )RETI;中斷返回*;鍵盤掃描子程序;出口: A=鍵值;占用:A,P1,SP,R2,R3,R6,R7*KEY:LCALL KS1JZ KEYENDLCALL YS10MSLCALL KS1JZ KEYE

4、NDMOV R2,#0EFHMOV R3,#00H;是否有鍵按下;無鍵按下,返回;10MS延時;是否有鍵按下;無鍵按下,返回;賦首列掃描字;賦首列指針LK1:MOV P1,R2;掃描字=>P1MOV A,P1;讀 P1 口JB ACC.0, LONE ;0 行無鍵按下,轉(zhuǎn) 1行MOV A,#0;0行有鍵按下,賦行號=>ALJMP LKP;轉(zhuǎn)求鍵號LONE:JB ACC.1 ,L TW0 ;1行無鍵按下,轉(zhuǎn)2行MOV A,#4;1行有鍵按下,賦行號=>ALJMP LKP;轉(zhuǎn)求鍵號LTW0:JB ACC.2, LTHR ;2行無鍵按下,轉(zhuǎn)3行MOV A,#8;2行有鍵按下,賦行號

5、=>ALJMP LKP;轉(zhuǎn)求鍵號LTHR:JB ACC.3,NEXT ;3行無鍵按下,轉(zhuǎn)列加一MOV A,#12;3行有鍵按下,賦行號=>ALJMP LKP;轉(zhuǎn)求鍵號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= 建值Icall YS10MS;10MS延時Icall YS10MS;10M

6、S延時KEYEND:;返回RET*5KS1:;是否有鍵按下,有 A=1,否則A=0MOV P1,#0FH ;列線全部有效MOV A,P1;CPL A;ANL A,#0FH ;RET*5YS10MS:;延時10毫秒,晶振頻率為12.00MHZMOV R6,#50LOOP:MOV R7,#98DJNZ R7,$NOPDJNZ R6,LOOPRET*delay:;延時mov r7,#1Ioop2:mov r6,#20;0loopl:mov r5,#50djnz r5,$djnz r6,loop1djnz r7,loop2ret*5LED_OUT:;顯示輸出子程序 (74IS164)MOV R0,#3

7、0H;顯示緩沖區(qū)首地址MOV R2,#LED_D ;顯示模塊長度MOV DPTR,#TABLED_O1:MOV A,R0INC ROMOVC A,A+DPTRMOV SBUF,AJNB TI,$CLR TIDJNZ R2,LED_O1CLR P3.4SETB P3.4;鎖存脈沖RET.*TAB:;段碼表 ABCDEFG.1DB00000011B ;0|DB10011111B ;1|DB00100101B ;2|DB00001101B ;3|DB10011001B ;4|DB01001001B ;5|DB01000001B ;6|DB00011111B ;7|DB00000001B ;8|DB0

8、0001001B ;9|DB00010001B ;A|DB11000001B ;B|DB01100011B ;C|DB10000101B ;D|DB01100001B ;E|DB01110001B ;F|DB11111111B ;空 |DB11111101B ;-|段碼表 ABCDEFG.1 *MY_R:;顯示緩沖區(qū)左移MOV 35H,34HMOV 34H,33HMOV 33H,32HMOV 32H,31HMOV 31H,30HRET*GO_TO:;散轉(zhuǎn)程序MOV DPTR,#TBJ ;散轉(zhuǎn)表首地址MOV 40H,A;鍵值A(chǔ)DD A,40H;乘 2JMP A+DPTRTBJ: SJMP MY_

9、K0;0 轉(zhuǎn)移SJMP MY_K1SJMP MY_K2SJMP MY_K3SJMP MY_K4SJMP MY_K5SJMP MY_K6SJMP MY_K7SJMP MY_K8SJMP MY_K9SJMP MY_K10SJMP MY_K11SJMP MY_K12SJMP MY_K13SJMP MY_K14SJMP MY_K15MY_K0:LJMP MY_KEY0MY_K1:LJMP MY_KEY1MY_K2:LJMP MY_KEY2MY_K3:LJMP MY_KEY3MY_K4:LJMP MY_KEY4MY_K5:LJMP MY_KEY5MY_K6:LJMP MY_KEY6MY_K7:LJMP

10、MY_KEY7MY_K8:LJMP MY_KEY8MY_K9:LJMP MY_KEY9MY_K10:LJMP MY_KEY10MY_K11:LJMP MY_KEY11MY_K12:LJMP MY_KEY12MY_K13:LJMP MY_KEY13MY_K14:LJMP MY_KEY14MY_K15:LJMP MYKEY15MY_KEYO:;此處添加0號鍵程序代碼LCALL MY_R ;緩沖區(qū)顯示值左移一位MOV 30H,#0LJMP INT0_ENDMY_KEY1:;此處添加1號鍵程序代碼LCALL MY_RMOV 30H,#1LJMP INT0_ENDMY_KEY2:;此處添加2號鍵程序代碼

11、LCALL MY_RMOV 30H,#2LJMP INT0_ENDMY_KEY3:;此處添加3號鍵程序代碼LCALL MY_RMOV 30H,#3LJMP INTO_ENDMY_KEY4:;此處添加4號鍵程序代碼LCALL MY_RMOV 30H,#4LJMP INT0_ENDMY_KEY5:;此處添加5號鍵程序代碼LCALL MY_RMOV 30H,#5LJMP INT0_ENDMY_KEY6:;此處添加6號鍵程序代碼LCALL MY_RMOV 30H,#6LJMP INT0_ENDMY_KEY7:;此處添加7號鍵程序代碼LCALL MY_RMOV 30H,#7LJMP INT0_ENDMY_KEY8:;此處添加8號鍵程序代碼LCALL MY_RMOV 30H,#8LJMP INT0_ENDMY_KEY9:;此處添加9號鍵程序代碼LCALL MY_RMOV 30H,#9LJMP INT0_ENDMY_KEY10:;此處添加A號鍵程序代碼LCALL MY_RMOV 30H,#10LJMP INT0_ENDMY_KEY11:;此處添加B號鍵程序代碼LCALL MY_RMOV 30H,#11LJMP INT0_ENDMY_KEY12:;此處添加C號鍵程序代碼LCALL MY_RMOV 30H,#1

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論