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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren