Buenas tardes. Me encuentro realizando unas rutinas de mi trabajo de tesis.
Consiste en verificar unos sensores infrarrojos y su cambio de 1 a 0.
Tengo 3 sensores y están en los bits D0 a D2.
Las estrofas del código son las siguientes.
PROCESO DE LOS CONTENEDORES
PROCESO DE TEMPORIZACION
Espero alguien pueda ayudarme y comentarme donde esta fallando mi código o mi lógica.
El problema está en que entra al primer sensor, el sensor 1, hago el cambio del estado del bit de 1 a 0, y nunca sucede nada, no sale del bucle en pocas palabras.
Adjunto la imagen de la simulación y donde se queda el proceso y no continúa.
Consiste en verificar unos sensores infrarrojos y su cambio de 1 a 0.
Tengo 3 sensores y están en los bits D0 a D2.
Las estrofas del código son las siguientes.
PROCESO DE LOS CONTENEDORES
Código:
if(BANDERA_CVEGETALES == TRUE)
{
printf(LCD_PUTC, "\f");
lcd_gotoxy(1,1);
lcd_putc("Arroz con");
lcd_gotoxy(1,2);
lcd_putc("Vegetales! Bien!");
lcd_gotoxy(1,3);
lcd_putc("Iniciemos!:");
delay_ms(2000);
printf(LCD_PUTC, "\f");
do{
lcd_gotoxy(1,1);
lcd_putc("Llene el Conten.");
lcd_gotoxy(1,2);
lcd_putc("#1 de Arroz");
lcd_gotoxy(1,3);
lcd_putc("Ahora.");
BANDERA_C1 = TRUE;
BANDERA_CVEGETALES = FALSE;
}while(BANDERA_C1L == FALSE);
printf(LCD_PUTC, "\f");
do{
lcd_gotoxy(1,1);
lcd_putc("Contenedor #1");
lcd_gotoxy(1,2);
lcd_putc("Lleno. Llene de");
lcd_gotoxy(1,3);
lcd_putc("Vegetales el");
lcd_gotoxy(1,4);
lcd_putc("Contenedor #2");
BANDERA_C2 = TRUE;
}while(BANDERA_C2L == FALSE);
printf(LCD_PUTC, "\f");
lcd_gotoxy(1,1);
lcd_putc("funciona");
PROCESO DE TEMPORIZACION
Código:
#int_TIMER1
void TIMER1_isr(void) //Función de interrupción por desbordamiento TMR0
{
if(BANDERA_C1 == TRUE) //Rutina para verificar el Sensor Infrarojo 1
{ //Si este sensor posee un estado bajo por mas de 10s
if(!input(SENSOR_I1)) //Se asume que efectivamente esta lleno.
{
cont_c01++;
if( cont_c01 >= 100) //1000ms - 1Seg
{
cont_c01 = 0;
cont_c10++;
if(cont_c10 >= 10) //10Seg
{
cont_c10 = 0;
BANDERA_C1L = TRUE;
BANDERA_C1 = FALSE;
}
}
}
}
if(BANDERA_C2 == TRUE) //Rutina para verificar el Sensor Infrarojo 2
{ //Si este sensor posee un estado bajo por mas de 10s
if(!input(SENSOR_I2)) //Se asume que efectivamente esta lleno.
{
cont_c02++;
if( cont_c02 >= 100) //1000ms - 1Seg
{
cont_c02 = 0;
cont_c20++;
if(cont_c20 >= 10) //10Seg
{
cont_c20 = 0;
BANDERA_C2L = TRUE;
BANDERA_C2 = FALSE;
}
}
}
}
}
El problema está en que entra al primer sensor, el sensor 1, hago el cambio del estado del bit de 1 a 0, y nunca sucede nada, no sale del bucle en pocas palabras.
Adjunto la imagen de la simulación y donde se queda el proceso y no continúa.
Adjuntos
Última edición por un moderador: