Vamos haber....asi por encima decirte que has declarado un vector tipo char de dos dimensiones opcion[2] ok??? bien al switch cuando pides por teclado coger una tecla gets(opcion) lo estas haciendo mal, ya que si quieres almacenar la tecla pulsada en el vector opcion debes expecificar en que direccion del vector, es decir en la opcion[0] o en la opcion[1], creo que te has liado por lo cases asi que te recomiendo que declares la variable simplemente tipo char es decir asi:
Codigo:
char opcion;
y ya puesdes utilizar bien la funcion gets(opcion).....vale???
Con respecto al boton, asi:
Codigo:
º 5v
|
|
RES 10K
|
|
PIC------------BOTON--------GND
Asi la patita del pic donde esta conectado el boton estara en alta y sera tratada como si no se pulsa el boton, cuando s epulsa el boton la patita del pic esta en baja y se trata como pulsado el boton....decirte que los botones son dispositivos que generan los "rebotes" es decir mandan muchas señales altas y bajas en un corto periodo de tiempo por lo que tendras que evitarlo a nivel de software(con un retardo 151ms o mas o bucle while compruebe si ya se ha estabilizado) o bien mediante hardware.
suerte!!!
Ke tal!!! decirte algo mas....en la instruccion:
Codigo:
#use rs232(baud=9600,xmit=PIN_B6,rcv=PIN_B7,invert)
no hace falta pone invert si usas un MAX232...aconsejarte que no declares el pin B6 como salida ya que lo vas a usar en la declaracion del rs232, mejor declarar la variable char opcion dentro del main asi sera local.... y por cierto en el post de ejemplitos en c, hay un programa de como interactua el PC->PIC, se llama RS232 Y PIC, aqui te dejo el enlace:
http://miarroba.com/foros/ver.php?foroid=46840&temaid=4061462&pag=6
Suerte!!!