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

📄 yinyue.asm

📁 51单片机的音乐子程序.下载后,直接插入你的主程序里就可以用.
💻 ASM
字号:

	;注意,音乐输出脚P1.0
	;%%%%%%%%%%%%%%%%%%%%%
	;	;定时/计数器1中断服务子程序
	;%%%%%%%%%%%%%%%%%%%%%
DS100:	PUSH	A
	PUSH	PSW
	MOV	TL1,COUNT5
	MOV	TH1,COUNT6
	CPL	P1.0
	POP	PSW
	POP	A
	RETI
	;%%%%%%%%%%%%%%%%%%%%%
	;	;音乐子程序
	;%%%%%%%%%%%%%%%%%%%%%
YY01:	SETB	ET1	;	;打开定时/计数器1
	CLR	TF1
	SETB	TR1	;	;定时/计数器1开始运行
YY02:	MOV	COUNT8,#00H
YY03:	MOV	A,COUNT8
	MOV	DPTR,#TABY01
	MOVC	A,@A+DPTR
	MOV	R2,A
	JZ	YY06
	ANL	A,#0FH
	MOV	COUNT9,A
	MOV	A,R2
	SWAP	A	;	;高低半字节交换
	ANL	A,#0FH
	JNZ	YY04
	CLR	TR1
	AJMP	YY05
YY04:	INC	A
	MOV	COUNT7,A
	RL	A
	MOV	DPTR,#TABY00
	MOVC	A,@A+DPTR
	MOV	TH1,A
	MOV	COUNT6,A
	MOV	A,COUNT7
	RL	A
	INC	A
	MOVC	A,@A+DPTR
	MOV	TL1,A
	MOV	COUNT5,A
	SETB	TR1
	;%%%%%%%%%%%%%%%%%%%%%
	MOV	A,COUNT9	;当音时间等于或超过4拍时,低4位数不能表示大于16的时间量,
	CJNE	A,#0,YY05	;此时将该低4位设置为零,其真正的时间量乘以2,再加1,
	INC	COUNT8	;	;得出的数放在下一整个地址,这样可以保证下一地址的数低4位
	MOV	A,COUNT8	;数绝对不为零,以免再次指向下一地址二出现错误,
	MOV	DPTR,#TABY01	;编写是千万注意!!!
	MOVC	A,@A+DPTR
	DEC	A
	RR	A
	MOV	COUNT9,A
	;%%%%%%%%%%%%%%%%%%%%%
YY05:	LCALL	YYS01
	INC	COUNT8
	AJMP	YY03
YY06:	CLR	TR1	;	;定时/计数器1停止运行
	CLR	ET1	;	;关闭定时/计数器1
	RET
	;%%%%%%%%%%%%%%%%%%%%%
	;	;音乐延时(约186毫秒)
	;%%%%%%%%%%%%%%%%%%%%%
YYS01:	MOV	R6,#248
YYS02:	MOV	R7,#250
YYS03:	NOP
	DJNZ	R7,YYS03
	DJNZ	R6,YYS02
	DJNZ	COUNT9,YYS01
	RET
	;==================================================
	;	;音乐数据表
	;==================================================
TABY00:	DW	63628,63836,64021,64103	;低音1-4
	DW	64260,64400,64524,64580	;低音5-7,中音1
	DW	64684,64777,64820,64898	;中音2-5
	DW	64968,65030,65058,65110	;中音6-7,高音1-2
	DW	65157,65178,65217,65252	;高音3-6
	DW	65283	;高音7
TABY01:	;2002年的第一场雪,注意音乐数据不能超过256个!!!
	DB	04H,0B2H,0B2H,0B2H,0B2H,0B2H,0B2H,0C4H,0B2H,A2H,82H,82H,02H,82H,A2H
	DB	A2H,A2H,A2H,A4H,A2H,A2H,72H,82H,84H,04H,04H
	DB	02H,0B2H,0B2H,0B2H,0B4H,0B2H,0B2H,0C4H,0B2H,A4H,0B5H
	DB	02H,72H,72H,72H,72H,72H,62H,042H,A4H,A2H,A2H,A2H,82H,84H
	DB	04H,0B2H,0B2H,0B2H,0B2H,0B2H,0B2H,0C4H,0B2H,A4H,B6H,02H,72H
	DB	72H,72H,72H,72H,62H,42H,A4H,A2H,A2H,A2H,82H,84H
	DB	04H,0B2H,0B2H,0B2H,0B2H,0B2H,0B2H,0C4H,0B2H,C2H,A2H,082H,084H
	DB	02H,72H,72H,62H,74H,72H,62H,084H,72H,82H,62H,42H,42H
	DB	02H,0B2H,0B2H,0B2H,0B2H,0B2H,0B2H,0B2H,0C4H,0B2H,0C2H,A2H,82H,84H
	DB	02H,72H,72H,72H,72H,72H,62H,42H,A4H,A2H,A2H,72H,82H,84H
	DB	02H,0B2H,0B2H,0B2H,0B2H,0B4H,0B2H,0C4H,0B2H,A4H,86H
	DB	02H,72H,72H,62H,72H,72H,72H,62H,84H,72H,82H,62H,42H,44H
	DB	02H,72H,72H,72H,72H,72H,62H,42H,62H,62H,62H,43H,31H,16H
	DB	02H,72H,72H,72H,72H,72H,62H,42H,72H,82H,82H,8AH
	DB	02H,72H,72H,72H,72H,72H,62H,42H,62H,62H,62H,43H,31H,16H
	DB	02H,72H,72H,72H,72H,72H,62H,42H,A2H,0B2H,0B2H,0B2H,00H
TABY02:	;遇上你是我的缘
	DB	12H,42H,63H,71H,63H,41H,44H,62H,42H,B2H,81H,71H,82H,86H
	DB	82H,B2H,A2H,81H,A1H,72H,74H,41H,61H,78H,12H,42H,63H,71H
	DB	63H,41H,44H,62H,42H,B2H,81H,61H,71H,81H,74H,82H
	DB	12H,72H,72H,82H,62H,12H,32H,41H,61H,40H,21H,42H,42H,B2H,A2H
	DB	B8H,81H,C2H,C1H,B1H,C1H,A1H,B1H,88H,43H,41H,72H,62H
	DB	76H,82H,42H,82H,62H,41H,31H,48H,42H,81H,71H,72H,01H,81H
	DB	62H,41H,31H,14H,42H,82H,A2H,01H,B1H,A2H,81H,71H,84H
	DB	82H,81H,81H,A2H,81H,81H,F2H,E3H,F1H,E1H,D1H,E6H,D2H
	DB	C2H,02H,C1H,B1H,C1H,A1H,88H,82H,A2H,B2H,D1H,D1H
	DB	C5H,B1H,C1H,A1H,86H,A4H,BDH,82H,A2H,B2H,D1H,D1H
	DB	C2H,02H,C1H,B1H,C1H,A1H,86H,E1H,F3H,B0H,2DH
	DB	88H,A1H,B7H,B0H,21H,00H

⌨️ 快捷键说明

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