Programm 1 - Port-Test

Einfaches Programm, das ohne Variablen auskommt und Port I/O Funktionen demonstriert.

Das Programm konfiguriert den PortB auf Eingang (alle 8 Bit) und den PortC auf Ausgang (auch alle 8 Bit). Anschließend wird in einer Schleife der Eingangswert von PortB gelesen und auf den PortC geschrieben.
So könnte man z.B. Tasten (gegen +5V) an die Eingangsports schalten und LEDs (mit Vorwiderstand) an die Aufgangsports. Die gedrückten Tasten werden dann mit den LEDs angezeigt.

.include "m48def.inc" ;Einbinden der Definitionen für den ATMega48

.cseg ;Assembler Direktive: Code Segment
.org 0x0000 ;Assembler Direktive: Startadresse 0x0000

Setup:
    ldi R0, 0b00000000 ;R0 mit dem Wert 0 laden
    out DDRB, R0 ;Alle Port-B Anschlüsse auf Eingang
    out PortB, R0 ;Keine Pull-Up Widerstände aktiviert

    ldi R0, 0b11111111 ;R0 mit dem Wert 255 laden
   out DDRC, R0 ;Alle Port-C Anschlüsse auf Ausgang
    ldi R0, 0b00000000 ;R0 mit dem Wert 0 laden
    out PortC, R0 ;Alle Ausgänge auf Null setzen

Loop:
    in R0, PinB ;Laden der PortB Input-Werte in R0
    out PortB, R0 ;Schreiben von R0 auf den PortB Ausgang
    rjmp loop ;Sprung zum Label loop/Loop (Groß-/Kleinschreibung ist egal)