⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music.asm

📁 单片机开发资料光盘-双龙-686M.zip
💻 ASM
字号:
TEMPLOW         EQU     30H
TEMPHIGH        EQU     31H
SOUNDPOINTER    EQU     32H                      	
;-----------------------------------------                         	
S	equ      65536
TEMP	equ	 12000000/12
T	equ	 TEMP/2                      	
;-----------------------------------------                         	
DO	equ	64580	;S-T/523
RE	equ     64684	;S-T/587
MI	equ     64777	;S-T/659
FA	equ     64820	;S-T/698
SO	equ     64898	;S-T/784
LA	equ     64968	;S-T/880
TI_L	equ     65030	;S-T/988                	
;-----------------------------------------                         	
DO_H	equ	65058	;S-T/1046
RE_H	equ    	65110	;S-T/1174
MI_H	equ    	65157	;S-T/1318
FA_H	equ    	65178	;S-T/1397
SO_H	equ    	65217	;S-T/1568
LA_H	equ    	65252	;S-T/1760
TI_H	equ    	65283	;S-T/1976
DO_HH	equ    	65297	;S-T/2093
	;=========================================
	;		主程序
	;=========================================
	ORG	00H
	JMP 	MAIN
	ORG   	0BH
	JMP 	TIMER_INT	                        	
	;=========================================
 	;		音乐演示子程序
	;=========================================                       	
MAIN:	
	JMP		RESET                       	
RESET:
	SETB    EA
	SETB    ET0
	MOV     TMOD,#00000001B 	;TIMER0 MODE 1
MAINLOOP:
	MOV     SOUNDPOINTER,#1                       	
SOUNDLOOP:
	MOV     A,SOUNDPOINTER
	CALL    GETSOUND
	JZ      SOUNDEND
	PUSH    ACC
	ANL     A,#0FH
	JZ      NOTONE
	SETB    TR0
	DEC     A
	MOV     R4,A	;根据SOUNDTABLE中数据的低四位选择音调频率
	CALL    GETTONE                      	
NOTONE:
	POP     ACC
	SWAP    A
	ANL     A,#0FH
	MOV     B,#5
	MUL     AB
	MOV     R5,A
	CALL    DELAY	;根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
	CLR     TR0
	INC     SOUNDPOINTER
	JMP     SOUNDLOOP                      	
SOUNDEND:
	MOV     R5,#20
	CALL    DELAY
 	JMP     MAINLOOP
TIMER_INT:
	PUSH    ACC
	MOV     TL0,TEMPLOW
	MOV     TH0,TEMPHIGH
	CPL     P2.0
	POP     ACC
	RETI
ENDSOUND	EQU	00H
GETSOUND:
	MOVC    A,@A+PC
	RET                   	
	;ORG	00DBH 
/*
SOUNDTABLE:
	DB      25H,28H
	DB      2AH,4AH,29H,28H,48H,28H        
	DB      26H,46H,28H,45H,25H,28H        
	DB      2AH,4AH,29H,28H,48H,28H        
	DB      29H,49H,2AH,49H,40H
	DB      2AH,4AH,2BH,4CH,40H
	DB      3DH,1DH,2DH,2DH,4CH,40H       
	DB      2AH,4AH,2CH,48H,28H,2AH       
	DB      29H,46H,25H,48H,40H
	DB      ENDSOUND*/
SOUNDTABLE:
        db 0x66,0x27,0x68,0x26,0x28,0x28,0x27,0x26,0x47,0x43
	db 0x67,0x28,0x69,0x27,0x29,0x29,0x28,0x27,0x46,0x46
	db 0x4a,0x4d,0x4c,0x2d,0x2c,0x2b,0x2b,0x2a,0x29,0x4a
	db 0x46,0x20,0x4b,0x29,0x6a,0x28,0x27,0x23,0x28,0x27
	db 0x46,0x46,0x4a,0x4d,0x4c,0x2d,0x2c,0x2b,0x2b,0x2a
	db 0x29,0x4a,0x46,0x20,0x4b,0x29,0x6a,0x28,0x27,0x23
	db 0x28,0x27,0x46,0x46
	db ENDSOUND
	;-----------------------------------
	;	选择音调频率
	;-----------------------------------
GETTONE:
	MOV     DPTR,#TONETABLE
	MOV     A,R4
	RL      A
	MOVC    A,@A+DPTR
	MOV     TH0,A
	MOV     TEMPHIGH,A
  	MOV     A,R4
  	RL      A
	INC     A
  	MOVC    A,@A+DPTR
	MOV     TL0,A
	MOV     TEMPLOW,A
	RET                        	
TONETABLE:
	DW      DO  ,RE  ,MI  ,FA  ,SO  ,LA  ,TI_L       
	DW      DO_H,RE_H,MI_H,FA_H,SO_H,LA_H,TI_H
	DW      DO_HH                    	
	;=========================================
	;		延时子程序
	;=========================================
                      	
DELAY:
DELAY1:
	MOV     R6,#100;50ms
DEL:    MOV     R7,#249
 	DJNZ    R7,$
	DJNZ    R6,DEL
	DJNZ    R5,DELAY1
	RET 
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -