Die 32 Arbeitsregister (general purpose register) werden mit den vorbelegten Bezeichnern R0 - R31 angesprochen. Dabei gilt:
In jedem Datenblatt zu einem bestimmten AVR-Controller findet sich auch eine Zusammenfassung aller Befehlssätze dieses Controllers (Instruction Set Summary). Um die Darstellung dort zu verstehen sind ein paar Vorbemerkungen notwendig.
Das Instruction Set Summary umfasst sechs Spalten:
In den folgenden kleinen - teils sinnfreien - Übungen betrachten wir aus den fünf Kategorien des Instruction Set Summary
eine Auswahl an Instruktionen, machen uns mit ihnen näher vertraut und besprechen sie ausführlich.
Einige Instruktionen haben wir bereits im AVR Assembler - Teil 1 kennengelernt:
Die folgenden Programme können tlw. mit einem STK200 oder mit einem Simulationsprogramm ausgeführt werden. Der eingesetzte Prozessor ist in allen diesen Übungen ein ATmega8.
Übung 1 - Instruktionen CPI, DEC, BRNE | |
Material |
|
Aufgabe |
|
Das Programm CPI.asm
Auszüge aus dem Instruction Set Summary
Simulation des Programmablaufs
Im weiteren Verlauf der Programmausführung wird
und - wenn keine Gleichheit festgestellt wird - kehrt das Programm an den Anfang der Schleife (schleife:) zurück.
Die Spiegelpunkte 1. und 2. werden wieder durchlaufen, bis Gleichheit zwischen R17 und R18 festgestellt wird. Der Controller erkennt dies, da im SREG nach Ausführung der CPI-Instruktion das Z-Flag (Gleichheit liegt vor) gesetzt wurde (s. Abb. 3d).
Die Schleife wird verlassen, es geht weiter mit: rjmp wdh.
In der folgenden Übung 2 wird der CPI Befehl angewendet. Es wird die Aufgabe sein, die acht LEDs an PortB als Indikatoren für die acht Taster sw0 bis sw7 an PortD auf einem STK200 Board zu nutzen. Eine entsprechende LED soll aufleuchten, wenn der dazu entsprechende Taster (es geht um die Position: 0, 1, ..., 7) gedrückt wird. Mehrere Taster dürfen gleichzeitig gedrückt werden.
Taster und LEDs werden synchronisiert | |
Material |
|
Aufgabe |
|
Das Programm TasterLed.asm
Das Ergebnis auf dem STK200 sichtbar gemacht
Auszüge aus dem Instruction Set Summary
Wie arbeitet das Programm TasterLed.asm?
Der Programmkopf für das STK200 mit einem ATmega8 wird bei allen weiteren Übungen zu diesem Thema beibehalten (siehe Abb. 4).
Schleife "Taster_aus"
Schleife "Taster_ein"