Hola muchachos que tal.?, tengo un problema vale, les explico... Estoy haciendo una bomba de gasolina con interrupciones externas... Mi progrma tiene dos opciones: Echar gasolina introduciendo los litros o introduciendo los BsF (la moneda Venezolana), RB1, lo uso para echar gasolina introduciendo por teclado los litros, y RB2 lo uso para echar gasolina introduciendo los BsF por teclado. Si por ejemplo presiono RB1, pues aquí hay otras do opciones, las cuales son, echar gasolina de 91 octanos o de 95 octanos. Si por ejempo le doy a 91 el cual es RC0, pues introduzco los litros y el saca la cuenta!!! O.k todo eso funciona fino!!!!
El problema está cuando hago lo mismo pero con RB2, la interrupción externa 2, ella entra al menú para seleccionar la gasolina de 91 o de 95, pero cuando voy a elegir entre esas dos, pues no elige nada!!!! no se porque.... que será....?????
Aquí les dejo el código y la simulación......
#int_ext2
void interrupt_service_rutine_ext2(void)
{
funcion_int2();
}
void funcion_int2(void)
{
/////////////////////////////RUTINA QUE SELECCIONA LA GASOLINA POR BsF/////////////////////////////
printf(lcd_putc,"\f"); // Borro pantalla
printf(lcd_putc,"T. de gasolina"); // Imprimo en pantalla
lcd_gotoxy(1,2); // Posiciona el cursor en la linea 2
printf(lcd_putc,"91 octanos - RC0"); // Imprimo en pantalla
printf(lcd_putc,"95 octanos - RC1"); // Imprimo en pantalla
delay_ms(3000); // Tiempo de espera para que de chance de presionar el botón.
Hasta aquí llega bien, pero despues no quiere pasar a preguntar por el puerto C0 o C1.....De aquí para abajo, como que no lo ve!!!/////////////////////////PULSADOR QUE SELECCIONA LA GASOLINA DE 91 OCTANOS/////////////////////////////
if(input(pin_C0)==0) // Si RC0 está en 0, entonces...
{
delay_ms(20); // Verifica sino es rebote
if(input(pin_C0)==0) // Verifico otra vez si RC0 está en 0
{
printf(lcd_putc,"Ingrese BsF"); // Imprimo en pantalla
delay_ms(3000); // Tiempo de espera para que de chance de presionar el botón.
teclado(); // Llamo a la función que me lee el teclado
var1=resul; // Guardo lo que recogi del teclado
printf(lcd_putc," BsF= %d",var1); // Imprimo en pantalla la variable recogida del teclado
delay_ms(3000); // Una demora para pulsar bien el teclado
teclado(); // LLamo a la función que me lee el teclado
var2=resul; // Guardo lo que recogi del teclado
printf(lcd_putc,"%d \n\r",var2); // Imprimo en pantalla la variable recogida del teclado
delay_ms(2000); // Una demora para que se vean los datos de teclado
cantlitros(); // Llamo a la función que me calcula los litros que se han de pedir
printf(lcd_putc,"\f"); // Borro pantalla
w=0; // Inicializo la variable contador
bsf_91=0.87; // El litro de gasolina de 91 octanos está en 0.87 BsF
//printf(lcd_putc,"\f"); // Borro pantalla
while(w!=resul2) // Repetir mientras el contador sea distinto de los litros y los BsF a pagar no pasen de 5BsF
{ // Si esto es cierto, entonces....
litros=(w/bsf_91)+litro; // Saco la cuenta de los litros por el valor del litro de gasolina
litro= litros;
printf(lcd_putc,"Litros= %g",litro); // Imprimo en pantalla
lcd_gotoxy(1,2); // Posiciona el cursor en la línea 2
printf(lcd_putc,"BsF= %1.2d",w); // Imprimo en pantalla
delay_ms(1000); // Una demora para que se visualice el contaje de los litros
printf(lcd_putc,"\f"); // Borro pantalla
w++; // Incremento contador
}
}
}
}
Si se fijan la rutina de la interrupción 1 es igual a la de la dos, la 1 funciona bien, pero cuando quiero entrar a la dos, pues nada! que estoy haciendo mal....? ya llevo todo el día en eo, estoy que me arranco los cabellos!
![redhot :5]](http://www.todopic.com.ar/foros/Smileys/default/redhot.gif)
Atte: Enigma... La llanerita de Guayana
