Forum: Compiler & IDEs Registerinhalt komplett mit Dezimalzahl statt hex schreiben


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von mgolbs (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ich das zählende Timerregister TCNT1 eines ATTiny setzen will wäre 
es schön, nicht im hex Format schreiben zu müssen. 
Schreiben in Register - 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Schreiben_in_Register

Kann man das komplette Register auch statt PORTA = 0x03 mit PORTA = 3 
schreiben, oder mit einer uint8_t Variable wie PORTA = variable_1?

Über Tipps und Infos wäre ich sehr dankbar.

Gruß Markus

von Chris L. (kingkernel)


Bewertung
0 lesenswert
nicht lesenswert
Geht. Ox gibt nur an das die folgende zahl in hex geschrieben ist. 
Kannst auch einfach portd = 200 schreiben

von Hermann E. (hermann_e)


Bewertung
0 lesenswert
nicht lesenswert
Ich geb' das manchmal auch direkt binär an.
Der "Microsoft Calculator Plus" den ich wenn ich mich recht erinnere
hier http://www.microsoft.com/en-us/download/details.aspx?id=21622";
heruntergeladen habe rechnet dir das bequem ineinander um.
Bei binärer Schreibweise mit acht Stellen siehst du damit sofort welchen 
Registern du was antust.

von Teo D. (teoderix)


Bewertung
0 lesenswert
nicht lesenswert
mgolbs schrieb:
> Kann man das komplette Register auch statt PORTA = 0x03 mit PORTA = 3
> schreiben, oder mit einer uint8_t Variable wie PORTA = variable_1?

Ähh, Sorry aber bevor ich so was frage, probiere ich es einfach aus!

von mgolbs (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für die Information. Dann sollte auch die Variable in 
uint8_t funktionieren?

Gruß und Dank Markus

von Mick (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wenn du solche Fragen stellst, solltest du zuerst einmal ein Buch über C 
aufschlagen. Was Zahlenliterale und Variablen sind wird idR. auf den 
ersten Seiten erklärt. Du kannst nicht nach Tutorials programmieren, das 
wird nur schief gehen.

von Hermann E. (hermann_e)


Bewertung
0 lesenswert
nicht lesenswert
Wenn die Frage

mgolbs schrieb:
> Dann sollte auch die Variable in
> uint8_t funktionieren?

richtig verstehe:

Ich sehe was die Wirkung angeht keinen Unterschied zwischen:

A)
uint8_t MyVar = 3;
PORTA = MyVar;

und B)
PORTA = 3;

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
In C können ganze Zahlen generell in folgenden Formaten angegeben 
werden:
1
  i = 48;
2
  i = 0x30;
3
  i = '0';
4
  i = 060;
5
  i = 0b110000;

von Rolf Magnus (Gast)


Bewertung
0 lesenswert
nicht lesenswert
mgolbs schrieb:
> vielen Dank für die Information. Dann sollte auch die Variable in
> uint8_t funktionieren?

Ja. Was läßt dich vermuten, daß das nicht geht?

Peter Dannegger schrieb:
> In C können ganze Zahlen generell in folgenden Formaten angegeben
> werden:
>   i = 48;
>   i = 0x30;
>   i = '0';
>   i = 060;
>   i = 0b110000;

Die letzte Zeile geht allerdings nicht "in C generell", sondern ist eine 
gcc-spezifische Erweiterung. Und das dritte gibt eigentlich keine Zahl, 
sondern ein Zeichen an.

von mgolbs (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für die vielen Hinweise. Ich stelle solche Fragen lieber doch, 
auch wenn man durch probieren, ..., sicher so manches "teilweise" 
herausfinden kann. Eine Lösung soll zuverlässig sein, und nicht in einem 
bestimmten Fall mit viel Restunsicherheit funktionieren. Es ist einfach 
eine Bestätigung von vermuteten Zusammenhängen durch Experten. Bestimmt 
wird es sicher so manchen weiteren Anfänger geben, oder Leute die nicht 
jeden Monat C programmieren, .., der beim googeln auf Foreneinträge 
stößt, die an sich primitiv sind und trotzdem hilfreich sind.

Vielen Dank und Gruß Markus

von Karl H. (kbuchegg) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
mgolbs schrieb:

> eine Bestätigung von vermuteten Zusammenhängen

Eigentlich gibt es da so gut wie keinen Zusammenhang.

Eine Zuweisung hat eine linke Seite und eine rechte Seite.
Auf der rechten Seite des '=' steht im allgmeinen Fall ein Ausdruck. 
Dieser Ausdruck wird ausgewertet und das, was auch immer dann da raus 
kommt wird der linken Seite zugewiesen. Um die Zuweisung durchführen zu 
können, wird unter Umständen noch der Datentyp des Ergebnisses der 
rechten Seite auf den Datentyp der linken Seite angepasst. Aber das wars 
dann auch schon. Mehr Zusammenhang gibt es nicht.

Das warum es dir hier ging, sind eigentlich nur verschiedene 
Schreibweisen. Je nachdem, in welchem Zusammenhang man operiert, kann 
die eine oder andere Schreibweise vernünftiger als eine andere 
Schreibweise sein. Aber im Grunde sind es einfach nur unterschieddliche 
Schreibweisen, die letzten Endes ein Bitmuster beschreiben, mit dem im 
µC operiert wird. Dein µC weiß nichts von Dezimalzahlen oder 
Hexadezimalzahlen. Der manipuliert nur Bitmuster nach vorgegebenen 
Regeln.

: Bearbeitet durch Moderator
von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hermann E. schrieb:
> Der "Microsoft Calculator Plus" den ich wenn ich mich recht erinnere
> hier http://www.microsoft.com/en-us/download/details.aspx?id=21622";
> heruntergeladen habe rechnet dir das bequem ineinander um.

Und was bringt der MCP bei Registerwertberechnung für Vorteile gegenüber 
den eingebauten Fähigkeiten des Compilers?

von bildchen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
1
if (contains(answer, "Kann man") && ( forum == GCC ) ) {
2
   printf ("C Buch");
3
}
Warum wird denn nie geantwortet "Kauf Dir ein Elektronik-Buch", "Kauf 
Dir ein PHP-Buch" ?

von Johann L. (gjlayde) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Was soll denn der Käse mit Schleife?  Ist ja schlimmer als Quatsch mit 
Soße...

Im OP ist von Schleifenkonstrukt grad garnix zu sehen!

von nicht"Gast" (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

bildchen schrieb:
> Warum wird denn nie geantwortet "Kauf Dir ein Elektronik-Buch", "Kauf
> Dir ein PHP-Buch" ?

Weil die Frage: "wieviel Strom fließt denn über meinen 100Ohm 
Widerstand, wenn ich 5V drauf gebe?" sehr selten gestellt wird.

Auf diesem Niveau befindet sich nämlich die Frage des TE.


Grüße,

von nicht"Gast" (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vergessen, bei meinem Vorpost zu schreiben.

nein, das ist nicht verwerflich diese Grundlagen nicht zu wissen.

Allerdings hilft einem dabei ein gutes Buch viel besser, als in einem 
Forum zu fragen, da ein Buch auch Fragen beantwortet (zumindest bei 
einem guten Buch) die man sich sonst evtl gar nicht gestellt hätte.


Grüße

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]
  • [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.