Autor Tema: Problema con interrupción  (Leído 2036 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado timh

  • PIC10
  • *
  • Mensajes: 23
Problema con interrupción
« en: 09 de Diciembre de 2011, 02:20:08 »
Hola, espero que no sea muy noche, ando terminando unas practicas, pero se me ha presentado el siguiente problema en mi programa:

Código: [Seleccionar]
   LIST P=16F877A
    INCLUDE <P16F877A.INC>
    __CONFIG    _XT_OSC & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _WDT_OFF
PASAJEROS EQU 0x20


#DEFINE BANCO0 BCF STATUS,5
#DEFINE BANCO1 BSF STATUS,5

;-----------------INICIO--------------
    ORG 0
    GOTO INICIO
    ORG 4
GOTO INTERRUPCION

INICIO      BANCO1
            MOVLW 0xFF
            MOVWF TRISB
            CLRF TRISD
            BANCO0
            CLRF PORTD
   CLRF PASAJEROS

MOSTRAR     MOVF PASAJEROS,W
MOVWF PORTD
BSF INTCON,GIE
BSF INTCON,RBIE
            GOTO MOSTRAR


INTERRUPCION
               BCF INTCON,GIE
BCF INTCON,RBIE
MOVF PORTB,W
INCF PASAJEROS
BCF INTCON,RBIF
   RETFIE

END

Verán mi problema viene cuando aprieto el push button, en la interrupción el registro pasajeros se debería de incrementar en uno, pero no, se incrementa dos veces, es decir ocurre una interrupción cuando presiono el botón y otra cuando lo suelto, ¿Que creén que pueda ser lo que este mal o que me falte agregar para que solo ocurra una interrupción al presionar el botón y no dos?

NOTA: Estoy usando la interrupción por cambio de estado en RB4-RB7.
« Última modificación: 09 de Diciembre de 2011, 02:22:24 por timh »

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema con interrupción
« Respuesta #1 en: 09 de Diciembre de 2011, 09:12:55 »
  Lo que está ocurriendo es correcto. La interrupción que estás utilizando es por cambio de estado, es decir que se va a ejecutar cuando pasas de 0 a 1 y de 1 a 0 por lo tanto ocurre tanto cuando presionas el botón como cuando lo sueltas.

  Dentro del bloque de interrupción no es necesario deshabilitar RBIE ya es suficiente con poner a 0 el bit GIE
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Problema con interrupción
« Respuesta #2 en: 09 de Diciembre de 2011, 15:15:49 »
En la interrupcion chequea el pulsador, si esta pulsado incrementa, si no esta pulsado no incrementa.


INTERRUPCION
                   btfss     BUTTON   ; lo pongo por 1 no se como lo tienes
                   retfie                   ; fue interrupcion al soltarlo sale de interrupcion
                   incf       PASAJEROS ; esta pulsado, incrementa