Programme für Mikrocontroller können in mehreren Programmiersprachen erstellt werden. Es steht unter anderem C, Basic oder Assembler zur Verfügung. Es soll die Assemblersprache
näher erläutert werden.
3.1 Einfache Assemblerbefehle
Einige Assemblerbefehle, mit denen man schon viele Anwendungsaufgaben lösen kann.
Befehl Funktion
and Rd, Rr Der Inhalt des Registers Rr wird mit dem Inhalt des Registers Rd UND-verknüpft. Das Ergebnis wird in Rd gespeichert.
Andi Rd, K8 Der Inhalt des Registers Rd wird mit der 8 Bit - Konstanten K8 UND-verknüpft. Das Ergebnis wird in Rd gespeichert.
in Rd, P Der Inhalt des I/O-Ports P wird in das Register Rd geladen.
ldi Rd, K8 Der Inhalt von einer 8 Bit - Konstanten K8 wird in das Register Rd geladen.
Nop Einen Systemtakt warten.
or Rd, Rr Rr wird mit Rd Oder verknüpft. Das Ergebnis wird in Rd gespeichert.
ori Rd, K8 Der Inhalt des Registers Rd wird mit der 8 Bit - Konstanten K8 ODER-verknüpft. Das Ergebnis wird in Rd gespeichert.
out P, Rr Der Inhalt von dem Register Rr wird in den I/O-Port P geladen.
rjmp Label Relativer Sprung auf Label
Tab. 2: Einfache Assemblerbefehle
3.2 Port als Ausgang
Befehl Erklärung
.include \"2313def.inc" ;Diese Datei wird an jedem Prgrammanfang ;eingebunden, damit wird dem Makro-Assembler ;(Übersetzungsprogramm, der den Code in ;Maschinencode übersetzt) mitgeteilt um welchen ;Controller es sich handelt.
ldi r16, 0xFF ;0xFF in das Arbeitsregister 16 laden
out DDRB, r16 ;Der Inhalt des Arbeitsregisters 16 wird nun in das ;Datenrichtungsregister von Port B ausgegeben. Alle ;Pins an Port sind nun als Ausgang konfiguriert.
ldi r16, 0b00111111 ;0b00111111 wird in das Arbeitsregister r16 geladen
out PORTB, r16 ;Der Inhalt des Arbeitsregisters r16 wird an das ;Portregister von Port B übergeben.
ende: rjmp ende ; Es wird ein Sprung zur Marke Ende gemacht, da ;sonst der Controller immer wieder von vorn beginnen ;würde.
3.3 Port als Eingang
Befehl Erklärung
.include \"2313def.inc" ;Diese Datei wird an jedem Prgrammanfang ;eingebunden, damit wird dem AVR-Assembler ;(Übersetzungsprogramm in Maschinencode) ;mitgeteilt um welchen Controller es sich handelt.
ldi r16, 0x00 ;In das Arbeitsregister 16 wird 0x00 geladen.
out DDRD, r16 ;In das Portregister von Port D wird r16 gegeben. ;Damit ist Port D als Eingang konfiguriert.
ldi r16, 0xFF ;In das Arbeitsregister 16 wird 0xFF geladen
out DDRB, r16 ;In das Portregister von Port B wird r16 gegeben. ;Damit ist Port B als Ausgang konfiguriert.
marke1 : in r16, PIND ; Die Zustände an den Pins von Port D ;(Signalgeber) werden in das Arbeitsregister 16 ;geladen.
out PORTB, r16 ; Das Arbeitsregister 16 wird an den Port B ;gegeben, damit liegt an den Ausgangspins ;Spannung an, wenn am jeweiligen Eingangspin ;Spannung anliegt.
rjmp marke1 ; Es wird wieder zur Marke 1 gesprungen, denn die ;Zustände an den Datenrichtungsregistern bleibt ;erhalten und muss nicht neu eingeschrieben ;werden.
3.4 Programmentwicklung
Zum Abschluss soll der Weg vom Assemblerprogramm bis hin zum endgültigen Betrieb des Mikrocontrollers beschrieben werden.
Zunächst wird das Programm in einem Editor per Tastatur eingegeben. Ein Editor der das geschriebene Assemblerprogramm als reine *.txt -Datei speichert ist vollkommen ausreichend. Nach dem Speichern des Assemblerprogramms wird dieses Programm mit Hilfe eines Makroassemblers in die Maschinensprache übersetzt. Es ist darauf zu achten das in der gespeicherten *.txt-Datei der reine ASCII-Code steht, also ohne Textformatierungen, denn die Textformatierungen würden von dem Makroassembler mit übersetzt werden. Dies hat eine Fehlfunktion des Programms zur Folge. Der Makroassembler wird nach dem Übersetzten Dateien erstellen, die *.lst-Datei ( Programmlisting ), die *.obj-Datei und die *.hex - Datei, das eigentliche Maschinenprogramm in unterschiedlichen Formaten, das später in den Flash-ROM gespeichert wird. Mit Hilfe *.obj-Datei kann man jetzt im Simulator das komplette Programm testen. Zur Auffindung von Fehlern im Programm enthält der Simulator einen Debugger, dieser ermöglicht eine Fehlererkennung des Programms, bevor in es den Mikrocontroller gespeichert wird. Nach der dieser Programmierung und Überprüfung des Programms muss die *.hex-Datei in den Controller übertragen werden. Die parallele oder serielle Schnittstelle des Computers und der entsprechende Programmieradapter wird zur Übertragung der Daten verwendet. Das Programm befindet sich nun im Flash-Speicher des AVR-Mikrocontroller. Letztendlich wird nun eine Inbetriebnahme des Systems durchgeführt und das System ist betriebsbereit.
|