?? music.asm
字號:
TEMP_LOW EQU 30H
TEMP_HIGH EQU 31H
ORG 00H
JMP START
ORG 0BH
JMP TIMER0_INT
ORG 50H
START:
MOV TMOD,#00000001B ;SET TIMER0 MODE1
MOV IE,#10000010B ;ENABLE TIMER0 INTERRUPT
MAIN:
MOV R3,#8
MOV DPTR,#TONE_TABLE
SOUND_LOOP:
MOV A,#0 ;GET HIGH BYTE
MOVC A,@A+DPTR
MOV TH0,A
MOV TEMP_HIGH,A
INC DPTR ;DET LOW BYTE
MOV A,#0
MOVC A,@A+DPTR
MOV TL0,A
MOV TEMP_LOW,A
INC DPTR
SETB TR0 ;START TIMER0
MOV R5,#25 ;DELAY 0.5S
CALL DELAY
DJNZ R3,SOUND_LOOP
JMP MAIN
;*****************************************************
DELAY:
MOV R6,#f0H
DJNZ R6,$
DJNZ R5,DELAY
RET
;*****************************************************
TIMER0_INT:
PUSH ACC
PUSH PSW
MOV TL0,TEMP_LOW
MOV TH0,TEMP_HIGH
CPL P1.0
POP PSW
POP ACC
RETI
;******************************************************
TONE_TABLE
;12MHz/12/2=500000
DW 65536-385 ;Do
DW 65536-485 ;Ra
DW 65536-585 ;Mi
DW 65536-685 ;Fa
DW 65536-785 ;So
DW 65536-880 ;La
DW 65536-998 ;Ti
DW 65536-1047 ;Do
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -