;//*****************************************************
;文件名: 八音盒.asm
;描 述: 八音盒,P1选择音乐,低电平有效,P3.0音乐输出口。
; 本程序使用的寄存器有R1至R7,40H,41H,42H单元。
; 标号TAB1处为T0的定时常数数据表。
;//*****************************************************
Speaker BIT P3.4
FLAG1 BIT 20H
FLAG2 BIT 21H
ORG 0000H
LJMP Start
ORG 0003H
LJMP EXINT0
ORG 000BH
LJMP INT_T0
ORG 0013H
LJMP EXINT1
ORG 001BH
DJNZ R4,GOON ;中断次数不够,继续。
CLR ET1 ;持续时间到,该音符停止。
CLR ET0
SJMP RE01
GOON: MOV TL1,40H
MOV TH1,41H
RE01: RETI
INT_T0: MOV C,FLAG1
JC TORET
DJNZ R0,TORET
MOV R0,#6
MOV C,FLAG2
JC TOADD
SJMP TOSUB
TOADD: MOV A,R3
CJNE A,#0FEH,ADD1
CLR FLAG2
SJMP TORET
ADD1: MOV A,R2
ADD A,#1
MOV R2,A
MOV A,R3
ADDC A,#0
MOV R3,A
SJMP TORET
TOSUB: MOV A,R3
CJNE A,#0FBH,SUB1
SETB

这是一个51单片机实现的八音盒程序,通过P1口选择音乐,P3.4作为音乐输出口。程序使用了中断服务子程序,通过T0定时器和外部中断0来控制音乐播放。音乐数据存储在内存的表中,通过改变表头地址来选择不同的音乐。
最低0.47元/天 解锁文章
1858

被折叠的 条评论
为什么被折叠?



