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

📄 music.asm

📁 达盛单片机试验箱
💻 ASM
字号:
;用定时器T1方式1来产生歌谱中各音符对应频率的方波,由P1.0输出驱动喇叭。
;节拍控制可通过调用延时子程序次数来实现。
				ORG		0000H
				
				AJMP	START
			
				ORG		001BH
			
				AJMP	TIME
;
;***************************************************************
;				/*主程序*/									   *
;***************************************************************
;			
				ORG		0030H
				
START:			MOV		TMOD,#10H		;定时器1方式1
				MOV		IE,#88H			;允许中断
				MOV		DPTR,#TAB
LOOP:			CLR		A
				MOVC	A,@A+DPTR		;取节拍
				MOV		R1,A
				INC		DPTR
				CLR		A
				MOVC	A,@A+DPTR
				MOV		R0,A
				ORL		A,R1
				JZ		NEXT0			;是休止符转停止发音
				MOV		A,R0
				ANL		A,R1
				CJNE	A,#0FFH,NEXT	;没有结束转下一拍
				AJMP	START

NEXT:			MOV		TH1,R1
				MOV		TL1,R0
				SETB	TR1
				SJMP	NEXT1
NEXT0:			CLR		TR1				;是休止符关闭定时器,停止发音
NEXT1:			CLR		A
				INC		DPTR
				MOVC	A,@A+DPTR		;取延时常数
				MOV		R2,A
LOOP1:			CALL	DELAY200MS
				DJNZ	R2,LOOP1
				INC		DPTR
				AJMP	LOOP
;
;***************************************************************
;				/*延时子程序*/								   *
;***************************************************************
;	
DELAY200MS:		MOV		R4,#81H
DEL1:			MOV		R3,#0FFH
				DJNZ	R3,$
				DJNZ	R4,DEL1
				RET
			
TIME:			MOV		TH1,R1
				MOV		TL1,R0
				CPL		P1.0
				RETI
		
TAB:			DB		0FCH,4AH,04H,0FCH,4AH,04H
				DB		0FCH,4AH,08H,0FBH,00H,08H
				DB		0FDH,08H,04H,0FDH,08H,04H
				DB		0FDH,08H,08H,0FCH,4AH,08H
				DB		0FCH,4AH,04H,0FDH,08H,04H
				DB		0FDH,80H,08H,0FDH,80H,08H
				DB		0FDH,30H,04H,0FDH,08H,04H
				DB		0FCH,0AEH,08H,00H,00H,08H
				DB		0FFH,0FFH
			
				END		
				
	

⌨️ 快捷键说明

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