www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik 2 Fragen zum AVR Befehlssatz

Autor: vinculum (Gast)
Datum: 24.03.2008 23:22

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: 24.03.2008 23:29

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: 24.03.2008 23:34

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: 24.03.2008 23:49

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: 25.03.2008 08:21

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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net