新聞中心

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

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

        作者: 時間:2012-08-18 來源:網絡 收藏

        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/171027.htm
        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宜阳县| 西充县| 桦川县| 阆中市| 龙江县| 拉萨市| 福建省| 平凉市| 建平县| 尉氏县| 潮州市| 吉木萨尔县| 托里县| 西乌珠穆沁旗| 兴仁县| 当雄县| 邓州市| 济源市| 南通市| 保亭| 开远市| 珠海市| 罗山县| 四川省| 凤冈县| 马鞍山市| 大兴区| 安塞县| 清新县| 清河县| 双辽市| 阳城县| 宣化县| 都兰县| 砚山县| 巢湖市| 察哈| 修水县| 白朗县| 依兰县| 富民县|