Zitat Zitat von Torsten_G
Außerdem solltest Du beachten, dass die LED´s und Eingänge üblicherweise mit einem Pullup-Widerstand betrieben werden, d.h., die LEd leuchtet, wenn der Ausgang auf logisch "0" gesetzt wird. Von daher hätte Dein Programm nicht funktioniert.

Der Grund liegt darin, dass ein Prozessor-Pin die 20mA nur gegen GND schalten kann, Der High-Pegel liefert nur ein paar mA.
Für viele µC ist das der Fall. Die Ausgangstreiber der AVRs sind hingegen symmetrisch, so daß ein Port als Ausgang nicht nur 20mA versenken, sondern auch liefern kann.

Unter 'Absolute Maximum Ratings' steht sogar
DC Current per I/O Pin: 40.0 mA
Ein Pin kann also 40mA aushalten, ohne abzufackeln.
Allerdings ist nicht garantiert, daß ein Pin auch wirklich 40mA liefert/versenkt. Das ist wie gesagt weniger und hängt von Vcc ab und der Temperatur ab.
Test conditions (20mA at Vcc = 5V, 10mA at Vcc = 3V)
Zusätzlich gibt es aber noch Einschränkungen an den Gesamtstrom pro PortX und Gesamtstrom über Vcc- und GND-Pin(s), die sich auch für die Verschiedenen AVRs und Gehäusetypen unterscheiden.

Das findet sich alles unter 'Electrical Characteristics' bzw 'I/O Pin Source/Sink Current vs. Output Voltage'.