新聞中心

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

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

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


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

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

        以下要用二個定時器資源,凡是有二個定時器的均可,該范例需要的MCU是MICROCHIP PIC16C62
        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 景德镇市| 东兰县| 内黄县| 洛隆县| 黄平县| 金乡县| 贡山| 苍梧县| 玛沁县| 依安县| 安丘市| 天水市| 承德县| 东光县| 靖江市| 辛集市| 乌兰浩特市| 亳州市| 萝北县| 房山区| 腾冲县| 筠连县| 乐昌市| 靖宇县| 浮山县| 岳池县| 泰来县| 清新县| 乌拉特后旗| 丰都县| 丰镇市| 南宁市| 体育| 淮滨县| 威信县| 大化| 大连市| 黄浦区| 洞头县| 商城县| 高唐县|