AND Verknüpfung auch einfacher möglich? 8051 Assembler

Gast #1760797
Lesenswert?

Hi ich wollte mit Taster1(T1) und Taster2(T2) eine LED ansteueren.
Das Ganze sollte wie eine AND Verknüpfung funktionieren.

E1 E2 Out
0  0  0
0  1  0
1  0  0
1  1  1

Jetzt hab ich das folgendermaßen gelöst im Leerlauf frage ich ständig 
die Taster ab. Je nach dem welcher Taster gedrückt ist springe ich in 
ein Unterprogramm um dann im Unterprogramm den zweiten Taster 
abzufragen.
In der Befehlsliste hat es bereits vorgefertigte AND befehle
BSP. "ANL A,R0" bestimmt kann man damit einfacher hantieren weiss aber 
noch nicht wie.


Ich werde das Gefühl nicht los das viel einfacher geht.
Hat jemand einen Verbesserungsvorschlag?



Danke
P.S. unten hab ich den dokumentierten Code eingefügt



LEERLAUF:

  jnb T1,L1     ;Wenn  T1 gedrückt springe L1
  call T1_LOW   ;sonst UP T1_LOW aufrufen
  jmp GO1       ;Springe GO1 um T2 abzufragen
L1:
  call T1_HIGH  ;T1 gedrückt -> UP T1_HIGH aufrufen


GO1:
  jnb T2,L2     ;Wenn  T2 gedrückt springe L2
  call T2_LOW   ;sonst UP T2_LOW aufrufen
  jmp GO2       ;Springe GO2 um wieder von Anfang zu starten
L2:
  call T2_HIGH  ;T2 gedrückt -> UP T2_HIGH aufrufen

GO2:
jmp LEERLAUF    ;Abfrage wieder von Anfang starten



;---------------UP_AND_VERKNÜPFUNG---------------------
;--------------------T1_LOW----------------------------

T1_LOW:
  jnb T2,T1L1      ;T2 gedrückt ->Sprung zu T1L1
                   ;wenn nicht gehe weiter

  setb LED3        ;E1=0  E2=0   Out=0

ret
T1L1:
  setb LED3        ;E1 =0 E2=1   Out=0
ret

;--------------------T2_LOW------------------------
T2_LOW:
  jnb T1,T2L1      ;T1 gedrückt ->Sprung zu T2L1
                   ;wenn nicht gehe weiter

  setb LED3        ;E1=0  E2=0   Out=0

ret
T2L1:
  setb LED3        ;E1 =1 E2=0  Out=0
ret
;--------------------T1_HIGH----------------------
T1_HIGH:
  jnb T2,T1H1      ;T2 gedrückt ->Sprung zu T1H1
                   ;wenn nicht gehe weiter

  setb LED3        ;E1=1  E2=0   Out=0

ret
T1H1:
  clr LED3         ;E1 =1 E2=1   Out=1
ret
;--------------------T2_HIGH----------------------
T2_HIGH:
  jnb T1,T2H1      ;T2 gedrückt ->Sprung zu T2H1
                   ;wenn nicht gehe weiter

  setb LED3        ;E1=0  E2=1   Out=0

ret
T2H1:
  clr LED3         ;E1=1  E2=1   Out=1
ret
;-------------------------------------------------

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren