HOla. No se si llego tarde, pero es bien facil lo que necesitas.
Con los datos obtenidos que queres hacer???
Bueno, simplemente para empezar a hablar y hacerlo sin integrados auxiliares, necesitas un PIC con al menos 9 pins de entrada, para leer los datos, cosa que es bien simple. El noveno bit supongo que cuando se pone en alto o bjao, indica el fin del mensaje, o no?
Necesitas 9 pins + los pins de salidas que quieras usar. Te hago un ejemplo facilito en assembler para el 16F84A...
Ej
;Primero de todo:
;declaracion de GPR:
aux EQU 0x0c
final EQU 0x4E
;vectores importantes y componentes externos: pone una resistencia de 10k a la ;salida de RA0 y conectala a 5v
org 0x0000
goto inicio
org 0x0004
goto inicio
org 0x0010
;luego:
;Configuras el puerto B del pic como entradas...
inicio bsf status,rp0
movlw 0xff
movwf portb
clrf option_reg ;activar pull ups en puerto b
movlw 0x01
movwf porta ;ra0 como entrada, las demas como salidas
bcf status,rp0
clrf porta
clrf 0x0c
movlw 0x0c
movwf FSR
movlw 0x0d
movwf final
loop btfsc porta,0 ; esperar que el bit de stop pase a cero (si funciona
goto loop ; a la inversa reemplaza btfsc por btfss...)
movf portb,w
movwf aux
xorwf INDF,W
btfsc status,Z
goto loop ;el dato sigue siendo igual al anterior, no guardarlo
incf FSR,F
movf aux,w
movwf INDF
movf FSR,w
movwf final
goto loop
leerdatos movlw 0x0d ;posicion del primer dato
movwf FSR
xorwf final,w
btfsc STATUS,Z
retlw 0x00 ;no hay datos que leer
proxdato movf INDF,w
nop ;movwf ;??? ;me tenes que decir que hacer
;con los datos obtenidos!!!
incf FSR,F
movf FSR,w
xorwf final,w
btfss STATUS,z
goto proxdato
ultimodato movf INDF,W
nop ;movwf ;???
retlw 0x01
bien...esopero que entiendas lo que hice. Saludos y pregunta sin miedo. chauu!