fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Interrupciones PORTB PIC18F2550

3 Respuestas
3 Usuarios
0 Reactions
2,355 Visitas
omega1024
Respuestas: 14
Topic starter
(@omega1024)
Active Member
Registrado: hace 19 años

Hola,

Estoy realizando un proyecto con el PIC18F2550 progrmando en C. El proyecto consiste en controlar un LCD y un teclado de 4x3.
El LCD funciona correctamente, el problema lo tengo con el control del teclado. El teclado está conecta al puerto B , quiero utilizar la interrupción por cambio del puerto para detectar cuando se ha pulsado una telca. El problema es que sin pulsar ninguna tecla, esta interrupción se dispara nada mas que se habilita, las resistencias pull-up las están habilitadas.

Este es el programa simplificado que estoy utilizando.
void main(void)
{

Inicializar();
RBPU=0; //Habilita pull-up internos del puerto B
DelayUs(250);
key=PORTB;
RBIE=1; // Habilita la interrupcion del puerto B ( RB4 - RB7).

while(1)
{
}
}
void interrupt ISR(void) // Rutina de interrupción principal
{
if (RBIE && RBIF) // did something on PORTB change?
{
RA4=!RA4;
PORTB=0; // Es necesario leer/escribir sobre el puerto para borrar el flag
RBIF = 0;

}
}

Gracias por vuestra ayuda.

Responder
2 respuestas
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Prueba: Antes de habilitar la interrupción limpia el flag.

S2

Ranganok Schahzaman

Responder
juanjo
Respuestas: 451
(@juanjo)
Ardero
Registrado: hace 18 años

Yo también limpiaría todos los falgs antes de activar el bit d einterrupción general. Este lo tienes que desactivar mientras estas configurando las interrupciones.

Responder
Compartir: