满意答案
greensob
2014.01.22
采纳率:48% 等级:11
已帮助:1998人
自己写的程序,多谢支持!给点分,我在Keil上试过了。
ORG 0000H
LJMP START
ORG 000BH
LJMP TIMER
START:CLR TR0
MOV SP,#70H
MOV TMOD,#01H
MOV IE,#82H
MOV P0,#0FFH
XUANZ:
MOV A,P2
CJNE A,#0FFH,BOFANG
KEY:MOV R0,#00H
JB P1.0,KEY1
LJMP KEYIN
KEY1:INC R0
JB P1.1,KEY2
LJMP KEYIN
KEY2:INC R0
JB P1.2,KEY3
LJMP KEYIN
KEY3:INC R0
JB P1.3,KEY4
LJMP KEYIN
KEY4: INC R0
JB P1.4,KEY5
LJMP KEYIN
KEY5:INC R0
JB P1.5,KEY6
LJMP KEYIN
KEY6:INC R0
JB P1.6,KEY7
LJMP KEYIN
KEY7:INC R0
JB P1.7,XUANZ
KEYIN:
LCALL DELAY1
MOV A,R0
MOV B,#02H
MUL AB
MOV 33H,A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV 30H,A
MOV TH0,A
INC 33H
MOV A,33H
MOVC A,@A+DPTR
MOV 31H,A
MOV TL0,A
SETB TR0
SK:
MOV A,P1
CJNE A,#0FFH,SK
LJMP START
BOFANG:
JB P2.0,K1
MOV DPTR,#TABLE2
LJMP KS
K1:JB P2.2,K2
MOV DPTR,#TABLE3
LJMP KS
K2:JB P2.5,XUANZ
MOV DPTR,#TABLE4
KS: MOV 40H,#00H
NEXT:MOV A,40H
MOVC A ,@A+DPTR
MOV R2,A
JZ STOP
ANL A,#0FH
MOV R5,A
MOV A,R2
SWAP A
ANL A,#0FH
JNZ SING
CLR TR0
LJMP W1
SING:DEC A
MOV 22H,A
RL A
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV TH0,A
MOV 30H,A
MOV A,22H
RL A
INC A
MOVC A,@A+DPTR
MOV TL0,A
MOV 31H,A
SETB TR0
W1:LCALL DELAY
INC 40H
LJMP NEXT
STOP:CLR TR0
LJMP START
DELAY1:MOV R7,#40
D1:MOV R6,#200
DJNZ R6,$
DJNZ R7,D1
RET
DELAY:MOV R7,#2
W2:MOV R4,#187
W3:MOV R3,#248
DJNZ R3,$
DJNZ R4,W3
DJNZ R7,W2
DJNZ R5,DELAY
RET
TIMER:PUSH ACC
PUSH PSW
MOV TL0,31H
MOV TH0,30H
CPL P0.7
POP PSW
POP ACC
RETI
TABLE1:DW 64580,64684,64777,64820
DW 64898,64968,65030,65058
TABLE2:DB 82H,01H,81H,94H,84H ;生日快乐
DB 0B4H,0A4H,04H
DB 82H,01H,81H,94H,84H
DB 0C4H,0B4H,04H
DB 82H,01H,81H,0F4H,0D4H
DB 0B4H,0A4H,94H
DB 0E2H,01H,0E1H,0D4H,0B4H
DB 0C4H,0B4H,04H
DB 82H,01H,81H,94H,84H
DB 0B4H,0A4H,04H
DB 82H,01H,81H,94H,84H
DB 0C4H,0B4H,04H
DB 82H,01H,81H,0F4H,0D4H
DB 0B4H,0A4H,94H
DB 0E2H,01H,0E1H,0D4H,0B4H
DB 0C4H,0B4H,04H
DB 00H
TABLE3:DB 72H,62H,52H,42H,32H,22H,12H,02H,00H ;这里可以装入你喜欢的音乐代码库,我这里没有了
TABLE4:DB 02H,12H,22H,32H,42H,52H,62H,72H,00H ;这里可以装入你喜欢的音乐代码库,我这里没有了
END
00分享举报