прерывание от ССР в 16F873

Обсуждаются темы не относящиеся к журналу "РАДИО"

прерывание от ССР в 16F873

Сообщение wws63 » 18 окт 2008, 06:30

Помогите начинающему!!!
Пытаюсь включить прерывание от модуля ССР в 16F873. Но программка туда идти не желает. Проверял в симуляторе MPLAB и протеусе.
Вроде все настройки выполнил?
Привожу упрощённый пример програмки. Если происходит захват по переднему и затем заднему фронту, включается светодиод. Объёма TMR1 хватает, чтобы из-за длительности импульса не переполниться.
Повторюсь, что это упрощённый пример, написанный за минуту. Главное, все ли настройки верны?
Подскажите в чём ошибка, в общем делал так:
Код: Выделить всё
                 ; здесь выбрал МК
                 Org       4
                 goto     INTERRUPT
;---------------------------------------------------------------------------
                 bsf         STATUS, RP0
                 bsf          TRISC, 1          ; настроил линию порта на вход   
                 bcf         STATUS, RP0        ; выбираем банк 0

              clrf          CCP2CON
              movlw     h'05'                     ; захват по переднему фронту
              movwf     CCP2CON
              movlw     .1                           ; делитель 1:1
              movwf     T1CON                 ; TMR1 на внутренний такт
              bcf           PIR1, TMR1IF
              bcf           PIR2, CCP2IF      ; сбросим  флажки прерываний

                                   ; разрешим прерывание

              bsf           PIE2, CCP2IE       ; от модуля CCP2
              bsf           INTCON, PEIE     ; от перифирии
              bsf           INTCON, GIE       ; глобальное
;------------------------------------------------------------------------------------------------
CYCLE
              bcf         PORTB, LED_IND
              btfss       FLAG, LED
              goto       CYCLE
              bсf           INTCON, GIE       ; глобальное запретить
              bsf         PORTB, LED_IND    ; включить светодиод
              CALL       DELAY        ; 1sec
              bcf         FLAG, LED
              bсf         PORTB, LED_IND        ; выключить светодиод
              bsf           INTCON, GIE       ; глобальное разрешить
              goto       CYCLE     

INTERRUPT
       
        movwf   W_TEMP         ;
        swapf   STATUS, W       ;
        clrf    STATUS               ; сохраняем значение
        movwf   S_TEMP          ; W, STATUS и PCLATH     
        movfw   PCLATH                  ;
        movwf   P_TEMP          ;
 
        btfss   PIR2, CCP2IF    ; флаг переполнения от ССР2 выставлен?
        goto         out_int
        bcf     PIR2, CCP2IF

        btfsc      FLAG, 0
        goto       ZF
        bsf          FLAG, 0
        goto         out_int

        clrf          CCP2CON
        movlw     h'05'                     ; захват по переднему фронту
        movwf     CCP2CON
        bcf           PIR1, TMR1IF
        bcf           PIR2, CCP2IF      ; сбросим  флажки прерываний
 ZF     
        bcf           FLAG, 0
        clrf          CCP2CON
        movlw     h'04'                     ; захват по заднему фронту
        movwf     CCP2CON
        ;bcf           PIR2, CCP2IF      ; сбросим  флажки прерываний
        bsf           FLAG, LED

out_int
        movfw   P_TEMP            ;
        movwf   PCLATH                  ;
        swapf   S_TEMP, W        ; восстановим значения
        movwf   STATUS             ; W, STATUS и PCLATH     
        swapf   W_TEMP, F        ;
        swapf   W_TEMP, W
        retfie
       
wws63
 
Сообщения: 91
Зарегистрирован: 08 апр 2008, 06:34

Re: прерывание от ССР в 16F873

Сообщение wws63 » 21 окт 2008, 07:23

Вопрос снят, ошибку нашёл. Боролся с регистром PIE2 в нулевом банке. :oops:
wws63
 
Сообщения: 91
Зарегистрирован: 08 апр 2008, 06:34

Re: прерывание от ССР в 16F873

Сообщение EDDI » 11 ноя 2008, 10:24

wws63 писал(а):Вопрос снят, ошибку нашёл. Боролся с регистром PIE2 в нулевом банке. :oops:



а где точка входа самой программы
EDDI
 
Сообщения: 4
Зарегистрирован: 24 сен 2008, 11:57


Вернуться в Всё остальное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2