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

📄 music.asm

📁 用汇编语言实现的可以播放歌曲的是程序
💻 ASM
字号:
;**************************************************************
;All rights Reserved
;voice.asm
;单片机发声程序,播放梁祝歌曲
;用定时器中断产生音调,用程序延时来产生节拍
;***************************************************************
SoundOut bit 	P1.0	;定义输出引脚

        ORG     0000H
        LJMP    START
        ORG     001BH
        AJMP	TIME1        ;中断服务,中断计数器加1
	ORG	20H

START:  MOV     TMOD,#10H	;用定时器1,方式1
        MOV     SP,#50H
        SETB	EA
	SETB	ET1

	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	XZF		;若acc等于0则跳转

	MOV	A,R0
	ANL	A,R1		;两个数是否都为ff是否为最后一个
	CJNE	A,#0FFH,NEXT
	SJMP	START

NEXT:	MOV	TH1,R1
	MOV	TL1,R0
	SETB	TR1
	SJMP	NEXT1

XZF:	CLR	TR1		;关闭定时器

NEXT1:	CLR	A
	INC	DPTR
	MOVC	A,@A+DPTR

	MOV	R2,A
	SETB	TR1

LOOP1:	LCALL	D130	;取节拍
	DJNZ	R2,LOOP1
	INC	DPTR
	AJMP	LOOP

D130:	MOV	R5,#160
D2:	MOV	R4,#200
D1:	NOP
	NOP
	DJNZ	R4,D1
	DJNZ	R5,D2
	RET 
	;定时中断服务程序
TIME1:	MOV	TH1,R1
	MOV	TL1,R0
	CPL	SoundOut	
	RETI

TAB:	DB 0FAH,15H,08H
	DB 0FBH,05H,06H
	DB 0FBH,8CH,02H
	DB 0FCH,44H,04H
	DB 0FCH,0ACH,02H
	DB 0FBH,8CH,02H
	DB 0FCH,44H,02H
	DB 0FBH,05H,04H
	DB 0FDH,82H,04H
	DB 0FEH,22H,04H
	DB 0FDH,0C8H,02H
	DB 0FDH,82H,02H
	DB 0FDH,09H,02H
	DB 0FDH,82H,02H
	DB 0FCH,0ACH,10H
	DB 0FBH,8CH,01H
	DB 0FCH,0ACH,06H
	DB 0FDH,09H,02H
	DB 0FCH,0CH,04H
	DB 0FBH,08CH,04H
	DB 0FBH,05H,04H
	DB 0FCH,8CH,02H
	DB 0FCH,44H,04H
	DB 0FCH,0ACH,04H
	DB 0FAH,15H,04H
	DB 0FCH,44H,04H
	DB 0FBH,8CH,02H
	DB 0FBH,05H,02H
	DB 0FBH,8CH,02H
	DB 0FCH,44H,02H
	DB 0FBH,05H,10H
	DB 0FFH,0FFH
	END

			
		

⌨️ 快捷键说明

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