Hola Fer_TACA, si leí los hilos que aparecen referente al Puerto Esclavo Paralelo, pero con esa información no he logrado dar solución a mi problema, la verdad es que no llevo mucho tiempo programando PIC, por ello me cuesta entender algunas cosas. Si me puede ayudar se lo agradecería.
Lo que estoy haciendo es un teclado matricial de 3x4 (tipo telefónico) el cual es leido por un 16F877A, luego codifique la lectura y la envío al puerto D (salida). Esta salida esta conectada directamente a otro 16F877A en el puerto D configurado como PSP. Lo que debe hacer es recibir el byte paralelo y enviarlo al puerto A que está conectado con un display de 7 seg BCD (muestra la lectura del teclado). El pic1 lee el teclado sin problemas y envia los datos por el puertoD, pero el PIC2 no lee el puertoD, por ello no me envia los datos al display.
Adjunto el diagrama en Proteus y dejo los codigos de las 2 PIC,
Codigo del Pic 1, encargado de la lectura del teclado
INCLUDE <P16F877A.INC>
LIST P=16F877A
org 0
goto inicio
inicio
bsf STATUS,RP0
movlw b'11110001'
movwf TRISB
clrf TRISD
bcf STATUS,RP0
tecla
bsf PORTB,1
bsf PORTB,2
bsf PORTB,3
btfsc PORTB,4
goto lectura
btfsc PORTB,5
goto lectura
btfsc PORTB,6
goto lectura
btfsc PORTB,7
goto lectura
goto tecla
lectura
bsf PORTB,1
bcf PORTB,2
bcf PORTB,3
btfsc PORTB,4
goto tecla_1
btfsc PORTB,5
goto tecla_4
btfsc PORTB,6
goto tecla_7
btfsc PORTB,7
goto tecla_A
bcf PORTB,1
bsf PORTB,2
bcf PORTB,3
btfsc PORTB,4
goto tecla_2
btfsc PORTB,5
goto tecla_5
btfsc PORTB,6
goto tecla_8
btfsc PORTB,7
goto tecla_0
bcf PORTB,1
bcf PORTB,2
bsf PORTB,3
btfsc PORTB,4
goto tecla_3
btfsc PORTB,5
goto tecla_6
btfsc PORTB,6
goto tecla_9
btfsc PORTB,7
goto tecla_B
goto tecla
tecla_0
movlw b'00000000'
movwf PORTD
goto inicio
tecla_1
movlw b'00000001'
movwf PORTD
goto inicio
tecla_2
movlw b'00000010'
movwf PORTD
goto inicio
tecla_3
movlw b'00000011'
movwf PORTD
goto inicio
tecla_4
movlw b'00000100'
movwf PORTD
goto inicio
tecla_5
movlw b'00000101'
movwf PORTD
goto inicio
tecla_6
movlw b'00000110'
movwf PORTD
goto inicio
tecla_7
movlw b'00000111'
movwf PORTD
goto inicio
tecla_8
movlw b'00001000'
movwf PORTD
goto inicio
tecla_9
movlw b'00001001'
movwf PORTD
goto inicio
tecla_A
movlw b'00001010'
movwf PORTD
goto inicio
tecla_B
movlw b'00001011'
movwf PORTD
goto inicio
end
Código del PIC2 (PSP), encargado de recibir por PSP y enviar al display BCD
INCLUDE <P16F877A.INC>
LIST P=16F877A
org 0
goto inicio
inicio
bsf STATUS,RP0 ;Ingreso al Banco 1
movlw 0x06 ;Configuro todas los Pines de A como Digitales
movwf ADCON1
movlw 0x00 ;Configuro todos los pines de A como salidas
movwf TRISA
movlw 0x17 ;Cargo la configuración del TRISE para que funcione como PSP
movwf TRISE ; Activanto en 1 PSPMODE y RE0,RE1,RE2
movlw b'11111111' ;Configuro como entreda al Puerto D
movwf TRISD
bcf STATUS,RP0 ;Vuelvo al banco 0
goto principal
principal
bsf STATUS,RP0
btfss TRISE,7
goto inicio
bcf STATUS,RP0
goto display
display
movf PORTD,W
movwf PORTA
bcf PIR1,PSPIF
goto inicio
end
Si encuentran alguna falla me indicar por favor.