Hola. Estoy intentando simular un sircuito simple que envia un bit de sincronizacion a otro PIC y espera a que este le evuelva el bit para poder empezar a enviar datos.
El problema esque no sale. Envia el primer bit de sincronizacion pero el otro PIC se queda en un bucle esperandolo y nunca sale para devolver el segundo bit.
En proteus, al enviar el primer bit por el bit 0 del puerto A, no se pone el cuadradito rojo si no que se pone amarillo.
¿Puede ser por eso?
Os dejo el codigo y el warning
;************************************** Enviar.asm **************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK 0x0C
ENDC
; ZONA DE CÓDIGOS ********************************************************************
ORG 0
bsf STATUS,RP0 ; Pone a 1 el bit 5 del STATUS.
movlw b'00010' ; Las líneas del Puerto B
movwf TRISA
clrf TRISB
bcf STATUS,RP0 ; Pone a 0 el bit 5 de STATUS. Acceso
clrf PORTA
clrf PORTB
Sincronizacion
bsf PORTA,0
call Retardo_1s
bcf PORTA,0
Espera
BTFSS PORTA,1
bsf PORTA,3
goto Espera
bcf PORTA,3
Enviar
bsf PORTA,0
call Retardo_100ms
bcf PORTA,0
call Retardo_100ms
goto Enviar
sleep
INCLUDE "RETARDOS.INC"
END ; Fin del programa.
;************************************** Recivir.asm **************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK 0x0C
ENDC
; ZONA DE CÓDIGOS ********************************************************************
ORG 0
bsf STATUS,RP0 ; Pone a 1 el bit 5 del STATUS.
movlw b'1000000'
movwf TRISB ; Las líneas del Puerto B
clrf TRISA
bcf STATUS,RP0 ; Pone a 0 el bit 5 de STATUS. Acceso
clrf PORTB
clrf PORTA
Inicio
BTFSS PORTB,7 ;Espera a que el puerto 6 sea 1 ;mientras parpadea el puerto 3
bsf PORTB,3
call Retardo_50ms
bcf PORTB,3
call Retardo_50ms
goto Inicio
bcf PORTB,3
bsf PORTB,6
call Retardo_1s
bcf PORTB,6
sleep
INCLUDE "RETARDOS.INC"
END ; Fin del programa.
y el error que da es:
Logic contention detected on net #00009