mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mehrere Werte


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

Abfrage von mehren werten vereinfachen.

AVR: ATmega8515
Sprache: ASM

Wie kann ich die cpi abfrage vereinfachen ?

vielen dank, markus

** Code **

ch1:
cpi dmx_byte, 0
breq motor_off
cpi dmx_byte, 1
breq motor_off
<bis dmx_byte 10>

cpi dmx_byte, 11
breq motor_links
cpi dmx_byte, 12
breq motor_links
cpi dmx_byte, 13
breq motor_links
<bis dmx_byte, 20>

cpi dmx_byte, 21
breq motor_rechts
cpi dmx_byte, 22
breq motor_rechts
cpi dmx_byte, 23
breq motor_rechts
<bis dmx_byte, 30>

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
brlo, brsh ?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht zwingend kürzer (nur wenn relative Sprünge nicht mehr ausreichen),
aber einfacher:

  ldi  zh, high(cmdtab*2)
  ldi  zl, low(cmdtab*2)
hc1:  lpm  xl, z+
  lpm  xh, z+
  lpm  yl, z+
  lpm  yh, z+
  cpi  xh, $FF
  cpse  r24, xl
  brne  hc1
  movw  zh:zl, yh:yl
  ijmp

cmdtab:
  .dw  11,  cmd_11
  .dw  22,  cmd_22
  .dw  33,  cmd_33
  ...
  .dw  $FFFF,cmd_unknown

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.