新聞中心

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

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

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

        ********************************
        * *
        ********************************

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

        以下要用二個定時器資源,凡是有二個定時器的均可,該范例需要的MCU是MICROCHIP 16C62
        INCLUDE D:PICP16XX.EQU ;該文件在MICROCHIP光盤中可找到
        ;**************************************************
        #define BeepOut RC,4
        ;**************************************************
        W_TEMP EQU 0X20 ;(0XA0)
        STATUS_TEMP EQU 0X21
        BeepCnt equ 30h
        TmrBak equ 31h
        BeepMode equ 32h
        Sflag equ 33h
        ;**************************************************
        CSTIME100MS equ .8;
        ;**************************************************
        ;Sflag
        Fg_100ms equ 0
        FgBeep equ 1
        ;**************************************************
        ORG 000H;
        GOTO MAIN ; Skip over interrupt vecter
        ORG 04H ; Interrupt Vector
        GOTO INTZ

        ;**************************************************
        OkTab:
        movf BeepCnt,w
        addwf PCL,f
        retlw .255-.130;0xf6 ;1 ;
        retlw .255-.126;0xfa ;2 ;
        retlw .255-.119; 0xfd ;3 ;
        retlw 0
        ;**************************************************
        WhisleTab:
        movf BeepCnt,w
        addwf PCL,f
        retlw .255-.239;523Hz ;0 ;
        retlw .255-.179;698Hz ;1 ;
        retlw .255-.159;784Hz ;2 ;
        retlw .255-.119;1046Hz ;3 ;
        retlw .0
        ;**************************************************
        HangTab:
        movf BeepCnt,w
        addwf PCL,f
        retlw .255-.159; 784Hz ;0 ;
        retlw .255-.119; 1046Hz ;1 ;
        retlw .255-.150; 830Hz ;2 ;
        retlw .255-.112 ;1109Hz ;3 ;
        retlw .255-.142 ;880Hz ;4 ;
        retlw .255-.106;1174Hz ;5 ;
        retlw .255-.134;932Hz ;6 ;
        retlw .255-.100;1244Hz ;7
        retlw .255-.126;988Hz ;8;
        retlw .255-.94;1318Hz ;9;
        retlw .255-.119;1046Hz ;10 ;
        retlw .255-.89;1397Hz ;11 ;
        retlw .0

        ;**************************************************
        WelcomTab:
        movf BeepCnt,w
        addwf PCL,f
        retlw .255-.89;1397Hz ;11 ;
        retlw .255-.119;1046Hz ;10 ;
        retlw .255-.94;1318Hz ;9;
        retlw .255-.126;988Hz ;8;
        retlw .255-.100;1244Hz ;7
        retlw .255-.134;932Hz ;6 ;
        retlw .255-.106;1174Hz ;5 ;
        retlw .255-.142 ;880Hz ;4 ;
        retlw .255-.112 ;1109Hz ;3 ;
        retlw .255-.150; 830Hz ;2 ;
        retlw .255-.119; 1046Hz ;1 ;
        retlw .255-.159; 784Hz ;0 ;
        retlw .0
        ;**************************************************
        BeepModeJmp:
        addwf PCL,f
        b psWhisle ;0
        b psOk ;1
        b psHang ;2
        b psWelcom ;3
        ;**************************************************
        IO_SET:
        BANK1_
        MOVLW B'11001011'
        MOVWF TRISA
        MOVLW B'00001100'
        movwf TRISB
        MOVLW B'00000011'
        movwf TRISC ; Set Port_C to all outputs
        BANK0_
        RETURN
        ;**************************************************
        SYS_SET:
        BANK1_
        MOVLW B'00000111' ; 1:256 TMR0分頻
        MOVWF OPTION_R
        BSF PIE1,TMR2IE ;TMR2中斷允許
        BANK0_
        MOVLW B'00000001' ;開TMR1
        MOVWF T1CON
        bsf INTCON,TOIE ;TMR0中斷允許
        BSF INTCON,PEIE ;允許所有未被屏蔽之外圍接口中斷
        RETURN
        ;**************************************************
        MAIN: ; Main rotation
        CALL IO_SET
        MOVLW B'00000000' ;關所有中斷
        MOVWF INTCON
        ;****************************
        CALL SYS_SET
        ;****************************
        call PlayPsWelcom ;上電提示音
        MAINLOOP:
        bsf INTCON,GIE ;開所有中斷
        CLRWDT ; Clear WDT
        call BeepFor
        B MAINLOOP
        ;**************************************************


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 屏南县| 庐江县| 南乐县| 若尔盖县| 安福县| 海阳市| 苗栗县| 普陀区| 清河县| 河南省| 文水县| 益阳市| 鄄城县| 湛江市| 台东市| 永年县| 沙洋县| 洪江市| 阳曲县| 江城| 嘉兴市| 楚雄市| 茂名市| 朝阳市| 明水县| 南通市| 洛浦县| 柳林县| 哈巴河县| 逊克县| 闻喜县| 务川| 梅州市| 南皮县| 神木县| 东山县| 沛县| 潼南县| 尚志市| 兴文县| 长白|