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.*/ }
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); } }