Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: josegenio en 19 Enero 2008, 22:51 pm



Título: Ayuda con la interrupcion por RB_0
Publicado por: josegenio en 19 Enero 2008, 22:51 pm
hola amigos tengo un problema con un programa que tengo que hacer para un pic en lenguaje c.

tengo que hacer que pulsando rb0 se active la interrupcion externa y muestre un mensaje rotatorio por el lcd, mi problema es que consigo que lo muestre todo el rato pero se me queda encerrado en la interrupcion, no he mencionado que si vuelvo a pulsar rb0 tiene que salir que es lo importante. Lo que he conseguido tambien es que rote una vez y salga pero no vale. Aqui os remito mi programa a ver si me echais un cable.

muchas gracias.
******************************************************
#include<16f877.h>
#use delay(clock=4000000)
#fuses xt
#use standard_io(a)
#include<LCD_flexible.c>
 ///LLAMADA FUNCION INTERRUPCION
#INT_EXT
void IntRB0()
{     
   int a,b,c;       /*variable para hacer la rotacion de la linea inferior*/
   inicio:
   lcd_init();
   b=14;         //variables linea de abajo
   c=1;         //variable linea arriba
   for(a=0;a<25;a++)   
   {
   delay_ms(200);
   lcd_gotoxy(c,1);
   printf(lcd_putc," Jose Eugenio");
   lcd_gotoxy(b,2);
  printf(lcd_putc,"Diseño 2008 ");
   c++;
   b--;
      }
      a=0;      //pone a cero la cuenta de digitos
      b=14;
      c=1;
   goto inicio;
}   
///PROGRAMA
void main(void)
{
   enable_interrupts(int_ext);      //activar interrupcion externa
   ext_int_edge(L_TO_H);         //configuracion:interrupcion cuando señal esta en alta
   enable_interrupts(GLOBAL);      //todas las interrupciones desactivadas
   for( ; ; ){}   //bucle infinito esperando interrupcion
}