新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機演奏音樂“祝你生日快樂”

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

        作者: 時間:2016-11-22 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/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 ;中斷計數器清0
        MOV B,#00H ;表序號清0
        MUSIC1: NOP
        CLR A
        MOVC A,@A+DPTR ;查表取代碼
        JZ END0 ;是00H,則結束
        CPL P1.7
        CPL P1.6
        CJNE A,#0FFH,MUSIC5 ;是休止符則繼續執行
        LJMP MUSIC3
        MUSIC5: NOP
        MOV R6,A ;r6=18H音符的頻率
        INC DPTR
        MOV A,B
        MOVC A,@A+DPTR ;取節拍代碼送R7
        MOV R7,A ;r7=30H音符發音的時間
        SETB TR0 ;啟動計數
        MUSIC2: NOP
        CPL P2.3 ;音樂輸出的管腳
        MOV A,R6
        MOV R3,A
        LCALL DEL
        MOV A,R7
        CJNE A,20H,MUSIC2 ;中斷計數器(20H)=R7否?
        ;不等,則繼續循環
        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 ;歌曲結束,延時1秒后繼續
        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--



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 崇州市| 故城县| 青浦区| 辉县市| 安义县| 内黄县| 故城县| 厦门市| 那曲县| 孟村| 都安| 荥阳市| 惠来县| 日土县| 台东县| 深水埗区| 惠安县| 铜鼓县| 松原市| 牡丹江市| 金山区| 湾仔区| 龙山县| 新干县| 武川县| 两当县| 滦南县| 西乌| 霞浦县| 西丰县| 广南县| 鄱阳县| 台湾省| 敖汉旗| 江油市| 永仁县| 富蕴县| 宁德市| 微山县| 古蔺县| 宣恩县|