Buenas tardes amigos, me contacto con ustedes ya que necesito su ayuda para determinar el error que se me produce en el código siguiente:
el detalles que se tiene es que cuando el codiggo llega al segundo kbhit() no me lee el teclado sin importar el valor q sea enviado, si alguien tiene idea de que sucede por favor aviseme gracias...
Código:
#include "D:\Documents\Universidad\Lab Digitales II\PIC\Proyectos\Alarma Pic\Alarmar Pic Usart.h"
#use delay(clock=4000000)
#use RS232(BAUD=9600, BITS=8 ,PARITY=N, XMIT=PIN_C6, RCV=PIN_C7)
//Declaracion Variables
char accion, pruebaFin;
int i, estado, estadoPuertas, armadoAuto, subeVidrio, cierreArmadoA;
//Fin
void test()
{
while(pruebaFin == ' ')
{
if(kbhit())
{
pruebaFin = getc();// Leo teclado y guardo en pruebaFin
puts("Salir Prueba\n");
}
else
{
output_high(PIN_D0);
output_high(PIN_D1);
output_high(PIN_D2);
output_high(PIN_D3);
output_high(PIN_D4);
output_high(PIN_D5);
output_high(PIN_D6);
output_high(PIN_D7);
delay_ms(500);
output_low(PIN_D0);
output_low(PIN_D1);
output_low(PIN_D2);
output_low(PIN_D3);
output_low(PIN_D4);
output_low(PIN_D5);
output_low(PIN_D6);
output_low(PIN_D7);
delay_ms(500);
}
}
}
void main()
{
//Inicializo las variables
accion = ' ';
pruebaFin = ' ';
i = 0;
estado = 0;
estadoPuertas = 0;
armadoAuto = 0;
subeVidrio = 0;
cierreArmadoA = 0;
//Fin
set_tris_a(0xFF); //Coloco el puerto A como entrada
set_tris_d(0x00); //Coloco el puerto D como salida
puts("Inicialice el Sistema\n");
test();
while(1)
{
if(input_A())
{
if(input(PIN_A0) && !input(PIN_A0))
{
armadoAuto = 1;
}
if(input(PIN_A1))
{
subeVidrio = 1;
}
if(input(PIN_A2))
{
cierreArmadoA = 1;
}
if(input(PIN_A3))
{
}
if(input(PIN_A4))
{
}
if(input(PIN_A5))
{
}
if(input(!PIN_A0))
{
armadoAuto = 0;
}
if(input(!PIN_A1))
{
subeVidrio = 0;
}
if(input(!PIN_A2))
{
cierreArmadoA = 0;
}
if(input(!PIN_A3))
{
}
if(input(!PIN_A4))
{
}
if(input(!PIN_A5))
{
}
}
puts("Esperando Comando\n");
delay_ms(500);
if(kbhit())
{
accion = getc(); //Leo el teclado
if(accion >= '0' && accion <= '9')
{
if(accion == 1) //Activo y Desactivo Alarma
{
if(estado == 0) //Activo Alarma
{
puts("Alarma Activada\n");
estado = 1;
output_high(PIN_D0);
output_high(PIN_D1);
output_low(PIN_D4);
for(i = 0; i < 2; i++)
{
output_high(PIN_D5);
output_high(PIN_D6);
delay_ms(500);
output_low(PIN_D5);
output_low(PIN_D6);
delay_ms(500);
}
}
else if(estado == 1) //Desactivo Alarma
{
puts("Alarma Desactivada\n");
estado = 0;
output_low(PIN_D0);
output_low(PIN_D1);
output_high(PIN_D4);
for(i = 0; i < 1; i++)
{
output_high(PIN_D5);
output_high(PIN_D6);
delay_ms(500);
output_low(PIN_D5);
output_low(PIN_D6);
delay_ms(500);
}
}
}
else if(accion == 2)
{
}
else if(accion == 3)
{
}
else if(accion == 4)
{
}
}
}
}
}
el detalles que se tiene es que cuando el codiggo llega al segundo kbhit() no me lee el teclado sin importar el valor q sea enviado, si alguien tiene idea de que sucede por favor aviseme gracias...