新闻中心

EEPW首页>嵌入式系统>设计应用> 基于51单片机的数字音乐盒C语言驱动程序

基于51单片机的数字音乐盒C语言驱动程序

作者: 时间:2016-11-28 来源:网络 收藏

;******数字到字型*****************
TODIS: PUSH DPH
PUSH DPL

MOVDPTR,#TABLE
MOVC A,@A+DPTR
MOVNUM,A

POP DPL
POP DPH

RET
;******************************************
;*********短延时子程序1.38毫秒*****************
DELAY:PUSHACC

MOVDLAY,#01H
LOOP:MOVACC,#0FFH
DJNZ ACC,$
DJNZ DLAY,LOOP

POPACC
RET
;******************************************
;*********长延时子程序24.9毫秒*****************
LDELAY:PUSHACC

MOVDLAY,#01H
LLOOP:MOVACC,#0FDH
DJNZ ACC,$
DJNZ DLAY,LLOOP

POPACC
RET
;******************************************


;****************外部中断0服务程序(播放/暂停)***************************
PLY_PAU:
SETBTR0

CPL FLAG
RETI
;***************外部中断1服务程序(停止)***********************************
STOP:

MOVSEC,#00H
MOVMIN,#00H
MOVCOUNT50,#50
CLR FLAG
MOV R3,#02H
; CLR TR0;*******
RETI
;**************************************************

;==============================================================
SING:MOVR3,#02H
NEXT:
MOVA,KEYVAL
JZPPB
LJMPKEYJDG
PPB:JNBFLAG,NEXT ;?

MOV A,R3

CJNEA,#00H,XIA
INCDPH
XIA:MOVC A,@A+DPTR ;?
JZSTART
MOVR7,A
INCR3
MOVA,R3
MOVC A,@A+DPTR
MOVR2,A
ACALL SONG
INCR3
SJMP NEXT
START:CLR FLAG
LJMPKEYGET


;===============================================================================
;===歌曲播放子程序 ===
SONG:PUSHDPH
PUSHDPL
MOVA,R2; 取出节拍
RL A
; RL A
JNZKEEP
MOVA,#01H
KEEP:MOVR2,A

REPEAT:ACALL EIGHTH
DJNZ R2,REPEAT
SETBSPK
MOVR6,#05H
YU:MOVR4,0FFH
ACALL SDELAY
DJNZ R6,YU
POPDPL
POPDPH
RET

;===============================================================================
;===产生1/8拍延时子程序===
EIGHTH:CJNE R7,#20H,NEXT1
MOVR5,15H
Y3:MOVR4,0FAH
Y2:MOVR6,#09H
NOP
Y1:DJNZ R6,Y1
DJNZR4,Y2
DJNZ R5,Y3
RET
NEXT1:MOVA,R7; 查表取出廷时参数,保存到R4
MOVDPTR,#DELAY_T
MOVC A,@A+DPTR
MOVR4,A
MOVA,R7; 查表取出1/8拍周期数,保存到R5
MOVDPTR,#S_PARA
MOVCA,@A+DPTR
MOVR5,A
NEXTCYC:ACALL SOUND
DJNZ R5,NEXTCYC
RET
;===============================================================================
;===发声子程序 ===
SOUND:SETBSPK
ACALL SDELAY
CLR SPK
ACALL SDELAY
RET

;===============================================================================
;===延时子程序===
SDELAY:
MOVA,R4; 廷时值在R4内
MOVXUN1,A
XL2:MOVXUN2,#03H
DL1:DJNZ XUN2,DL1
DJNZ XUN1,XL2
RET
;===============================================================================
;===1/8拍周期表===
S_PARA:DB10H,12H,14H,16H,18H,1BH,1FH
DB21H,24H,29H,2CH,31H,37H,3EH
DB3FH,45H,52H,57H,62H,6EH,7BH

;===============================================================================
;===延时参数表===
DELAY_T:DB0C3H,0AEH,9BH,92H,83H,74H,68H;00-06
DB62H,57H,4DH,49H,41H,3AH,34H;07-0DH
DB31H,2EH,27H,24H,20H,1DH,19H;0E-14H

;===============================================================================
;**************************************************
TABLE:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,83H

;===歌曲表===
TABLE1:DW0000H,0504H,0806H,0802H,0802H,0802H,0702H,0802H,0906H,0702H,0506H
DW0502H,0A04H,0804H,0302H,0302H,0402H,0402H,0504H,0504H,0504H,2004H
DW0502H,0806H,0902H,0A02H,0902H,0801H,0701H,0601H,0501H,0406H,0602H,0804H,0902H
DW0802H,0506H,0602H,0502H,0402H,0202H,0302H,0104H,0102H,2004H
DW0504H,0806H,0802H,0802H,0802H,0702H,0802H,0B06H,0A01H,0901H,0906H
DW0902H,0A04H,0804H,0302H,0302H,0402H,0402H,0504H,0504H,0504H,2004H
DW0502H,0806H,0902H,0A02H,0902H,0801H,0701H,0601H,0501H,0406H,0602H,0804H,0902H
DW0802H,0506H,0602H,0502H,0402H,0202H,0302H,0104H,2002H
DW0502H,0806H,0902H,0A02H,0902H,0801H,0701H,0601H,0501H,0406H,0602H,0804H,0902H
DW0802H,0506H,0602H,0502H,0402H,0202H,0302H,0106H,2004H
DW0000H
TABLE2:
DW0000H,0901H,0A01H,0B02H,0B02H,0B02H,0702H,0801H,0702H,0904H,2002H;人生路上甜苦和喜忧
DW0801H,0702H,0702H,0502H,0701H,0502H,0403H,2004H ;

本文引用地址://m.amcfsurvey.com/article/201611/322656.htm

DW0901H,0A01H,0B02H,0B02H,0B02H,0702H,0801H,0702H,0904H,2002HDW0801H,0702H,0701H,0501H,0501H,0702H,0803H,0802H,2004H;

DW0901H,0801H,0102H,0701H,0801H,0701H,0501H,0501H,0401H,0401H,0902H,0901H,0902H,2001H ;DW0901H,0901H,0801H,0701H,0701H,0501H,0701H,0801H,0701H,0901H,0904H,2002H ;DW0901H,0801H,0702H,0701H,0801H,0701H,0501H,0501H,0401H,0401H,0902H,0901H,0902H,2002H ;DW0901H,0901H,0801H,0701H,0501H,0701H,0C02H,0B01H,0B04H,2004H ;

DW0B02H,0B01H,0901H,0902H,0B02H,0C01H,0901H,0901H,0B01H,0B02H,2002H;

DW0702H,0701H,0701H,0801H,0902H,0B01H,0B02H,0B02H,2004H;DW0C03H,0C01H,0B01H,0901H,0902H,0B01H,0C02H,0701H,0703H,2002H ;

DW0901H,0801H,0901H,0801H,0701H,0702H,0501H,0701H,0701H,0801H,0802H,0802H,2004H;DW0B02H,0B01H,0901H,0902H,0B02H,0C01H,0901H,0901H,0B01H,0B02H,2002H;DW0702H,0E01H,0D01H,0C01H,0902H,0B01H,0B04H,2004H ;DW0C03H,0C01H,0B01H,0901H,0902H,0B01H,0C02H,0701H,0703H,2002H ;风风雨雨都接受
DW0901H,0801H,0901H,0801H,0701H,0701H,0502H,0801H,0701H,0703H,0702H,2003H ;

DW0C03H,0C01H,0B01H,0901H,0902H,0B01H,0C02H,0901H,0903H,2002H ;

DW0901H,0801H,0901H,0B01H,0C01H,0901H,0702H,0502H,0703H,0702H,0702H,2004H ;;我一直会在你的左右
DW0000H
TABLE3:
DW0000H,0902H,0902H,0A02H,0B02H,0B02H,0A02H,0902H,2002H
DW0802H,0702H,0702H,0802H,0902H,0903H,0801H,0802H,0802H,2002H
DW0902H,0902H,0A02H,0B02H,0B02H,0A02H,0902H,0802H,2002H
DW0702H,0702H,0802H,0902H,0803H,0701H,0702H,0702H,2002H
DW0802H,0802H,0902H,0702H,0802H,0901H,0A01H,0902H,0702H,0802H,0901H,0A01H,0902H,0802H,0702H,0802H,0B02H,2002H
DW0902H,0902H,0902H,0A02H,0B02H,0B02H,0A02H,0902H,0A01H,0801H,0702H,0702H,0802H,0902H,0803H,0701H,0702H,0702H,2002H
DW0000H
TABLE4:
DW0000H,0804H,0904H,0904H,0906H,0802H,0704H,0504H,0706H,0802H,0708H,0804H,0904H,0904H,0906H,0B02H,0904H,0904H,0804H,0904H
DW 0908H,0B04H,0C04H,0C04H,0C06H,0B02H,0904H,0904H,0B04H,0C04H,0B08H,0804H,0904H,0904H,0806H,0902H,0904H,0804H,0904H,0508H
DW 0508H,0802H,0802H,0802H,0702H,0504H,0802H,0802H,0802H,0702H,0504H,0804H,0904H,0704H,0806H,0902H,0B04H,0C02H,0C02H,0C02H,0B02H
DW 0904H,0802H,0802H,0802H,0702H,0504H,0504H,0404H,0504H,0508H,0000H
END


上一页 1 2 下一页

评论


技术专区

关闭