Hola marcvicdigital,
hay un pequeño lio de concepto al escribir tu código en C. Olvídate de los goto del assembler.
Te comento:
1) Declara los procesos fuera del main, no dentro. Son todas funciones diferentes (main, proceso1 y proceso2).
2) El 'break' solo te corta la ejecucion de un bucle (for, while), pero no corta la ejecucion de una funcion a mitad. Para ello escribe 'return', y con ello saldra de la función en ese punto.
No acabo de entender del todo que hace "Rutina_leer_Teclado()". Lee '#' o '*' y graba no se que valor en el proceso, o lee un número acabado en '#' o '*' y ese es el número que guarda como valor del proceso......
Si aclaras un poquito mejor el tema, te acabamos de dirigir la respuesta.
En regla general seria algo asi:
- Defines una funcion que se llame por ej: Actualizar_proceso() y sera compartida por todos los procesos.
void Actualizar_proceso()
{
Rutina_leer_Teclado(); // Lees lo que haya que leer...
if (ValorTeclado='#')
{
GrabarValorProcesoX(num_proceso); // Guardas el valor leido
if(num_proceso < TOTAL_PROCESOS) num_proceso =num_proceso + 1; // pasa al siguiente proceso, excepto si es el ultimo. En ese caso se queda en el último
}
else if(ValorTeclado='*')
{
if(num_proceso > 1) num_proceso = num_proceso - 1; // Si es 1, la siguiente vez tambien escribe el valor del proeso 1 (no hay anterior)
}
}
void Main()
{
for(;;)
{
Actualizar_proceso();
}
}
Luego la funcion "GrabarValorProcesoX(num_proceso)" graba el valor del proceso en el sitio adecuado. Le pasas como parametro a que proceso se refiere.
Un saludo.