51单片机用c语言写音符代码,谁有现成的单片机曲谱代码,不是C语言的

编程入门 行业动态 更新时间:2024-10-28 20:18:07

51<a href=https://www.elefans.com/category/jswz/34/1769836.html style=单片机用c语言写音符代码,谁有现成的单片机曲谱代码,不是C语言的"/>

51单片机用c语言写音符代码,谁有现成的单片机曲谱代码,不是C语言的

;用定时器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。

全部

更多推荐

51单片机用c语言写音符代码,谁有现成的单片机曲谱代码,不是C语言的

本文发布于:2024-02-26 03:46:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1701252.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单片机   语言   代码   曲谱   音符

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!