新聞中心

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

        單片機音樂程序

        作者: 時間:2013-03-08 來源:網絡 收藏

        利用(或單板機)奏樂大概是無線電愛好者感興趣的問題之一。本文從的基本發間實驗出發,談談的設計原理,并給出具體實例,以供參考。下面提供2個列子,大家根據 需要自行選擇

        最小系統,兩位LED數碼管由串口輸出接兩個164驅動,Lout,Rout為左右聲道輸出,
        SET, ALT0, ALT1為三個按鍵,也可自己在開始的I/O定義改成你想用的I/O口;12M晶振
        若用89C51則只可裝下約14首歌曲,用則可裝下近40曲

        源程序
        ; Electronic Music
        ; Version 4.50
        ; Copyright (c) XAJ 2001
        ;============================
        LOUT BIT P1.0 ;左聲道輸出
        ROUT BIT P1.2 ;右聲道輸出
        SET BIT P3.3 ;SET按鍵
        ALT0 BIT P3.6 ;ALT0按鍵
        ALT1 BIT P3.7 ;ALT1按鍵

        ;REPNUM EQU 09H重復段編號
        STATU EQU 0AH;狀態寄存器
        LDYDSR EQU 0BH;左低音度數
        RDYDSR EQU 0CH;右低音度數
        LDYAR EQU 0DH;左低音協助
        RDYAR EQU 0EH;右低音協助
        JPCLK EQU 0FH;節拍時鐘
        GENCLK EQU 10H;通用時鐘
        SNSDCLK EQU 11H;搜、存顯示時鐘
        GEN16T0 EQU 12H;通用16位時鐘
        GEN16T1 EQU 13H;
        SETST0 EQU 14H;設置狀態
        SETST1 EQU 15H; 定時時鐘
        DISNUM0 EQU 16H;顯示數值
        DISNUM1 EQU 17H;寄存器(2位)
        CSN EQU 18H;當前曲曲號
        REP0L EQU 19H;0號重復段地址
        REP0H EQU 1AH;
        REP1L EQU 1BH;1號重復段地址
        REP1H EQU 1CH;
        REP2L EQU 1DH;2號重復段地址
        REP2H EQU 1EH
        REP3L EQU 1FH;3號重復段地址
        REP3H EQU 23H;
        COSPEEDN EQU 24H;
        SPENR EQU 25H;

        LOCF BIT 00H;左聲道開關標志
        ROCF BIT 01H;右聲道開關標志
        SECHSTOF BIT 02H;搜索、存儲標志
        NEXTSF BIT 03H;下一曲標志
        CSBESTOF BIT 04H;當前曲鎖存/釋放
        CUYFD BIT 05H;當前音符顯示
        KSETF BIT 06H;SET鍵按下標志
        KALT0F BIT 07H;ALT0鍵按下標志
        KALT1F BIT 08H;ALT1鍵按下標志
        SPEEDF BIT 09H;速度增/減標志
        TONEF BIT 0AH;音調增/減標志
        YPBIT BIT 0BH;音頻邏輯輸出
        KBDISF BIT 0CH;鍵盤顯示標志
        REP0F BIT 0DH;0號重復段控制
        REP1F BIT 0EH;1號重復段控制
        REP2F BIT 0FH;2號重復段控制
        REP3F BIT 10H;3號重復段控制

        SBOTM EQU 25H;堆棧區(棧底)
        BUFF0 EQU 43H;鎖存曲數
        BUFF EQU 44H;鎖存曲緩沖區
        ;============================

        ;=========BEGIN==============
        ORG 0000H
        LJMP MAIN
        ;---------T0INT--------------
        ORG 000BH
        LJMP T0INT

        ;---------T1INT--------------
        ORG 001BH
        LJMP T1INT
        ;1.音頻發生器
        ;---------YPFSQ(01)----------
        ORG 0030H
        T0INT: MOV TL0,R4
        MOV TH0,R5
        PUSH PSW
        PUSH ACC
        PUSH 01H
        JB LOCF,ROPER
        MOV R1,#00H
        MOV A,LDYAR
        T0LLOP: RRC A
        MOV YPBIT,C
        XCH A,R1
        CJNE A,LDYDSR,T0LNEXT
        MOV C,YPBIT
        MOV LOUT,C
        INC LDYAR
        ; INC P0
        SJMP ROPER
        T0LNEXT: XCH A,R1
        INC R1
        SJMP T0LLOP
        ROPER: JB ROCF,T0RETI
        MOV R1,#00H
        MOV A,RDYAR
        T0RLOP: RRC A
        MOV YPBIT,C
        XCH A,R1
        CJNE A,RDYDSR,T0RNEXT
        MOV C,YPBIT
        MOV ROUT,C
        INC RDYAR
        ; INC P2
        SJMP T0RETI
        T0RNEXT: XCH A,R1
        INC R1
        SJMP T0RLOP
        T0RETI: POP 01H
        POP ACC
        POP PSW
        RETI
        ;2.通用時鐘


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 中阳县| 满城县| 谷城县| 临潭县| 营山县| 安泽县| 定陶县| 酉阳| 宾阳县| 双鸭山市| 泸定县| 平乡县| 依兰县| 江永县| 罗甸县| 子长县| 奇台县| 阜康市| 同心县| 斗六市| 喀什市| 高陵县| 阿克陶县| 阿拉尔市| 志丹县| 赤壁市| 樟树市| 乌拉特前旗| 东海县| 哈密市| 宜丰县| 瓦房店市| 潼关县| 濮阳县| 南开区| 罗田县| 油尖旺区| 马关县| 招远市| 云梦县| 子洲县|