Hola de nuevo!
Creo que he encontrado la solucion
, o por lo menos eso parece...
Comparando los codigos en asm me he dado cuenta que cuando utiliza spi_write(dato), el compilador no hace la lectura del SSPBUF antes de escribir el dato a enviar:
En el data sheet, he leido algo de que el bit BF, se pone a 0 por hardware cuando se lee el registro SSPBUF (corregidme si me equivoco jeje)...
Si hago lo siguiente, parece funcionar correctamente:
output_low(SS);
#asm
BCF 03.5
MOVF 0x13,W //Leo el registro SSPBUF
#endasm
spi_write(dato); //Y despues envio el dato
output_high(SS);
De esta forma, parece funcionar bien al simular en proteus.
Espero que esta sea una buena solución, si a alguien se le ocurre otra cosa mejor que lo diga...
Gracias y hasta luegoo...