按鍵計數(shù)器
;運行結(jié)果:按P3.2或3.3(低4位的任意一個鍵盤)第一位數(shù)碼管加1直到9循環(huán)
; 開始顯示0把P3送OFH,判斷有沒有按鍵,沒有則反復(fù)循環(huán),有按R0加1,如到10
;那么則清除, 最后根據(jù)R0的值散轉(zhuǎn).
ORG 0000H;
LJMP MAIN;程序開始
ORG 030H;
MAIN: MOV P0,#028H;數(shù)碼管顯示0
clr p2.1 ;打開第一個數(shù)碼管
MOV R0,#00H;r0送0fh
ST: MOV P3,#0FH;p3 送0fh
MOV A,P3;
CJNE A,#0FH,F1;如果p3口的值等于0f,那么按鍵沒有按,
ACALL DEL;
AJMP ST;繼續(xù)檢測
F1: ACALL DEL;
CJNE A,#0FH,F2;再次判斷有沒有按
AJMP ST;繼續(xù)檢測
F2: INC R0;r0加1
CJNE R0,#0AH,F3;如果r0等于10轉(zhuǎn)道f3;OAH就是10, 到這里轉(zhuǎn)移重新
MOV R0,#00H;
F3: MOV DPTR,#JPTAB;取地址
MOV A,R0;
CLR C;清除進位
RLC A;a的內(nèi)容右移
JNC NADD;判斷有沒有進位, 有向下無到NDDA
INC DPH;有進位DPH加1
NADD: JMP @A+DPTR;根據(jù)A的內(nèi)跳轉(zhuǎn)到PR1,PR2....
JPTAB: NOP;
NOP;
AJMP PR1;
AJMP PR2;
AJMP PR3;
AJMP PR4;
AJMP PR5;
AJMP PR6;
AJMP PR7;
AJMP PR8;
AJMP PR9;
DEL: MOV R7,#04H;延時子程序
DEL1: MOV R6,#0FFH;
DEL2: MOV R5,#01FH;
DEL3: DJNZ R5,DEL3;
DJNZ R6,DEL2;
DJNZ R7,DEL1;
RET;
PR1: MOV P0,#7eH;顯示1
ACALL DEL;
AJMP ST;
PR2: MOV P0,#0a2H;顯示2
ACALL DEL;
AJMP ST;
PR3: MOV P0,#62H;顯示3
ACALL DEL;
AJMP ST;
PR4: MOV P0,#74H;顯示4
ACALL DEL;
AJMP ST;
PR5: MOV P0,#61H;顯示5
ACALL DEL;
AJMP ST;
PR6: MOV P0,#21H;
ACALL DEL;
AJMP ST;
PR7: MOV P0,#7aH;
ACALL DEL;
AJMP ST;
PR8: MOV P0,#20H;
ACALL DEL;
AJMP ST;
PR9: MOV P0,#60H;
ACALL DEL;
AJMP ST;
程序在倚天版運行的狀態(tài)按鍵顯示數(shù)字2
程序在倚天版運行的狀態(tài)按鍵顯示數(shù)字4
評論