新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機演奏音樂原理與模擬實驗

        單片機演奏音樂原理與模擬實驗

        作者: 時間:2011-12-03 來源:網絡 收藏
        MCS51匯編程序

        ;標題 '八月桂花香'發聲程序

        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

        MUSIC1:

        NOP

        CLR A ;A清零

        MOVC A,@A+DPTR;查表取代碼

        JZ END0 ;是00H,則結束

        CJNE A,#0FFH,MUSIC5 ;如果是休止符,往下執行

        LJMP MUSIC3

        MUSIC5:

        NOP

        MOV R6,A ;R6=18H音符的頻率

        INC DPTR ;DPTR加一

        MOV A,#0

        MOVC A,@A+DPTR;取節拍代碼送R7

        MOV R7,A ;R7=30H音符發音的時間

        SETB TR0 ;啟動計數

        MUSIC2:

        NOP

        CPL P2.5 ;P2.5是輸出引腳

        MOV A,R6

        MOV R3,A ;R3=R6=18H

        LCALL DEL

        MOV A,R7

        CJNE A,20H,MUSIC2 ;中斷計數器(20H)=R7否?

        ;不等,則繼續循環

        MOV 20H,#00H ;等于,則取下一代碼

        INC DPTR

        LJMP MUSIC1

        MUSIC3:

        NOP ;休止100毫秒

        CLR TR0

        MOV R2,#0DH ;R2=13

        MUSIC4:

        NOP

        MOV R3,#0FFH ;R3=255

        LCALL DEL

        DJNZ R2,MUSIC4

        INC DPTR

        LJMP MUSIC1

        END0:

        NOP

        MOV R2,#0FFH ;歌曲結束,延時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 18H, 30H, 1CH, 10H

        DB 20H, 40H, 1CH, 10H

        DB 18H, 10H, 20H, 10H

        DB 1CH, 10H, 18H, 40H

        DB 1CH, 20H, 20H, 20H

        DB 1CH, 20H, 18H, 20H

        DB 20H, 80H, 0FFH, 20H

        DB 30H, 1CH, 10H , 18H

        DB 20H, 15H, 20H , 1CH

        DB 20H, 20H, 20H , 26H

        DB 40H, 20H , 20H , 2BH

        DB 20H, 26H, 20H , 20H

        DB 20H, 30H , 80H , 0FFH

        DB 20H, 20H, 1CH , 10H

        DB 18H, 10H, 20H , 20H

        DB 26H, 20H , 2BH , 20H

        DB 30H, 20H , 2BH , 40H

        DB 20H, 20H , 1CH , 10H

        DB 18H, 10H, 20H, 20H

        DB 26H, 20H , 2BH, 20H

        DB 30H, 20H, 2BH , 40H

        DB 20H, 30H, 1CH , 10H

        DB 18H, 20H , 15H , 20H

        DB 1CH, 20H , 20H , 20H

        DB 26H, 40H, 20H , 20H

        DB 2BH, 20H, 26H , 20H

        DB 20H, 20H, 30H , 80H

        DB 20H, 30H, 1CH , 10H

        DB 20H, 10H, 1CH , 10H

        DB 20H, 20H, 26H , 20H

        DB 2BH, 20H, 30H , 20H

        DB 2BH, 40H, 20H , 15H

        DB 1FH, 05H, 20H , 10H

        DB 1CH, 10H, 20H , 20H

        DB 26H, 20H, 2BH , 20H

        DB 30H, 20H, 2BH , 40H

        DB 20H, 30H, 1CH , 10H

        DB 18H, 20H , 15H , 20H

        DB 1CH, 20H , 20H , 20H

        DB 26H, 40H, 20H , 20H

        DB 2BH, 20H, 26H , 20H

        DB 20H, 20H, 30H, 30H

        DB 20H, 30H, 1CH, 10H

        DB 18H, 40H, 1CH, 20H

        DB 20H, 20H, 26H, 40H

        DB 13H, 60H, 18H , 20H

        DB 15H, 40H, 13H , 40H

        DB 18H, 80H, 00H

        END


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 井冈山市| 九寨沟县| 望江县| 黑水县| 大关县| 兴义市| 昭通市| 临武县| 信阳市| 宝清县| 得荣县| 栾川县| 益阳市| 台南市| 松原市| 漠河县| 七台河市| 鄢陵县| 大渡口区| 吕梁市| 松溪县| 北宁市| 武平县| 新巴尔虎右旗| 内丘县| 富蕴县| 克拉玛依市| 绥中县| 北京市| 丹寨县| 广昌县| 宜川县| 大竹县| 买车| 濮阳市| 措美县| 南陵县| 丹巴县| 西和县| 甘南县| 泌阳县|