新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用PIC單片機實現音樂播放的實例程序

        用PIC單片機實現音樂播放的實例程序

        作者: 時間:2011-05-17 來源:網絡 收藏

        INTZ:
        PUSH ; Push ;中斷服務
        BTFSC PIR1,TMR2IF ;測試TMR2中斷標志位
        b INT_TMR2 ;
        BTFSC INTCON,TOIF ;測試TMR0中斷標志位
        GOTO INT_TMR0
        IntRet:
        POP ; Pop
        RETFIE
        ;**************************************************
        INT_TMR2:
        BCF PIR1,TMR2IF ;清TMR2中斷標志位
        movf TmrBak,w
        movwf TMR2
        CPL BeepOut
        BeeperEnd:
        b IntRet
        ;**************************************************
        INT_TMR0: ;定時0中斷
        BCF INTCON,TOIF ; clear INTF
        MOVLW .255-.38 ;10ms
        MOVWF TMR0
        ;====================
        decfsz T100ms,f
        b int_tmr0_ret
        movlw CSTIME100MS
        movwf T100ms
        bsf Sflag,Fg_100ms
        ;=====================
        int_tmr0_ret:
        b IntRet
        ;**************************************************
        PlayPsWhisle:
        bsf Fg,FgBeep
        clrf BeepCnt
        movlw .0
        movwf BeepMode
        movlw CSTIME100MS
        movwf T100ms
        retlw 0
        ;**************************************************
        PlayPsOk:
        bsf Fg,FgBeep
        clrf BeepCnt
        movlw .1
        movwf BeepMode
        movlw CSTIME100MS
        movwf T100ms
        retlw 0
        ;**************************************************
        PlayPsHang:
        bsf Fg,FgBeep
        clrf BeepCnt
        movlw .2
        movwf BeepMode
        movlw CSTIME100MS
        movwf T100ms
        retlw 0
        ;**************************************************
        PlayPsWelcom:
        bsf Fg,FgBeep
        clrf BeepCnt
        movlw .3
        movwf BeepMode
        movlw CSTIME100MS
        movwf T100ms
        retlw 0
        ;**************************************************
        ;
        ;BeepMode=0 : psWhisle
        ;BeepMode=1 : psOk
        ;BeepMode=2 : psHang
        ;BeepMode=3 : psWelcom
        ;**************************************************
        BeepFor:
        btfss Sflag,Fg_100ms
        b BeepForEnd
        bcf Sflag,Fg_100ms
        btfss Sflag,FgBeep
        b BeepForEnd
        MOVLW B'00000101' ;開TMR2 1:4分頻
        MOVWF T2CON
        movf BeepMode,w
        b BeepModeJmp
        psWhisle:
        call WhisleTab
        b BeepPlay
        psOk:
        call OkTab
        b BeepPlay
        psHang:
        call HangTab
        b BeepPlay
        psWelcom:
        call WelcomTab
        b BeepPlay
        BeepPlay:
        incf BeepCnt,f
        movwf TmrBak
        movf TmrBak,f
        btfsc status,z
        b BeepOff
        movlw .1
        xorwf TmrBak,w
        btfsc status,z
        b BeepStop
        b BeepForEnd
        BeepOff:
        clrf BeepCnt
        bcf Sflag,FgBeep
        bcf BeepOut
        bcf T2CON,TMR2ON
        b BeepForEnd
        BeepStop:
        bcf T2CON,TMR2ON ;stop
        bcf BeepOut
        BeepForEnd:
        retlw 0
        ;**************************************************
        END

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

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 奉化市| 淳安县| 泰安市| 崇明县| 临猗县| 泾源县| 阳西县| 庄浪县| 长寿区| 曲沃县| 丰都县| 锡林郭勒盟| 锦屏县| 乌海市| 方正县| 双城市| 宝清县| 镇赉县| 屏东县| 都安| 玛沁县| 大姚县| 唐河县| 鄂尔多斯市| 阆中市| 长葛市| 临安市| 大埔区| 开江县| 襄垣县| 凤凰县| 霞浦县| 比如县| 辽宁省| 威远县| 景谷| 临海市| 都江堰市| 体育| 庐江县| 台前县|