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

📄 srkl.asm

📁 单片机例程打包 液晶 AD EEPROM LED 电机 BEEP 键盘等
💻 ASM
字号:
;天逸版小喇叭---<<生日快乐>>
;***************************************************************************
;*  ohm@szsxmcu.com	      深圳随想电子科技有限公司版权所有    *
;*  Create by :欧海明     www.szsxmcu.com 更多例程及单片机专业    *
;*  咨讯请登陆网站      因为专业所以做得更好!深圳随想电子科技 	  *
;***************************************************************************
	org	0000h
	ajmp	main
	org	000bh
	ajmp	tim0
	org	0030h
main:					;主程序
	mov	tmod,#01h		;设定时方式
	mov	ie,#82h			;开中断
start0:
	mov	30h,#00h		;
next:	mov	a,30h
	mov	dptr,#table
	movc	a,@a+dptr		;查表取音调和节拍
	mov	r2,a
	jz	end0			;为零,不进行处理.
	anl	a,#0fh
	mov	r5,a			;将节拍存入R5
	mov	a,r2
	swap	a
	anl	a,#0fh
	jnz	sing			;根据音调决定是否演奏.
	clr	tr0
	ajmp	d1
sing:	dec	a
	mov	22h,a			;将音调存入22H.
	rl	a
	mov	dptr,#table1
	movc	a,@a+dptr		;根据音调决定定时器初值.
	mov	th0,a			;放入TH0
	mov	21h,a
	mov	a,22h
	rl	a
	inc	a
	movc	a,@a+dptr
	mov	tl0,a			;放入TL0
	mov	20h,a
	setb	tr0			;启动定时
d1:	lcall	delay
	inc	30h
	ajmp	next
end0:	clr	tr0
	ajmp	start0

tim0:					;定时器中断服务程序
	push	acc
	push	psw
	mov	tl0,20h			;重赋初值.
	mov	th0,21h
	cpl	p2.0			
	pop	psw
	pop	acc
	reti

delay:	mov	r7,#02h			;延时子程序
d2:	mov	r4,#187
d3:	mov	r3,#248
	djnz	r3,$
	djnz	r4,d3
	djnz	r7,d2
	djnz	r5,delay
	ret

table1:					;决定音调的定时初值.
	dw	64260,64400,64524,64580
	dw	64684,64777,64820,64898
	dw	64968,65030,65058,65110
	dw	65157,65178,65217

table:					;决定音调和节拍的表格,不同的歌曲只是此表不同
	;1
	db	82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h
	;2
	db	82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h
	;3
	db	82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h
	;4
	db	82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h,00
	end

⌨️ 快捷键说明

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