Buenas
RedPic gracias por tu ayuda, me he estado leyendo lo que me recomendaste y buscando mas, al final, en la parte de codigo que arriba ponia en negrita, la he cambiado por esta:
if(kbhit()){
do{
BufferRS232[c] = getc();
c++;
}while(kbhit());
Enciende(LEDRS);
lcd_init();
printf(lcd_putc,"D %u",BufferRS232[2]);
c=0;
Apaga(LEDRS);
}
Pero me ocurre algo rarisimo, yo mando 32 bytes desde el emisor y el receptor me los recibe, el primer byte (el BufferRS232[0]) me lo recibe bien, el segundo tambien, pero a partir del tercero ya no me recibe ninguno bien, cuando en teoria recibe los 32 de golpe.
En el emisor tengo este codigo (en ensamblador)
Primero configuro la usart cuando se inicializa el pic
;----------------------------------------
; Configuracion de la USART
bsf RCSTA,SPEN ; Se enchufa la USSART
bsf STATUS, RP0 ; Cambia a banco 1
bcf TXSTA,TX9 ; Selecciono que la transmision será de 8 bits
bcf TXSTA,SYNC ; Configuro la USART en modo asincrono
bcf TXSTA,BRGH ; Modo baja velocidad, K=64
movlw D'12'
movwf SPBRG ; Se configura para trabajar a 4800 baudios
bcf STATUS, RP0 ; Cambia a banco 0
;----------------------------------------
El codigo para transmitir es este:
bsf STATUS, RP0 ; Cambia a banco 1
bsf TXSTA,TXEN ; Activo la transmision
bcf STATUS, RP0 ; Cambia a banco 0
movlw D'32'
movwf ContRS232
movlw Buffer0 ; lsb primero
movwf FSR
SigTXByte
movf INDF, W ; Copio el buffer al acumulador
movwf TXREG ; Copio el acumulador en el registro de TX
bsf STATUS, RP0 ; Cambia a banco 1
btfss TXSTA,TRMT ; Testo la bandera para comprobar si ha terminado la transmision
goto $-1 ; Si no ha terminao vuelvo a testear
bcf STATUS, RP0 ; Cambia a banco 0
incf FSR, F
decfsz ContRS232, F
goto SigTXByte
bsf STATUS, RP0 ; Cambia a banco 1
bcf TXSTA,TXEN ; Desactivo la transmision
bcf STATUS, RP0 ; Cambia a banco 0