mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2 Fragen zum AVR Befehlssatz


Autor: vinculum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Kann das Zeroflag nach erfolgtem Branch weiterverwendet werden. Ich 
möchte damit Sprünge kaskadieren, die außerhalb der Reichweite für rel. 
jumps liegen.

Bsp:
 tst a
 breq p21
 ...
 tst a
p21:
 breq p22
 ...
p22:

2. Das Manual ist für mich nicht eindeutig. Kann ich ein Output-Bit über 
ein in rx, pinb einlesen?

Bsp:
 ldi r16,0x55
 out portb, r16
 nop
 in r17, pinb

Ist r17 dann 0x55?

Danke.

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2. nein,

 in r17, PORTB

ist dann 0x55

 in r17, PINB

ist exakt das was an Pegeln an den Eingängen anliegt.


1.) Ja kannst du kaskadieren, mache ich auch so. Allerdings ist es quasi 
ein "mieser Trick" weil es einen Source weniger gut wartbar macht. Dh. 
das was in einem Source steht sollte normalerweise explizit und 
aussagekräfting sein. Kaskadierst du solche Sprünge dann besteht die 
Gafahr das wenn du inerhalb dieser Kette was veränderst damit auch an 
andere Stelle das Verhalten unabsichtlich veränderst. Ist also ein Trick 
den man nur anwenden sollte wenn es auf jedes Byte FLASH Speicher 
ankommt.

Gruß Hagen

Autor: Torsten Landschoff (bluehorn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vinculum wrote:
> 1. Kann das Zeroflag nach erfolgtem Branch weiterverwendet werden. Ich
> möchte damit Sprünge kaskadieren, die außerhalb der Reichweite für rel.
> jumps liegen.

Ja, kann man. Wieso auch nicht, der breq-Befehl ändert den Inhalt des 
SREG ja nicht...

> 2. Das Manual ist für mich nicht eindeutig. Kann ich ein Output-Bit über
> ein in rx, pinb einlesen?

Ja, kannst Du.

> Bsp:
>  ldi r16,0x55
>  out portb, r16
>  nop
>  in r17, pinb
>
> Ist r17 dann 0x55?

Nicht unbedingt, denn eine externe Komponente könnte die Port-Pins mit 
mehr Kraft (sprich: Strom) auf GND ziehen. Aber prinzipiell geht das. 
Nur - wozu? :)

Gruss, Torsten

Autor: vinculum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank erstmal.

<Nur - wozu?>

Ein Software-Zähler steuert die Output-Pins 0-3 zyklisch an. Auf 4-7 
liegen Inputs. Ich spare mir dann das Halten des Zählerstandes in einer 
Variablen. Beim asynchronen Einlesen sind input und Zählerstand gleich 
in einem byte vorhanden. So ähnlich wie eine Tastaturmatrix.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn es lesbarer bleiben soll:

Bsp:
 tst a
 brne p21
 rjmp p22

p21:
 ...
 tst a
 brne p21a
 rjmp p22

p21a:
 ...

p22:

Gruß aus Berlin
Michael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.