Armins AVR-Buch - Programmstruktur

Zuletzt geändert am 15.01.2021, 01:22:17

Programmstruktur


(armin77, 06.02.2013, 08:34:17)

Die Struktur eines Programmes ist fast immer gleich und man sollte sich daran halten
um Programmfehler zu vermeiden.

Als erstes kommt der Kopf.
Darin gibt man den verwendeten AVR an.
Dann kommt die Taktfrequenz mit der der AVR läuft und danach die Stackwerte.
Die Stackwerte sind wichtig und dürfen nicht zu klein dimensioniert werden.

$regfile = "m8def.dat" 'benutzten AVR auwählen
$crystal = 10000000 'Taktfrequenz angeben
$hwstack = 32 'Stackwerte
$swstack = 32
$framesize = 32


Wenn man die UART (serielle Schnittstelle) des AVR nutzen will kommt darunter die Einstellung für die Baudrate.

$Baud=2400


Dann dimensioniert man die Variablen mit dem Befehl DIM.

Dim Wert as byte 'Bytevariable
Dim Messwerte as word 'Wordvariable
Dim Texte As String * 20 'Textvariable mit 20 Zeichen
Dim Arraywerte(3) As Byte ' Arrayvariable


Dann konfiguriert man die Ports als Ein- oder Ausgänge.

Config Portb.0 = Output 'Portb.0 als Ausgang
Config Portb.1 = Input 'Portb.1 als Eingang
Portb.1 = 1 'Internen Pull-Up Widerstand einschalten



Danach kommen noch andere Konfigurationen wie der Timer, Interrupt oder Analog Digital Wandler

Jetzt kommt das Hauptprogamm.
Es wird in einer DO LOOP Schleife immer und immer wieder ausgeführt.
Am Ende kommt noch der Befehl END damit der Compiler weis das hier das Programm zu Ende ist.

So sieht das dann komplett aus:

$regfile = "m8def.dat" 'benutzten AVR auwählen
$crystal = 10000000 'Taktfrequenz angeben
$hwstack = 32 'Stackwerte
$swstack = 32
$framesize = 32
$baud = 2400

Dim Wert as byte
Dim Messwerte as word
Dim Texte As String * 20
Dim Arraywerte(4) As Byte

Config Portb.0 = Output 'Portb.0 als Ausgang
Config Portb.1 = Input 'Portb.1 als Eingang
Portb.1 = 1 'Internen Pull-Up Widerstand aktiviert


Do

If Pinb.1 = 1 Then 'Eingänge werden immer mit Pin abgefragt!
Portb.0 = 1 'Wenn Pinb.1=1 dann ist Portb.0 an
Else 'ansonsten ist er aus
Portb.0 = 0
End If

Loop
End