Ok AngelGris.
Esta parte esta superada, muchas gracias por las aclaraciones, en los case usas los numeros directamente como si fueran de base decimal, aun no lo pruebo pero ya lo he visto en un manual de picc, pero me llama la curiosidad por que no hacerlo asi:
case 0x00: Break;
case 0x01: Break;
.
.
.
case 0xnn: Break;
OJO no se si funciona he, solo pregunto ?
Ahora en el caso que necesite saignar valor en el puerto:
ejemplo:
TRISA = 0b00101111;
PORTA = 0b00011111; // puerto a=47d = 0X2F
la forma individual seria RA7 = 1
si leo el puerdo despues de esto seria 0d10011111 = 0x9F
si despues de leer una variable con el valor 0101 como lo colocaria en la parte alta del puerto, como hago la sustitucion ?
TRISA = 00001111; // parte baja del puerto A como entrada
TRISB = 0x0F; // parte alta del puerto B como salida
variable = PORTA << 4; // leo el valor del puerto y lo desplazo a la izquierda
PORTB = variable; // envío al puerto de salida el valor de la variable