Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
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.
Prueba: Antes de habilitar la interrupción limpia el flag.
S2
Ranganok Schahzaman
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.