De hacerlo con una tabla ( realizado con un array en C, deberia quedarte asi), voy a suponer que son 8 bits, porque decis 1 byte, lo que entrega el ADC
const uint8_t tabla[256] = { xx,xxx,xx,xx,xx,xx,xx,x,xx,xx, etc}; // Esto lo pones bien arriba, que sea global
//Lo que sigue dentro de tu programa.
// Aca conversion del ADC
PR2 = tabla[ADRESL]; //<- Utiliza el valor del ADC como indice de la tabla, el valor resultado va al PR2
El
const de tabla es para ponerlo en la FLASH (Program Memory), sino estarias intentando reservar el lugar para la tabla en la RAM (Data Memory).
el
uint8_t es lo mismo que unsigned char ( La nomclatura que use es de unsigned integer 8 bit )
Consejo sobre los arraysLo unico que tenes que asegurarte es que SI o SI lo que pongas de indice, exista en el array. Si tenes un array de 10 elementos, y usas un indice de 20, el compilador C no te va a decir que te pasaste, Y seguramente tengas error en lo que pienses hacer, asi que siempre asegurate de que los indices se cumplen, e implementar limites si es que se necesita. En este ejemplo si detecto un indice mayor a 9 ( los 10 elementos van de 0 a 9 ) o aviso que hay un error o uso un valor de indice definido ejemplo 9.
Aclaracion sobre el tamaño maximo de los arrays en FLASH:Estos tamaños son impuestos por el compilador.
En los PICs de instrucciones de 12-bit ( baseline ) y que usabas RETLW para guardar algo en la FLASH el tamaño esta limitado a 255 elementos. Pero podes tener varias variables, lo cual no te acomplejaria en nada.
En los demas PICs no hay limitaciones, solo las impuestas por el tamaño de la FLASH obviamente