www.pudn.com > jianpan.rar > jianpan.asm


 
ORG 0000H 
;START: 
;AJMP MAIN 
 
;ORG 0003H 
;AJMP SCAN 
   
MAIN: 
;SETB IT0 
;SETB EX0 
;SETB EA 
KEY EQU 50H 
;HERE: 
;AJMP HERE 
 
SCAN:                          ;键扫描子程序 
MOV P2,#0FH               ;线反转法 先给列赋值 
MOV A,P2 
ANL A,#0FH 
MOV B,A 
MOV P2,#0F0H                    ;给行赋值 
MOV A,P2 
ANL A,#0F0H                      
ORL A,B                        ;行列做或运算 
CJNE A,#0FFH,READ              ;若A不为0FFH则有键按下进入键值读取子程序 
AJMP SCAN                      ;否则继续扫描 
                                 
READ:                          ;键值读取程序 
MOV KEY,A                       
MOV DPTR,#KEYDB                ;查表 
MOV R4,#0FFH 
 
REW: INC R4 
MOV A,R4 
MOVC A,@A+DPTR 
CJNE A,KEY,REW                 ;没找到键值则继续 
;RETI 
DIS:                           ;显示程序 
MOV A,R4                       ;键值查表的偏移值为此处的偏移量 
MOV DPTR,#TAB                  ;数码管显示值表基址 
MOVC A,@A+DPTR 
MOV P1,#0F0H                   ;选择数码管 
MOV P0,A                       ;显示值 
RET 
 
KEYDB:  
DB 07EH,07DH,07BH,77H 
DB 0EBH,0DBH,0BBH,0B7H 
DB 0DEH,0DDH,0DBH,0D7H 
DB 0EEH,0EDH,0EBH,0E7H 
 
 
TAB: 
DB 0C0H,0F9H,0A4H,0B0H 
DB 99H,92H,82H,0F8H 
DB 80H,90H,0A0H,0C3H 
DB 0C6H,0A1H,86H,8EH 
END