Buenas tardes!
Les hago una consulta, por ahí es simple, por ahí no.
Yo programa en assambler.
¿Se pueden usar las directivas BCF, BSF, BTFSS, BTFSC con un bit de un REGISTRO GENERAL?
Por ejemplo
REG_GEN_1 equ 0x20
btfss REG_GEN_1, 5 ;Chequeo bit 5 del registro de propósito general.
bcf REG_GEN_1,5 ;Si es 0, lo pongo a 1.
goto OTRA COSA ;Sigue programa
Mi consulta viene porque quiero tener un grupo de 16 pulsadores en el bus I2C (con PCF8574) y 16 leds multiplexadas, también en el bus I2C (con otro PCF8574).
Si se presiona un pulsador, por ejemplo el numero 11, se debe encender el Led 11.
y si se vuelve a presionar el pulsador 11, se debe apagar el Led 11.
Ademas se tienen que mantener el estado de los otros leds como están.
Por eso pensaba, que leo el byte correspondiente a los pulsadores, determino que pulsador fue presionado (viendo columnas y filas como en un teclado matricial).
Luego leo el estado de los leds, y chequeo si el led que corresponde al pulsador que fue presionado esta encendida o apagada (chequeando fila y columna correspondiente), y hago la operación contraria, pero modificando solo el bit correspondiente, para no alterar el estado de los demás leds.
Osea que cuando obtengo el byte provenientes de los leds, modifico el bit que enciende o apaga el led correspondiente. y devuelvo el byte modificado por el bus otra vez.
De ahí es que viene la pregunta inicial.
Espero haberme explicado bien.
Por ahi estoy muy equivocado en la logica que estoy pensando, tal vez hay una forma mas simple de hacerlo.
De por si cualquier ayuda, correccion, critica, sugerencia es agradecida. Estoy aprendiendo.
Trabajo con un PIC16F877A
Los pulsadores son momentaneos, Normally Open.
MUCHAS GRACIAS!
Saludos