Estoy escribiendo el código inicial para cambiar los valores de los pines si se toman ciertas acciones. El programa funciona de forma cruda, pero me interesa afinarlo. Aquí está:
org 40h
PROVERKA: ;check if button is pressed
jnb p1.0,PROVERKA ; ;keep checking
VODX: ;input X
jnb p1.6, VODY ;if p1.6 is not set, we're inputting Y values
nop
clr p1.7 ;set p1.7 low
jb p1.2,VODX ;jump to input X if we're still inputting X values
setb p1.7 ;set p1.7 high
VODY: ;input Y
clr p1.6 ;set p1.6 low
setb p1.7 ;set p1.7 high
nop
jb p1.2,VODY ;jump to input Y if we're still inputting Y values
SUMMA: ;Sum function
jb p1.2,UMNOJENIA ;if p1.2 is high, check if we're multiplying
clr p2.0 ;set p2.0 low-this is to write to X memory
nop
setb p2.0; ;set p2.0 high - pulse for X register
clr p1.6 ;set p1.6 low - to ensure no more values of Y are
;inputted
clr p1.7 ;set p1.7 low - to ensure no more values of X are
;inputted
UMNOJENIA: ;yet to write functuality
end
Mi problema aquí es que, en la función SUMMA, quiero borrar los pines 6 y 7 para asegurarme de que no se agreguen valores a los valores existentes de X e Y. Sin embargo, cuando trato de solucionar problemas si eso sucede o no , al presionar el botón, el pin 7 pasa a nivel alto y los valores se agregan a los valores X existentes. Además de eso, cuando se alterna p1.2, se supone que p1.6 baja, y p1.7 alta, solo obtengo que no se presione el siguiente botón, lo que significa que tengo valores destinados a que Y se copie a X además. No sé si mi pregunta tiene sentido, pero podría proporcionar más explicaciones cuando sea necesario.
EDITAR: He cambiado el puerto a 2 y hasta ahora, parece estar funcionando. Pero todavía necesito una explicación si sigue resistiendo.