新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 策勒县| 开平市| 宁国市| 沂源县| 廉江市| 怀宁县| 普兰县| 沙洋县| 洞口县| 凯里市| 瓮安县| 南漳县| 保靖县| 林西县| 内丘县| 昭苏县| 安龙县| 蒙城县| 徐汇区| 塔河县| 石家庄市| 石景山区| 泽普县| 吴江市| 海口市| 乌恰县| 宁国市| 石棉县| 台南县| 大石桥市| 巧家县| 巍山| 镇江市| 佛山市| 犍为县| 嘉禾县| 孟津县| 巴中市| 沾化县| 乐平市| 桐庐县|