Gibt es den Befehl

Gast #27906
Lesenswert?

Hallo,
gibt es einen Befehl mit dem ich einen Ganzen port überwachen kann? Also 
wie "sbic" bloß das er den ganzen PortD überwachen soll. Wenn dann was 
los ist soll er weitergehen. Ich könnte zwar auch 8 mal sbic einsetzen 
aber gibt es da keine andere Möglichkeit?
Danke schon mal.
Peter
Gast #27912
Lesenswert?

Es gibt sog. Status-Flags (SREG). Ist ein Vergleich oder eine 
arithmetische Operation =0, wird i.a. das Zero-Flag gesetzt.
BREQ = BRanch if EQual (Springe bei Gleichheit -> Zero-Flag=1)
BRNE = BRanch if Not Equal
usw.
Nicht alle Befehle beeinflussen die Status-Flags - im Befehlssatz sind 
die entsprechenden Infos zu finden.
Gast #27915
Lesenswert?

wait:
*** Lesen des aktuellen Zustands des kompletten Ports***
*** und speichern in "temp"                          ***

     in temp,PIND

*** Vergleiche "temp" mit "alt". Hinter "temp" und   ***
*** "alt" verbergen sich Register. In "alt" ist der  ***
*** alte Zustand des Port gespeichert. Beim aller-   ***
*** ersten durchlauf ist "alt" nicht definiert, also ***
*** wird der Vergleich höchstwahrscheinlich ein      ***
*** "ungleich" zum Ergebnis haben. Nach dem "cp"     ***
*** Befehl ist das Zero-Flag gesetzt, wenn           ***
*** "temp" = "alt". Andernfalls ist es nicht gesetzt.***

     cp temp,alt

*** Da wir detektieren wollen, ob sich am Port etwas ***
*** getan hat, springen wir zur Schleife zurück, bis ***
*** "temp" <> "alt"                                  ***

     breq wait ;nix los, also warten

*** Damit für den nächsten Durchlauf "alt" definiert ***
*** ist, wird der aktuelle Port-Zustand in dieses    ***
*** Register geladen.                                ***

     mov alt,temp ;aktuellen Zustand speichern

     ;ab hier den Code schreiben, in dem der Port
     ;ausgewertet wird

     rjmp wait

Ausführlicher kann ich jetzt aber nimmer....  ;-)

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