Bueno, descargue la versión 1.12 del XC8 pero el problema no se solucionó....la verdad no se que esta pasando, es un desastre; vean por ejemplo:
55: if(Dat == 0x81)
14E2 5041 MOVF Dat, W, ACCESS
14E4 0A81 XORLW 0x81
14E6 A4D8 BTFSS STATUS, 2, ACCESS
14E8 D001 BRA 0x14EC
14EA D001 BRA 0x14EE
14EC D00C BRA 0x1506
1714 5041 MOVF Dat, W, ACCESS
1716 0A81 XORLW 0x81
1718 A4D8 BTFSS STATUS, 2, ACCESS
171A D001 BRA 0x171E
171C D001 BRA 0x1720
171E D00C BRA 0x1738
Todo ese montón de código solo para hacer if(Dat == 0x81)... "Dat" es un "char" de 8 bits.... que yo sepa eso se hace con dos o tres instrucciones en ASM pero vean todo el código que genera el compilador, no tengo idea de que es lo que esta pasando, creo que tendré que regresarme al C18
Y claro, así cualquier programa se gasta su buena memoria, mientras que en el CCS ocupa solo 2 kb en el XC8 me ocupa casi 11 kb