新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機音樂程序設計

        單片機音樂程序設計

        作者: 時間:2012-09-02 來源:網絡 收藏

        隨便找一個仿真機或者什么實驗板,只要能工作的就行,將程序輸入,運行,然后找個音箱(你計算機旁邊應當就有一對吧)撥出插頭,插頭的前端接在P1。0上,后面部分找根線接的地,就應當有聲了,然后怎么改進硬件連接就是你的事了。。。。

        本文引用地址:http://www.104case.com/article/170934.htm

        程序匯編代碼代碼1 -------------Voice.asm--------------------------

        ORG 0000H
        LJMP START
        ORG 000BH
        INC 20H ;中斷服務,中斷計數器加1
        MOV TH0,#0D8H
        MOV TL0,#0EFH ;12M晶振,形成10毫秒中斷
        RETI
        START:
        MOV SP,#50H
        MOV TH0,#0D8H
        MOV TL0,#0EFH
        MOV TMOD,#01H
        MOV IE,#82H
        MUSIC0:
        NOP
        MOV DPTR,#DAT ;表頭地址送DPTR
        MOV 20H,#00H ;中斷計數器清0
        MOV B,#00H ;表序號清0
        MUSIC1:
        NOP
        CLR A
        MOVC A,@A+DPTR ;查表取代碼
        JZ END0 ;是00H,則結束
        CJNE A,#0FFH,MUSIC5
        LJMP MUSIC3
        MUSIC5:
        NOP
        MOV R6,A
        INC DPTR
        MOV A,B
        MOVC A,@A+DPTR ;取節拍代碼送R7
        MOV R7,A
        SETB TR0 ;啟動計數
        MUSIC2:
        NOP
        CPL P1.0
        MOV A,R6
        MOV R3,A
        LCALL DEL
        MOV A,R7
        CJNE A,20H,MUSIC2 ;中斷計數器(20H)=R7否?
        ;不等,則繼續循環
        MOV 20H,#00H ;等于,則取下一代碼
        INC DPTR
        ; INC B
        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
        NOP
        DAT:
        db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h
        db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h
        db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h
        db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h
        db 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h
        db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h
        db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h
        db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h
        db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h
        db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h
        db 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h
        db 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h
        db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h
        db 20h,10h,2bh,10h,26h,30h,30h,80h,00H

        END

        程序匯編代碼代碼2 -------------Voice1.asm--------------------------

        ;標題 '八月桂花香'發聲程序
        ;摘要 詳見'無線電'92年3期
        ;作者 周振安
        ORG 0000H
        LJMP START
        ORG 000BH
        INC 20H ;中斷服務,中斷計數器加1
        MOV TH0,#0D8H
        MOV TL0,#0EFH ;12M晶振,形成10毫秒中斷
        RETI
        START:
        MOV SP,#50H
        MOV TH0,#0D8H
        MOV TL0,#0EFH
        MOV TMOD,#01H
        MOV IE,#82H
        MUSIC0:
        NOP
        MOV DPTR,#DAT ;表頭地址送DPTR
        MOV 20H,#00H ;中斷計數器清0
        MOV B,#00H ;表序號清0
        MUSIC1:
        NOP
        CLR A


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 吐鲁番市| 元阳县| 洛隆县| 南汇区| 慈溪市| 东宁县| 元氏县| 甘洛县| 敦化市| 琼海市| 洛川县| 司法| 芜湖县| 安龙县| 财经| 来安县| 井冈山市| 洪湖市| 阳朔县| 沂源县| 长丰县| 保亭| 青海省| 都江堰市| 安顺市| 东方市| 南靖县| 抚远县| 元谋县| 云霄县| 乐至县| 岳阳县| 化德县| 施甸县| 天祝| 朝阳县| 遂川县| 犍为县| 芷江| 开原市| 巴林左旗|