TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: aitorsp en 08 de Diciembre de 2009, 05:58:11
-
Hola:
Estoy intentando simular en PBP una interrupcion por cambio de estado en RB y lo que me hace es entrar todo el tiempo en ella y no ejecutar el main. Segun el manual del PIC16F877 se debe hacer una lectura-escritura del PORTB al terminar la interrupcion pero en la ayuda del PBP no lo menciona. Podeis echar un vistazo al codigo?
Un saludo
aitor
' Ejemplo de cómo utilizar la interrupcion INT_RB en PBP
DEVICE 16F877A
ALL_DIGITAL=TRUE
SYMBOL RBIF = INTCON.0 ' Flag de interrupcion del puerto B
SYMBOL RBIE = INTCON.3 ' RB Port Change Interrupt Enable
SYMBOL GIE = INTCON.7 ' Global Interrupt Enable
TRISB=%11111111 ' portb entradas
TRISD=%00000000
PORTD=0
INTCON = $88 ' Habilita las interrupciones en los pines RB4 a RB7
On Interrupt GoTo mi_int ' Define donde salta cuando hay interrupcion
loop: RBIF=0
RBIE=1
GIE=1
High portd.7 'Enciende el LED
GoTo loop 'comienza nuevamente el programa
'Rutina de Interrupcion
Disable ' Desabilita las interrupciones
mi_int: GIE=0
Low portd.7 ' Apaga el Led
Pause 500 ' Espera de 1/2 segundo
RBIF=0 ' Borra la bandera de interrupcion
GIE=1
Resume ' vuelve al programa
Enable ' Habilita nuevamente las interrupciones
end
-
Efectivamente debes hacer una lectura del puertoB, aunque no la uses para nada, para limpiar el RBIF.
-
Efectivamente debes hacer una lectura del puertoB, aunque no la uses para nada, para limpiar el RBIF.
Hola:
gracias por la respuesta...pero es que no se como hacer esa lectura en PBP. Supongo que menos este detalle el codigo que ves estaria correcto no?
saludos
aitor :8} :-/
-
Yo no uso PBP pero supongo que asignando el PORTB a una variable o utilizandolo en un IF then lo estás leyendo y así se debería borrar el RBIF