Exemplo n.º 1
0
void moverEnAutomatico(){
uart_rd_temp = ' ';
bandera_automatico = 1;       /* Con esta bandera se valida en la interrupcion que hacer cuando ocurre un choque. */
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(2,6,txtAutomatic);
/* Inicio de movimiento en automatico hacia adelante. */
 RC1_bit = 1;
 RC2_bit = 1;
 RC5_bit = 0;
 RC4_bit = 0;
 cargarDato();
 while (uart_rd_temp != 'e') { /* Si se le envía e se sale de modo automatico. */
   waitSignal();
   cargarDato();

   /* Al salir de modo automatico paramos los motores.*/
   if(uart_rd_temp == 'e')
     {
       RC1_bit = 0;
       RC2_bit = 0;
       RC5_bit = 0;
       RC4_bit = 0;
     }

 }
 pararVehiculo();
 bandera_automatico = 0;       /* al enviar e se sale de modo automatico.*/
}
Exemplo n.º 2
0
void moverManual(){
uart_rd_temp = ' ';
cargarDato();
bandera_automatico = 0;       /* Se limpia la bandera de automatico por si acaso. */
while (uart_rd_temp != 'e') { /* Si se le envía e se sale de modo manual */

waitSignal();
cargarDato();
if (uart_rd_temp == 'u' && bandera_mover) { /* Up: En la interrupción para el auto */
Lcd_Out(2,6,txtArriba);
avanzarVehiculo();
}
 else if (uart_rd_temp == 'd' && bandera_mover) { /* Down:  */
Lcd_Out(2,6,txtAbajo);
moverAtras();
}
 else if (uart_rd_temp == 'l' && bandera_mover) { /* left:  */
Lcd_Out(2,6,txtAbajo);
girarIzquierda();
avanzarVehiculo();
}
 else if (uart_rd_temp == 'r' && bandera_mover) { /* right:  */
Lcd_Out(2,6,txtAbajo);
girarDerecha();
avanzarVehiculo();
}

}
pararVehiculo();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(2,6,"Se salió de modo manual.");
Delay_ms(100);
uart_rd_temp = ' ';


}
//***************MAIN***************//
void main()
{
    FILE* pf;
    t_dato dato;
    t_pila pila;
    int opc,cantReg,i;

    printf("\n**********MENU DE OPCIONES**********\n\
1- Crear pila\n\
2- Apilar\n\
3- Desapilar\n\
4- Pila vacia?\n\
5- Pila llena?\n\
6- Vaciar pila\n\
7- Ver tope de pila\n\
0- SALIR\n\n\
INGRESE EL NUMERO DE OPCION: ");
    scanf("%d",&opc);

    while(opc && opc!=0)
    {
        switch(opc)
        {
        case 1:
            crearPila(&pila);
            printf("\nSe ha creado la pila");
        break;

        case 2:
            while(pila.tope!=TAM)
            {
                cargarDato(&dato);
                if(apilar(&pila,&dato))
                    printf("\nSe apilo el dato ingresado");
            }
            printf("\nSE LLENO LA PILA");

        break;

        case 3:
            if(desapilar(&pila,&dato))
                {
                    printf("Se desapilo el dato ");
                    puts(dato.nom);
                }
            else
                printf("No se pudo desapilar el dato");

        break;

        case 4:
            if(pilaVacia(&pila))
                printf("La pila esta vacia");
            else
                printf("La pila NO esta vacia");
        break;

        case 5:
            if(pilaLlena(&pila))
                printf("La pila esta llena");
            else
                printf("Todavia hay lugar en la pila");
        break;

        case 6:
            vaciarPila(&pila);
            printf("Se vacio la pila");
        break;

        case 7:
            if(verTope(&pila,&dato))
            {
                printf("El tope de pila es ");
                puts(dato.nom);
            }
            else
                printf("La pila esta vacia");
        break;

        }
        printf("\n\n**********MENU DE OPCIONES**********\n\
1- Crear pila\n\
2- Apilar\n\
3- Desapilar\n\
4- Pila vacia?\n\
5- Pila llena?\n\
6- Vaciar pila\n\
7- Ver tope de pila\n\
0- SALIR\n\n\
INGRESE EL NUMERO DE OPCION: ");
        scanf("%d",&opc);
    }

}