Conmutar pines en los puertos 8051

0

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.

    
pregunta Abba Ahmad

0 respuestas

Lea otras preguntas en las etiquetas