Forum: Mikrocontroller und Digitale Elektronik Atmega8L - 8PU Ports ansteuern in C


von Sebastian N. (sebastian_neusch)


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

von Dietrich L. (dietrichl)


Lesenswert?

Sebastian N. schrieb:
> wir wissen dass der Wert PORTD = 0xC1
> Bit 2,3 und  setzt.

Das ist so falsch.

0xC1 ist bei C die Darstellung des Werte im Hexdezimalsystem. Das 
solltest Du zuerst mal lernen: 
http://de.wikipedia.org/wiki/Hexadezimalsystem

Gruß Dietrich

von Sebastian N. (sebastian_neusch)


Lesenswert?

hallo,

entschuldige wenn ich mich falsch ausgedrückt habe, ich weiss wie das 
Hexadezimale binäre oktale usw funktionieren.
Ich verstehe bloss nicht nach welchem system man die werte benutzt

von Dietrich L. (dietrichl)


Lesenswert?

Sebastian N. schrieb:
> Bit 2,3 und  setzt

... oder da   ^  fehlt noch was im Text.

Außerdem hängt es auch noch davon ab, welche Bits des Ports als Ausgang 
eingestellt sind und was unter "setzen" verstanden wird.
Ist am Port z.B. eine LED gegen Vcc angeschlossen, leuchtet sie, wenn 
man den Portpin auf 0 "setzt".

Gruß Dietrich

von Sebastian N. (sebastian_neusch)


Lesenswert?

wie haben den SiSy AVR Mikrocontroller Experientiersystem.
und wie finden einfach ichts dazu.

von Dietrich L. (dietrichl)


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

von Peter D. (peda)


Lesenswert?


: Bearbeitet durch User
von Karl H. (kbuchegg)


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.

: Bearbeitet durch User
von Roland R. (Gast)


Lesenswert?

guckst du hier wenn du sisy nimmst :)

http://www.avr-cpp.de/

Gruß R.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.