没事的时候参照例子做了个音乐播放程序,大家交流一下。
COUNT EQU 30H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIMER0
ORG 0050H
MAIN: MOV SP,#0050H
MOV TH0,#0D8H
MOV TL0,#0B1H
MOV IE,#82H
MOV TMOD,#01H
MUSIC0: MOV DPTR,#TAB
MOV COUNT,#00H
MOV B,#00H
MUSIC1: CLR A
MOVC A,@A+DPTR
JZ ENDT0
CJNE A,#0FFH,MUSIC5
LJMP MUSIC3
MUSIC5: MOV R6,A
INC DPTR
MOV A,B
MOVC A,@A+DPTR
MOV R7,A
SETB TR0
MUSIC2: CPL P1.7
MOV A,R6
MOV R3,A
LCALL DELAY
MOV A,R7
CJNE A,COUNT,MUSIC2
MOV COUNT,#00H
INC DPTR
LJMP MUSIC1
MUSIC3: CLR TR0
MOV R2,#0DH
MUSIC4: MOV R3,#0FFH
LCALL DELAY
DJNZ R2,MUSIC2
INC DPTR
LJMP MUSIC1
ENDT0: MOV R2,#64H
MUSIC6: LCALL DELAY
DJNZ R2,MUSIC6
LJMP MUSIC0
TIMER0: MOV TH0,#0D8H
MOV TL0,#0B1H
INC COUNT
RETI
DELAY: MOV R4,#02H
DJNZ R4,$
DJNZ R3,DELAY
RET
TAB:
DB 026H,020H,020H,020H,020H,020H,026H,010H,020H,010H,020H,080H,026H,020H,030H,020H
DB 030H,020H,039H,010H,030H,010H,030H,080H,026H,020H,020H,020H,020H,020H,010H,020H
DB 020H,080H,02BH,020H,026H,020H,020H,020H,02BH,010H,026H,010H,02BH,080H,026H,020H
DB 030H,020H,030H,020H,039H,010H,026H,010H,026H,020H,040H,010H,039H,010H,026H,020H
DB 030H,020H,030H,020H,039H,010H,026H,010H,026H,080H,026H,020H,02BH,010H,026H,020H
DB 02BH,020H,030H,010H,039H,010H,026H,010H,02BH,010H,02BH,020H,02BH,040H,040H,020H
DB 020H,010H,020H,010H,02BH,010H,026H,030H,030H,080H,018H,020H,018H,020H,026H,020H
DB 020H,020H,020H,040H,026H,020H,030H,020H,020H,030H,020H,020H,01CH,020H,020H,020H
DB 020H,080H,01CH,020H,01CH,020H,01CH,020H,030H,020H,030H,060H,039H,010H,030H,010H
DB 020H,020H,02BH,010H,026H,010H,02BH,010H,026H,010H,026H,010H,02BH,010H,02BH,080H
DB 018H,020H,018H,020H,026H,020H,020H,020H,020H,060H,026H,010H,02BH,020H,030H,020H
DB 030H,020H,01CH,020H,020H,020H,020H,080H,026H,020H,030H,010H,030H,010H,030H,020H
DB 039H,020H,026H,010H,02BH,010H,02BH,020H,02BH,040H,040H,010H,040H,010H,020H,010H
DB 020H,010H,02BH,010H,026H,030H,030H,080H,000H
END
参考原理图