L3: jb acc.7,next1 mov a,#0ch
;------------------------------------------------------- lk: add a,R4 push acc
k4: lcall delay1 ;若同时有其他按键,则等待 lcall ks jnz k4
;-------------------------------------------------------- mov r3,#07h clr a mov r0,#30h mov r1,#31h mm1: mov a,@r1 mov @r0,a inc r0 inc r1 djnz r3,mm1 pop acc mov @r0,a RET
;------------------------------------------------------ next1: inc R4 ;------列扫描 mov a,R2 JNB acc.3,n2 ljmp n1 n2: ljmp key n1: rl a mov R2,a ljmp k3
29
;---------------------------------------------- ks: mov a,#0f0h ;判断P1口 mov P1,a nop nop mov a,P1 cpl a anl a,#0f0h RET
;-------------------------------------------------- DELAY1:
SETB RS0 dl: mov R5,#0ah dl2: mov R6,#63 dl3: nop nop djnz R6,dl3 djnz R5,dl2 CLR RS0 RET
;--------------------------------------------------- ;30H-37H初值为零
;---------------------------------------------------- initil:
mov r3,#08h mov r0,#30h m1: mov @r0,#00h inc r0
djnz r3,m1 RET
30
;---------------------------------------------------- ;显示
;--------------------------------------------------- modd:
MOV P0,#8EH
CALL ENABLE mov A,37H
mov DPTR,#TABLE3 MOVC A,@A+DPTR CALL WRITE2 RET
;-------------------------------------------------- ;开机提示字
;------------------------------------------------- kaiji: mov a,37h cjne a,#0fh,DFF
MOV P0,#80H ;设光标地址 CALL ENABLE
MOV DPTR,#TABLE1;写数据 CALL WRITE1
CALL DELAY10 CALL DELAY10 CALL DELAY10 CALL DELAY10 CALL DELAY10
mov a,37h cjne a,#0fh,DFF
MOV P0,#80H ;设光标地址 CALL ENABLE
31
MOV DPTR,#TABLE5;写数据 CALL WRITE1
CALL DELAY10 CALL DELAY10 CALL DELAY10 CALL DELAY10 CALL DELAY10
DFF: RET
;---------------------------------------------- ;按键值播放歌曲
;---------------------------------------------- SOP: mov a,37h cjne a,#01h,A11 LCALL MODD
MOV 52H,#HIGH TABLE10 MOV 53H,#LOW TABLE10 LCALL INITILE2 lcall MAIN0 A11: CJNE A,#02H,A22 LCALL MODD
MOV 52H,#HIGH TABLE20 MOV 53H,#LOW TABLE20 LCALL INITILE2 lcall MAIN0 A22: CJNE A,#03H,A33 LCALL MODD
MOV 52H,#HIGH TABLE30 MOV 53H,#LOW TABLE30 LCALL INITILE2 lcall MAIN0
32
A33: CJNE A,#04H,A44 LCALL MODD
MOV 52H,#HIGH TABLE40 MOV 53H,#LOW TABLE40 LCALL INITILE2 lcall MAIN0 A44: CJNE A,#05H,A55 LCALL MODD
MOV 52H,#HIGH TABLE50 MOV 53H,#LOW TABLE50 LCALL INITILE2 lcall MAIN0 A55: CJNE A,#06H,A66 LCALL MODD
MOV 52H,#HIGH TABLE60 MOV 53H,#LOW TABLE60 LCALL INITILE2 lcall MAIN0 A66: CJNE A,#07H,AAA LCALL MODD
MOV 52H,#HIGH TABLE70 MOV 53H,#LOW TABLE70 LCALL INITILE2 lcall MAIN0 AAA: RET
;****************************************** INITILE2:
MOV L50MS,#20 MOV L1MS,#00H MOV L250MS,#00H
33