新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機演奏音樂“祝你生日快樂”

51單片機演奏音樂“祝你生日快樂”

作者: 時間:2016-11-22 來源:網(wǎng)絡(luò) 收藏

;祝你生日快樂
ORG 0000H
LJMP START
ORG 000BH
INC 20H ;中斷服務(wù),中斷計數(shù)器加1
MOV TH0,#0bbH ;d8
MOV TL0,#0EFH ;12M晶振,形成10毫秒中斷
RETI

本文引用地址:http://butianyuan.cn/article/201611/320042.htm

START:
INITIAL:MOV SP,#50H
MOV TH0,#0D8H
MOV TL0,#0EFH
MOV TMOD,#01H
MOV IE,#82H
CPL P1.6
MUSIC0: NOP
MOV DPTR,#MUSIC_DAT ;表頭地址送DPTR
MOV 20H,#00H ;中斷計數(shù)器清0
MOV B,#00H ;表序號清0
MUSIC1: NOP
CLR A
MOVC A,@A+DPTR ;查表取代碼
JZ END0 ;是00H,則結(jié)束
CPL P1.7
CPL P1.6
CJNE A,#0FFH,MUSIC5 ;是休止符則繼續(xù)執(zhí)行
LJMP MUSIC3
MUSIC5: NOP
MOV R6,A ;r6=18H音符的頻率
INC DPTR
MOV A,B
MOVC A,@A+DPTR ;取節(jié)拍代碼送R7
MOV R7,A ;r7=30H音符發(fā)音的時間
SETB TR0 ;啟動計數(shù)
MUSIC2: NOP
CPL P2.3 ;音樂輸出的管腳
MOV A,R6
MOV R3,A
LCALL DEL
MOV A,R7
CJNE A,20H,MUSIC2 ;中斷計數(shù)器(20H)=R7否?
;不等,則繼續(xù)循環(huán)
MOV 20H,#00H ;等于,則取下一代碼
INC DPTR
LJMP MUSIC1
MUSIC3: NOP
CLR TR0 ;休止100毫秒
MOV R2,#0DH
MUSIC4: NOP
MOV R3,#0FFH
LCALL DEL
DJNZ R2,MUSIC4
INC DPTR
LJMP MUSIC1
END0: NOP
MOV R2,#64H ;歌曲結(jié)束,延時1秒后繼續(xù)
MUSIC6: MOV R3,#00H
LCALL DEL
DJNZ R2,MUSIC6
LJMP MUSIC0
DEL:
NOP
DEL3: MOV R4,#02H
DEL4: NOP
DJNZ R4,DEL4
NOP
DJNZ R3,DEL3
RET


MUSIC_DAT:


; 豬你生日快樂曲譜
DB 3FH,10H
DB 0FFH
DB 3FH, 10H
DB 39H, 20H, 3FH, 20H
DB 30H, 20H, 33H, 40H

DB 3FH, 10H
DB 0FFH
DB 3FH, 10H
DB 39H, 20H, 3FH, 20H
DB 2BH, 20H, 30H, 40H

DB 3FH, 10H
DB 0FFH
DB 3FH, 10H
DB 20H, 20H, 26H, 20H
DB 30H, 20H, 33H, 10H
db 39H, 30H
DB 23H, 10H
DB 0FFh
DB 23H, 10H
DB 26H, 20H, 30H, 20H, 2BH
DB 20H, 30H, 40H
DB 00H

end--



評論


技術(shù)專區(qū)

關(guān)閉