Atmega8L - 8PU Ports ansteuern in C

Gast #3386365
Lesenswert?
• ▲
▼
Hallo,

wie steuere ich den PORTD an diesem Atmega über C an
wir haben es mit sisy derzeit gemacht, wir wissen dass der Wert PORTD = 
0xC1
Bit 2,3 und  setzt. kann uns jemand helfen wie man die anderen 
ansteuert,bzw. wie man die anderen Werte errechnet.

Mfg

Sebastian Neusch
#3386397
Lesenswert?
• ▲
▼
Sebastian N. schrieb:
> PORTD = 0xC1

Wenn Du wirklich "hexadezimal" kannst, dann sollte das doch nicht so 
schwierig sein?
1
       +---------+---------+
2
Hex:   |    C    |    1    |
3
       +---------+---------+
4
Binär: | 1 1 0 0 | 0 0 0 1 |
5
       +---------+---------+
6
   Bit   7 6 5 4   3 2 1 0

Und so wird das Port beschrieben. Also Bit 7, 6 und 0 sind "1", die 
anderen "0".

Zu SiSy kann ich allerdings nichts sagen ...

Gruß Dietrich
#3386992
Lesenswert?
• ▲
▼
Auch wenn das sbit.h sicherlich eine gute Lösung ist, kommt der TO nicht 
umhin, den Zusammenhang zwischen dezimaler Schreibweise, binärer 
Schreibweise und hexadezimaler Schreibweise zu lernen
1
   dezimal   Hex   binär             dezimal  Hex  binär
2
      0       0     0000                 8     8    1000
3
      1       1     0001                 9     9    1001
4
      2       2     0010                10     A    1010
5
      3       3     0011                11     B    1011
6
      4       4     0100                12     C    1100
7
      5       5     0101                13     D    1101
8
      6       6     0110                14     E    1110
9
      7       7     0111                15     F    1111

speziell in der µC-Programmierung ist es unumgänglich diese Tabelle, 
speziell die Hex-binär Entsprechung im Kopf zu haben.
Das sieht nur auf den ersten Blick kompliziert aus, tatsächlich ist 
diese Tabelle recht einfach zu merken - es gibt da ein paar 
augenscheinliche Zusammenhänge, die aus dem prinzipiellen Aufbau von 
Zahlen-Stellenwertsystemen resultieren.

Hex ist deshalb die interessantere Version, weil eine 8-Bit Zahl, 
geschrieben als Hexadezimalzahl, ganz einfach die Aneinanderreihung der 
beiden 4-Bit Bitmuster der jeweiligen Hex-Ziffern ist.
1
0xC1 
2

3
  C    1100
4
  1    0001
5

6
also ist 0xC1   11000001

Um einzelne Portpins gezielt auf 0 oder 1 zu setzen, gibt es allerdings 
bessere Möglichkeiten als die Zuweisung einr Hex-Zahl oder eines 
Binärmusters. Denn da hat man dann das Problem, dass man ja nicht nur 
das eine gewollte Bit verändert, sondern immer alle 8. D.h. das muss 
berücksichtigt werden, das dem so ist.
Und da greifen dann die anderen Dinge. Allerdings entbindet das nicht 
davon, den zusammenhang Binärschreibweise zu Hex-Schreibweise zu kennen.

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.