16-Bit Registerwert in 16-Bit Variablen speichern

Gast #326353
Lesenswert?
• ▲
▼
Hi Leutz,
ich hab ein Problem ich arbeite mit Codevision und ich benutzen den 16
Bit Timer1 des ATMega16, so nun will ich den 16Bit-Wert einer 16-Bit
Variablen zuweißen allerdings, klappt es nicht, er speichert entweder
immer nur das Low-Byte oder das High-Byte in einer 16-Bit-Variablen.
Gibt es dafür einen bestimmten Befehl? Danke
Gast #326354
Lesenswert?
• ▲
▼
einige 16bit-Register sind in der der Definitionsdatei nicht deklariert,
warum weiss ich auch nicht. Schau mal nach.

Mega16.h
.
.
sfrb TCNT1L=0x2c;
sfrb TCNT1H=0x2d;
sfrw TCNT1=0x2c;  // 16 bit access
.
.

temp_int=TCNT1;  //klappt, wenn TCNT1 definiert ist

Ansonsten kannst du natürlich auch TCNT1H/L einzeln auslesen und zu
einer 16bit-Variablen zusammensetzen.
Gast #326356
Lesenswert?
• ▲
▼
unsigned int timer1;
//...irgendwas
timer1 = TCNT1L;
timer1 += TCNT1H << 8;

Ganz wichtig: Auf die richtige Reihenfolge beim Auslesen der Register
achten (erst Low- dann High-Byte, beim Schreiben umgekehrt).

Da der Compiler das bei Zugriff auf die 16-Bit-Register automatisch und
in der richtigen Reihenfolge macht, ist die Methode jedoch
(Idioten-)sicherer.

Gruß

Johnny

Antwort schreiben

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.

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.