Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

02/01/2013 #1


Comparacion de puertos en ensamblador
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.
02/01/2013 #2

Avatar de fdesergio

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
02/01/2013 #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)

02/01/2013 #4

Avatar de fdesergio

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
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.