AVR ASM Sprungtabelle

OP #7385737
Lesenswert?
• ▲
▼

Hallo, ich arbeite an einem asm Programm für einen ATmega48 und wollte eine Sprungtabelle nutzen. Die einzelnen Werte entsprechen Uhrzeiten im 5 min Schritt:

Sprungtabelle: .DW 0700, 0705, 0710, 0715, 0720, 0725, 0730, 0735, 0740, 0745, 0750, 0755, 0800, 0805, 0810, 0815, 0820, 0825, 0830, 0835, 0840, 0845, 0850, 0855, 0900, 0905, 0910, 0915, 0920, 0925, 0930, 0935, 0940, 0945, 0950, 0955, 1000, 1005, 1010, 1015, 1020, 1025, 1030, 1035, 1040, 1045, 1050, 1055, 1100, 1105, 1110, 1115, 1120, 1125, 1130, 1135, 1140, 1145, 1150, 1155, 1200

Problem: Im Atmel Studio 6 wird für die Werte 0800 bis 0955 die Fehlermeldung "Invalid number" ausgegeben. Die Werte davor und dahinter werden anstandslos akzeptiert.

Hat jemand eine Erklärung?

Dank und Gruß

Gast #7385738
Lesenswert?
• ▲
▼

Bruno M. schrieb:

Hat jemand eine Erklärung?

Die führende Null kennzeichnet Zahlen in oktaler Schreibweise. Oktale Ziffern gehen von 0 bis 7.

Bruno M. schrieb:

Die Werte davor und dahinter werden anstandslos akzeptiert.

Aber im Speicher hast du mit Sicherheit nicht die erwarteten Zahlenwerte. Du willst dezimale Zahlen schreiben, die dürfen nicht mit einer 0 beginnen.

#7385761
Lesenswert?
• ▲
▼

Bruno M. schrieb:

ich arbeite an einem asm Programm für einen ATmega48 und wollte eine Sprungtabelle nutzen. Die einzelnen Werte entsprechen Uhrzeiten im 5 min Schritt:

Sprungtabelle: .DW 0700, 0705, 0710, 0715, 0720, 0725, 0730, 0735, 0740, 0745, 0750, 0755, 0800, 0805, 0810, 0815, 0820, 0825, 0830, 0835, 0840, 0845, 0850, 0855, 0900, 0905, 0910, 0915, 0920, 0925, 0930, 0935, 0940, 0945, 0950, 0955, 1000, 1005, 1010, 1015, 1020, 1025, 1030, 1035, 1040, 1045, 1050, 1055, 1100, 1105, 1110, 1115, 1120, 1125, 1130, 1135, 1140, 1145, 1150, 1155, 1200

Was hast du in den letzten 40 Jahren gemacht? Winterschlaf? Stasis? Dimensionssprung? Zeitreisen?

So einen Käse programmiert kein Mensch, der auch nur ANSATZWEISE Assembler verstanden hat. In so eine Tabelle schreibt man LABELS, keine KONSTANTEN!

https://www.mikrocontroller.net/articles/AVR-Tutorial:_Mehrfachverzweigung

Oder soll das eigentlich gar keine Sprungtabelle werden, sondern eher ein Datenfeld, aka Array? Danach sieht es nämlich aus.

Kann man so machen, kann man aber auch mittels Formel berechnen, ist ja nun weiß Gott einfach.

#7385859
Lesenswert?
• ▲
▼

Das ist eine Tabelle, aber doch keine Sprungtabelle. Eine Sprungtabelle ist eine Tabelle mit Adressen von Funktionen, die aufgrund des Tabellenindex angesprungen werden.

Die Konstanten aber, die in dieser Tabelle stehen, sind ganz offensichtlich aber nicht die Adressen von Funktionen, die angesprungen werden können, sondern Uhrzeiten in einem merkwürdigen Dezimalformat.

Wozu auch immer das gut sein mag.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 3 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.