Mira, mas o menos lo que tengo es esto:
Codigo:
while(!kbhit()); //Espera la recepcion de un caracter
valor=getc();
switch (valor)
{
case "h":
break;
case "a":
break;
case "j":
putc("8");
//Para el programa de adquisición
while(!kbhit()); //Espera la recepcion de un caracter
muestrashigh=getc();
while(!kbhit()); //Espera la recepcion de un caracter
muestraslow=getc();
while(!kbhit()); //Espera la recepcion de un caracter
periodohigh=getc();
while(!kbhit()); //Espera la recepcion de un caracter
periodolow=getc();
muestras=(muestrashigh*256) + muestraslow;
periodo=(periodohigh*256) + periodolow;
conteo=periodo;
//Para el control del motor
while(!kbhit()); //Espera la recepcion de un caracter
datoalto=getc();
while(!kbhit()); //Espera la recepcion de un caracter
datobajo=getc();
while(!kbhit()); //Espera la recepcion de un caracter
corriente=getc();
while(!kbhit()); //Espera la recepcion de un caracter
giro=getc();
while(!kbhit()); //Espera la recepcion de un caracter
paso=getc();
freqmot=(datoalto*256)+datobajo;
output_b(corriente);
if (giro=="i")
{
output_bit(PIN_D5,1);
}
if (giro=="d")
{
output_bit(PIN_D5,0);
}
if (paso=="m")
{
output_bit(PIN_D4,1);
}
if (paso=="c")
{
output_bit(PIN_D4,0);
}
retardo=freqmot;
output_bit(PIN_D7,1);
setup_counters(RTCC_INTERNAL,RTCC_DIV_256);
set_rtcc(62); //para un T=10 ms
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
set_timer1(60536); // para un T=1 ms
enable_interrupts(INT_RDA);
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
while(TRUE);
{
}
break;
default:
break;
}
Los primeros dos case me sirven para posicionar el motor y una vez hecho esto entonces mediante el ultimo case cargo la informacion necesaria para iniciar el proceso. Mi duda estaba en saber si al salir de alguno de los case automáticamente me regresaria a la parte desde donde inicie o sea esperar el dato a cargar en la variable valor. No utilizo la interrupcion por el puerto ya que esa la estoy utilizando mas adelante. Por favor checa mi código y dime si tengo algun error. De antemano gracias.