Muchas gracias por la rapidez en tu respuesta, manex. Lo que me dices ya lo he hecho, pero no tengo muy claro el resultado. Por ejemplo, para el programa:
void main(void)
{
output_low(PIN_A4);
}
en la ventana 'disassembly listing' muestra esto:
6: void main(void)
7: {
0004 6AF8 CLRF 0xff8, ACCESS
0006 9ED0 BCF 0xfd0, 0x7, ACCESS
0008 6AEA CLRF 0xfea, ACCESS
000A 6AE9 CLRF 0xfe9, ACCESS
000C 80C1 BSF 0xfc1, 0, ACCESS
000E 82C1 BSF 0xfc1, 0x1, ACCESS
0010 84C1 BSF 0xfc1, 0x2, ACCESS
0012 96C1 BCF 0xfc1, 0x3, ACCESS
0014 0E07 MOVLW 0x7
0016 6EB4 MOVWF 0xfb4, ACCESS
0018 0E19 MOVLW 0x19
001A 6EAF MOVWF 0xfaf, ACCESS
001C 0E22 MOVLW 0x22
001E 6EAC MOVWF 0xfac, ACCESS
0020 0E90 MOVLW 0x90
0022 6EAB MOVWF 0xfab, ACCESS
8: output_low(PIN_A4);
0024 9892 BCF 0xf92, 0x4, ACCESS
En principio me daba la sensación de que las primeras líneas eran inicializaciones del PIC o de alguna librería y de que la función output_low correspondía tan solo a una instrucción BCF, pero no puede ser porque el registro 0xF92 es el TRISA, no el PORTA ni el LATA. Así que supongo que las líneas de antes de la etiqueta 8: también corresponden a esa función. Sigo investigando y te cuento.
Saludos