Comparacion de puertos en ensamblador

#1
Buenas colegas, traigo un proyecto para realizar un encoder con el pic 16f877 y consiste en la activacion de 4 sensores simulando una combinacion binaria la cual se compara con un numero que se ingresa mediante un teclado matricial de tal manera que por ejemplo: Si en el teclado pulsamos el numero 4 los sensores comensaran a activarse en distintas configuraciones hasta coincidir con el numero 4 pero en binario osease 0100 y ya encontrada la combinacion activar un motor pero el problema esta cuando compara la senal que tengo en la entrada del pic(la que mandan los sensore) el numero que metemos en el teclado lo convierto a binario para poderlo comparar con la senal de los sensores pero he buscado por todos lados y no logro hacerlo funcionar ya busque algo de informacion en otros temas abiertos pero aun asi no lo logor hechar a andar alguien podria decirme como comparo un puerto del pic con alguna variable en el lenguaje ensamblador muchas gracias colegas.
 
#2
Una forma es usar la instruccion or exclusiva, si el resultado de W es 0 entonces las variable son iguales, si es diferente de 0 no son iguales, para saber si W es 0 entonces verificas si la bandera de 0 se activo en el Reg STATUS, por seguridad borrar la bandera antes de la instruccion, recuerda que la operacion se hace BIT a BIT, chauuuuuuuuu
 
Última edición:
#3
Gracias fdesergio Lo intentare haber que me resulta, ahorita estoy intentando de esta manera pero tampoco funciona, no se si este correcto o este mal, ¿podrías darme tu opinión? es para comparar si la señal es igual a 0001

BTFSC PORTA,0
GOTO A2
BTFSS PORTA,1
GOTO A2
BTFSS PORTA,2
GOTO A2
BTFSS PORTA,3
GOTO A2
BSF PORTD,4 (ACTIVA MOTOR)

 
Última edición por un moderador:
#4
yo lo he usado y es la mejor formar, menos instrucciones y mas efectivo, haces lo siguiente:

Cargas la variable del teclado en W (en binario)
borras la bandera de 0 en status
Haces la OR exclusiva entre el puerto de entrada y W (solo se puede hacer entre W y otro)
revisas la bandera de 0,
1-si bandera de cero = 0, entonces el valor de w es diferente de 0 y las variables son diferentes
2 -si bandera de cero =1, entonces el valor de w es =0, por lo tanto las 2 variables son iguales
fin

OJOOOO La bandera de cero se pone a 1 cuando el resultado de una operacion matematica o logica da como resultado 0
 

Temas similares

Arriba