1  /  1  页   1 跳转 查看:4835

关于 12F683 CCP 捕捉问题

关于 12F683 CCP 捕捉问题

;**************** PORT ***************************************************
        BSF                STATUS,RP0
        CLRF        PIE1
        BANKSEL        TRISIO
        MOVLW        B'00000100'                ; GP2 INTPUT, CCP MODEL, GP0, GP1 OUTPUT
        MOVWF        TRISIO                        ; PORT INTTIAL
        ;CLRF        ANSEL
        ;MOVLW        B'00000100'
        ;MOVWF        WPU
        ;CLRF        IOC
        BCF                STATUS,RP0
        CLRF        GPIO

;**************** CCP ****************************************************
        CLRF        T1CON
        MOVLW        B'00100000'                        ; PRESCALE : 4 
        MOVWF        T1CON
        MOVLW        B'00000101'                        ; ONE HIGH IMPULSE CATCH
        MOVWF        CCP1CON
        BSF                STATUS,RP0
        BSF                PIE1,CCP1IE
        BCF                STATUS,RP0
        BSF                INTCON,PEIE
        BSF                INTCON,GIE
        BSF                INTCON,TMR1ON                ; START UP CCP
        BCF                STATUS,RP0
        CLRF        PIR1

;********************* interrupt process ********************************
;************************************************************************
INT_BIT_RECEIVE
                BTFSS        PIR1,CCP1IF
                GOTO        ERROR_BIT                ; ADD OTHER INTERRUPT SERVICE FUNCTION
                BCF                PIR1,CCP1IF
                MOVF        baud_flag,F                ; baud rate check flag
                BTFSS        STATUS,Z
                GOTO        CHECK_BIT
                CLRF        TMR1L
                CLRF        TMR1H
                INCF        PULSE_TIMES,F
                MOVF        PULSE_TIMES,W
                SUBLW        D'3'                                ; THRID PLUSE GET THE VALUE
                BTFSS        STATUS,C
                GOTO        OUT
                BSF                GPIO,1
                MOVF        CCPR1L,W                ; HIG BYTE EQUAL ZERO
                MOVWF        TIME_LOW
                MOVF        CCPR1H,W
                MOVWF        TIME_HIG

能进入中断,但是 CCPR1H,CCPR1L,的值读出来总是0,到底是什么地方搞错了? 请高手回答! 小弟先谢谢了!!
 

回复:关于 12F683 CCP 捕捉问题

要注意以下几点:
CCPIF置位后,必须用软件清0,
当CCPR1寄存器的值还未被读出,而有一个新的捕捉事件发生时,原来的值被覆盖。捕捉成功后要保存当前的CCPR1H,CCPR1L的值
下面是个例子程序,你可参考下:
CLRF CCP1H
CLRF CCP1L
CLRF PIE1
CLRF PIE2
BSF STATUS,RP0
CLRF PIR1
CLRF PIR2
MOVLW B ‘00000110’
MOVF TRISC
BCF  STATUS,RP0
MOVLW  B‘00110000’
MOVWF T1CON
MOVLW B‘11000000’
MOVWF INTCON
MOVLW B‘01010000’
MOVWF CCP1CON
MOVLW B‘01010000’
MOVWF CCP2CON
检测开始:
POP  BSF TICON,TMR1ON
          BCF PIR1,CCP1IF
LOOP1 BTFSS PIR1,CCP1IF
              GOTO LOOP1
                MOVWF CCPR1L
                  MOVWF CCPR1H
                  BCF PIR2,CCP2IF
。。。。。。。。。。。。。。。
贝能国际智能电子产品解决方案专家
 

回复:关于 12F683 CCP 捕捉问题

谢谢女版主的详细解答!!:)
 

回复:关于 12F683 CCP 捕捉问题

已经解决,产品稳定使用2年多
 
1  /  1  页   1 跳转

版权所有 贝能国际  Burnon国际  Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2012 Comsenz Inc.
Processed in 0.0156248 second(s) , 3 queries. 闽ICP备05003850号
返顶部