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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.