<del id="p0fsc"><progress id="p0fsc"></progress></del>
<dl id="p0fsc"></dl>

    一级A片网站|下载一级毛片黄片|午夜理论福利|精品毛片福利午夜视频|国产色婷婷精品免费视频|国产无码黄色一级|aⅤ高清无码免费看大片|黄片大全迷奸免费

    技術熱線: 4007-888-234
    設計開發(fā)

    專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命

    開發(fā)工具

    提供開發(fā)工具、應用測試 完善的開發(fā)代碼案例庫分享

    技術支持

    從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創(chuàng)造無限潛能!

    新品推廣

    提供新的芯片及解決方案,提升客戶產品競爭力

    新聞中心

    提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)

    PIC16F84單片機產生兩組PWM輸出實例

    更新時間: 2019-03-23
    閱讀量:3030

    十年專注單片機方案開發(fā)的方案公司英銳恩,分享PIC16F84單片機產生兩組PWM輸出實例。英銳恩現(xiàn)提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。

    list p=16F84 ; list directive to define processor
    #include ; processor specific variable definitions

     

    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _RC_OSC

    ; '__CONFIG' directive is used to embed configuration data within .asm file.
    ; The lables following the directive are located in the respective .inc file.
    ; See respective data sheet for additional information on configuration word.


    ;********************** CONST DEFINITIONS******************************
    FULL_WORK = 10 ; 程
    DEF_WORK2 = 8 ; PWM2
    PORT_OUT = PORTB ;
    PIN_PWM1 = 0 ; P
    PIN_PWM2 = 1 ;
    ;********************** VARIABLE DEFINITIONS***************************
    CBLOCK 0x0C
    w_temp ; variable used for context saving
    status_temp ; variable used for context saving
    PWM_FULL ; 程
    PWM_WORK_CFG1 ; PWM1 
    PWM_WORK_CFG2 ; PWM2 

    PWM_WORK_CNT1 ; PWM1 
    PWM_WORK_CNT2 ; PWM2 
    ENDC
    ;**********************************************************************
    ;****************** *******************
    ;**********************************************************************
    ORG 0x000 ; processor reset vector
    ResetStart
    goto main ; go to beginning of program
    ;**********************************************************************
    ;**************************************
    ;**********************************************************************
    ORG 0x004 ; interrupt vector location
    movwf w_temp ; save off current W register contents
    movf STATUS,w ; move status register into W register
    movwf status_temp ; save off contents of STATUS register

     

    bsf STATUS,RP0
    bcf INTCON,T0IF ;
    bcf STATUS,RP0 

    decfsz PWM_FULL,F ;
    goto ISR_PWM1
    bsf PORT_OUT,PIN_PWM1 ; PWM1/PWM2
    bsf PORT_OUT,PIN_PWM2
    movlw FULL_WORK ; 
    movwf PWM_FULL
    movf PWM_WORK_CFG1,W
    movwf PWM_WORK_CNT1
    movf PWM_WORK_CFG2,W
    movwf PWM_WORK_CNT2
    goto ISR_EXIT
    ISR_PWM1
    decfsz PWM_WORK_CNT1,F ;
    goto ISR_PWM2
    bcf PORT_OUT,PIN_PWM1 ; 
    ISR_PWM2

    decfsz PWM_WORK_CNT2,F ;
    goto ISR_EXIT
    bcf PORT_OUT,PIN_PWM2 ; 
    ISR_EXIT
    movf status_temp,w ; retrieve copy of STATUS register
    movwf STATUS ; restore pre-isr STATUS register contents
    swapf w_temp,f
    swapf w_temp,w ; restore pre-isr W register contents
    retfie ; return from interrupt
    ;**********************************************************************
    ;****************** ﹍てPWM *******************************
    ;**********************************************************************
    InitPWM
    bsf STATUS,RP0 ;
    bcf PORT_OUT,PIN_PWM1
    bcf PORT_OUT,PIN_PWM2
    bcf STATUS,RP0
    bsf PORT_OUT,PIN_PWM1 ;
    bsf PORT_OUT,PIN_PWM2
    movlw FULL_WORK ;
    movwf PWM_FULL
    movlw DEF_WORK1

    movwf PWM_WORK_CFG1
    movwf PWM_WORK_CNT1
    movlw DEF_WORK2
    movwf PWM_WORK_CFG2
    movwf PWM_WORK_CNT2
    retlw 0
    ;**********************************************************************
    ;************************************************
    ;**********************************************************************
    InitTimer
    bsf STATUS,RP0
    bsf OPTION_REG,T0CS ;
    bsf OPTION_REG,PSA ;
    bsf INTCON,GIE ;
    bcf INTCON,T0IF ;
    bcf STATUS,RP0
    retlw 0
    ;********************************************************************

    **
    ;********************
    ;**********************************************************************
    StartTimer
    bsf STATUS,RP0
    bcf OPTION_REG,T0CS ;
    bsf INTCON,T0IE ;
    bcf STATUS,RP0
    retlw 0
    ;**********************************************************************
    ;****************** *******************************
    ;**********************************************************************
    StopTimer
    bsf STATUS,RP0
    bsf OPTION_REG,T0CS ;
    bcf INTCON,T0IE ;
    bcf STATUS,RP0
    retlw 0
    ;**********************************************************************
    ;****************** *******************************

    ;**********************************************************************
    main
    bcf STATUS,RP0 ; select Page 0 for Port Access
    call InitPWM
    call InitTimer
    call StartTimer
    goto $
    ;**********************************************************************
    END ; directive 'end of program'

    一级A片网站|下载一级毛片黄片|午夜理论福利|精品毛片福利午夜视频|国产色婷婷精品免费视频|国产无码黄色一级|aⅤ高清无码免费看大片|黄片大全迷奸免费
    <del id="p0fsc"><progress id="p0fsc"></progress></del>
    <dl id="p0fsc"></dl>