aktualisiert 01.06.2010
Was eigentlich sind Pin's und Port's ?
Beim Atmega gibt es diverse Ein/Ausgänge diese sind jeweils zu 8 Bit zu einem Port zusammengefasst.
Der Atmega 8 besitzt 3 dieser Ports.
Die Ports hat man nach dem Alphabet benannt. Der AVR besitzt Ports mit den Namen Port B ,Port C und sinnvoll Port D.
Beim Port C hat man die 8.Leitung nicht herausgeführt.
Jeden Anschluss kann man entweder als einzel Ein oder Ausgang definieren oder man kann auch den gesamten Port verwenden.
Folgende Befehle oder Anweisungen beziehen sich alle auf EIN und( oder) Ausgänge des Mikroprozessors
DDRD = 1 DDRD steht für DataDirectionRegisterD  Im AVR wird dabei ein Register gesetzt,der Steuerelektronik des Ports
( aus dem Englischen für Anschluss) wird damit gesagt,das er als Ausgang oder Eingang arbeiten soll.
Hier wird der gesamte Port  D als Ausgang definiert , die 1 gibt an das es sich um einen Ausgang handelt ,
eine 0 (Null) würde als Eingang bewertet, wobei keine Definition Automatisch als Eingang gewertet wird
DDRD=&HFF Hier wird der gesamte Port D als Ausgang angegeben allerdings als Hexwert dargestellt durch das H .FF
ist der Hexwert für die Zahl 255 oder als Binärwert 11111111
DDRD=255 Hier wird der gesamte Port D als Ausgang angegeben allerdings als Dezimalwert
DDRD=&B11111111 Hier wird Port D komplett als Ausgang angegeben wobei jede 1 für ein Bit steht, also von rechts aus gesehen die erste 1 ist Bit d.0 die zweite 1 ist Bit D.1 usw...
Config Portd = Output Konfiguriert den gesamten Port als Ausgang .
DDRD=&B11110000 Hier wird der PinD.0 / D.1/D.2/D.3 als Eingang und Pind.4 /D.5/D.6/D.7 als Ausgang definiert.
Mit den folgenden Anweisungen werden die internen PullUp Widerstände aktiviert


PortD.0 = 1 Pin D.0 wird auf High geschaltet Also der Interne PullUp Widerstand wird aktiviert
PortD=255 oder Die PullUp's des gesamten Port werden aktiviert ( hier der Wert 255 als Dezimale schreibweise
PortD=&B11111111 Die PullUp's des gesamten Port werden aktiviert ( hier als Binäre schreibweise)
LED Alias PortD.0 Port D.0 wird als Variable LED abgelegt
 Generell gilt unbenutzte Pin's  sollten als Eingänge definiert werden , um sie so auf einen festen Bezugspunkt zu legen auch wenn sie nicht benutzt werden,
 also entweder durch den internen PullUp Widerstand auf Plus legen, oder eben extern auf Masse legen .
Weil diese Eingänge sonst einen undefinierten Wert annehmen können, und dadurch das Programm durcheinander bringen können

Sobald die Direktive "$Baud"  im Programm eingesetzt wird, hat sie Vorrang vor den Funktionen als normalen Ein oder Ausgängen.
Beim Atmega 8 äußert es sich beispielsweise so, dass beim Einsatz der Direktive "$Baud" im Programm ,
obwohl an Pin D.0 und D.1 beispielsweise eine LED angeschlossenen ist und die Pin's als Ausgänge gesetzt sind dieser Ausgang zwar in seiner Funktion
vorhanden ist, er aber nicht sauber oder gar nicht schaltet.
Beim Einsatz der Anweisung "$Baud" werden diese Pins Automatisch in ihrer Zweitfunktion angesprochen und zwar als TXD und RDX
Kommunikationspins für die RS232 Schnittstelle


Zustände der Pin / Port's auf dem Display anzeigen lassen !
Sollte bei der Programmerstellung Probleme auftreten kann es hilfreich sein sich die Aktuellen Zustände der Pin / Ports anzeigen zu lassen. Dazu kann man sich einfach behelfen indem man sich mit dem Befehl "Display " die Zustände auf dem Display falls angeschlossen wie folgt anzeigen lässt:
Lcd Pinb.0 ; Pinb.1 ; Pinb.2 ; Pinb.3 ; Pinb.4 ; Pinb.5 ; Pinb.6 ; Pinb.7
Aktualisiert 23.02.2019
Copyright by Manfred Schrod 2009