Hallo Basteltisch,

ich versuche deine Gedanken noch etwas weiter zu entwirren und springe deshalb vermutlich etwas durch deinen Post:
Ich habe noch eine Allgemeine Frage zur Programmierung:
Was ich bisher gesehen habe ist das man nur Boolsche Werte, also 1 oder 0 Abfragt. Was passiert denn bei Sensoren die mehr als nur 2 Statuse kennen? Also z.b. ein GPS Sensor der direkt ganze Zeichenketten zurückgibt. Wie werden diese Ausgewertet?
Genauso Im Endeffekt gibt es nur zwei Formen der Kommunikation: Digital, also eine Reihe von Boolschen Werten, die in irgend einer Form durch ein Medium geschoben werden, oder analog - und analoge Werte müssen dann auch erst wieder in eine digitale Form gebracht werden, damit ein AVR damit arbeiten kann.
Wenn ich nicht irre, arbeiten GPS-Geräte in der Regel über eine Art serielle Schnittstelle, die die Bits in einem bestimmten Takt und mit einer durch ein Protokoll definierten Struktur durch die Leitung schickt, am anderen Ende setzt man dann die Bits gemäß dem Protokoll zusammen.

AVRs haben in der Regel eine Menge nützlicher Komponenten, die sich mit der "normalen" Pin-Funktion Pins teilen und dann zum Beispiel die Verwendung einzelner Pins als serielle Schnittstelle, Eingänge zum ADC und viele andere Dinge ermöglichen, die in der Regel dem Programmierer viel Arbeit abnehmen und direkt mit Hardware ausführen.
Der Eingang wird quasi als durchfluss verwendet, wenn er keinen Pullup Widerstand mehr hat kann der Strom herein und die LED leuchtet (in diesem Fall).
Ausgänge prüfen ihren eigenen Status dahingehend, ob er mit GND/einem anderen Konsument verbunden ist, also ob Strom durch ihn fliesst. Dies geben sie entsprechend wieder.
Äh - nein.
Inbesondere irgendwelche Durchflüsse hatte ich mit meinem Post eigentlich ausdrücklich ausgeschlossen, oder?

Zuerst wieder einmal die Basics:
(Fast) jeder Pin ist multifunktional. Er kann als Eingang oder Ausgang dienen, viele Pins haben noch weitere Funktionen, auf die ich jetzt aber nicht eingehen möchte.
Ob ein Pin als Eingang oder Ausgang fungiert, wird, wie wir bereits wissen, über das DDRx geschaltet.

Ach ja - Eingang oder Ausgang sagt nicht bezüglich der Stromrichtung!

Eingang:
Ist der Pin ein Eingang, "betrachtet" er nur die anliegende Spannung. Was der Pin gerade "sieht", kannst du über das PINx-Register auslesen.
Jetzt kommt noch der Pullup ins Spiel. Intern ist wie in diesem RN-Wissen Artikel zum Thema Pullup gezeigt, ein Pullup neben der normalen Funktion integriert, da man Pullups oft braucht und so leicht Bauteile sparen kann.
Es ist also quasi der Widerstand auf der Schaltung in den AVR hineinverschoben worden, ferner kannst du ihn via PORTx ein/ausschalten).
Das Einschalten des Pullups kann das, was der Pin dann letztendlich zu "sehen" bekommt beeinflussen - die grundlegende Funktion des Eingangs als reinen "Beobachter" ändert es nicht.

Ausgang:
Wenn ein Pin als Ausgang konfiguriert wird, beeinflusst er seine Umgebung aktiv. Entweder gibt er GND aus, oder VCC. Besteht dann eine Verbindung zu einem höheren(niedrigeren Potential, fließt entsprechend Strom.
Der AVR überwacht jedoch den Stromfluss nicht, insbesondere auch nicht auf Überstrom oder falsche Polung (durch mehrere Versorungsspannungen oder unterschiedliche Masseniveaus)
Welches Signal am Pin ausgegeben wird, definiert der Wert im PORTx-Register.

Basic auf PCs habe ich nie programmiert, Bascom nach einer Woche gegen C ausgetauscht.

mfG
Markus

PS: Es schadet nicht, wenn man sich dennoch etwas informiert, auch wenn man sich jenseits der üblichen Pfade bewegen möchte.
Mein erstes AVR-Board war auch selbstentwickelt, -gelötet und -programmiert, dem ging aber eine intensive Recherchephase voraus - ich kann insbesondere das Buch von Roland Walter speziell für BASCOM-Einsteiger nur empfehlen.

Edit: Meine Anmerkung zu PINx gelöscht, Besserwessis Beitrag dazu ist besser und korrekter - man lernt nie aus.