Hardware
Bedienung
BASIC
Beispiele
|
AVR-ChipBasic8: BASIC-Referenz
(c) 2006-2009 Jörg Wolfram
1 Lizenz
Das Programm unterliegt der GPL (GNU General Public Licence)
Version 3 oder höher, jede Nutzung der Software/Informationen nonkonform
zur GPL oder ausserhalb des Geltungsbereiches der GPL ist untersagt!
Die Veröffentlichung dieses Projekts erfolgt in der Hoffnung, daß
es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, auch
ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT
FÜR EINEN BESTIMMTEN ZWECK.
Alle im Text genannten Marken sind Eigentum des entsprechenden Inhabers.
2 Allgemeines
Jedes Programm besteht aus maximal 20 Programmzeilen (1-20). Nach jedem Schlüsselwort sollte ein Leerzeichen stehen.
Viele Befehle blenden nicht benutzte Bits bei den Parametern aus oder begrenzen auf den gültigen Wertebereich
(z.B. PL für PLOT).
3 Zahlen, Variablen und Funktionen
AVR-ChipBASIC8 kennt nur einen Datentyp, und das sind 8 Bit vozreichenlose Integerzahlen. Dazu gibt es
26 Variablen (A-Z). Konstanten können sowohl in Dezimalform als auch in Hexadezimalform (beginnend mit
$) eingegeben werden.
Folgende Operationen sind erlaubt:
- Addition +
- Subtraktion -
- Multiplikation *
- Division /
- Modulo %
- Und-Verknpfung &
- Oder-Verknpfung #
- Vergleiche (=,<,>) liefern 0 für falsch oder 1 für wahr
Dazu kommen noch öffnende und schließende Klammern sowie Funktionen:
NO(n) |
invertiert den eingeklammerten Ausdruck bitweise |
RV(n) |
erzeugt eine Zufallszahl zwischen 0 und dem eingeklammerten Ausdruck |
IN(n) |
liefert einen digitalen Pegelwert, siehe Abschnitt Ein-/Ausgabe |
AD(n) |
liefert einen analogen Pegelwert, siehe Abschnitt Ein-/Ausgabe |
EP(n) |
liest ein Datenbyte aus dem internen EEPROM, Adresse 0...255 |
KY(n) |
liefert verschiedene Tastaturabfragen, siehe Abschnitt Tastatur |
|
4 Wertzuweisung
Wertzuweisungen beginnen nicht mit einem Schlüsselwort, sondern mit einem Variablennamen
gefolgt von einem Gleichheitszeichen und einem Ausdruck.
4.1 LIM v,min,max
Der Wert der Variable v wird auf den Wertebereich min...max begrenzt.
01 LIM A,1,6
02 LIM B,C,C+4
|
im ersten Beispiel wird die Variable A auf den Bereich 1...6 begrenzt, im zweiten Beispiel die Variable
B auf den Wertebereich, der durch den Inhalt der Variable C und die 4 darauffolgenden Zahlen begrenzt ist.
4.2 INV v
Wandelt die Variable V in ihr Zweierkomplement um.
A ist jetzt 255 (-1).
5 Programmsteuerung
5.1 END
Einen END-Befehl gibt es nicht, anstelle muß ein GO zu einer nicht existierenden Zeile (0 oder >20) benutzt werden.
5.2 GO n
Mit dem GOTO-Befehl kann die Programmabarbeitung mit einer anderen Zeile fortgesetzt werden.
Argument ist ein beliebiger Ausdruck.
Das ist eine Endlosschleife, die nur mit CTRL+C abgebrochen werden kann.
5.3 IF
Die bedingte Anweisung besteht aus IF gefolgt von einem Ausdruck. Ist das Ergebnis des Ausdrucks Null,
wird zum Anfang der nächsten Zeile gesprungen, andernfalls wird die Zeile weiter abgearbeitet.
5.4 FOR - NXT
Bei der Schleifenabarbeitung gibt es nur die Grundform FOR A=1 TO C ohne die Angabe der Schrittweite,
die konstant 1 ist. Da der Stack auf 16 Einträge begrenzt ist, lassen sich nur 16 Schleifen bzw.
Unterprogrammaufrufe schachteln.
01 CLS
02 FOR A=0 TO 9
03 FOR B=0 TO 9
04 PL A,B
05 NXT :NXT
|
Dieses Programm zeichnet ein Rechteck in die obere linke Ecke des Bildschirmes.
5.5 SUB - RET
SUB Expr ruft das Unterprogramm in der durch den Ausdruck definierten Zeile auf,
mit RET wird wieder zurückgesprungen.
Da der Stack auf 16 Einträge begrenzt ist, lassen sich nur insgesamt 16 Schleifen bzw. Unterprogrammaufrufe schachteln.
5.6 VID n
VID 0 schaltet die Videoausgabe ab (auf schwarz). Programme laufen dadurch schneller ab.
Mit VID 1 wird die Bildschirmausgabe wieder eingeschaltet.
6 Bildschirm-Ausgabe
6.1 CO n
Mit dem COlor-Befehl wird die Vorder- sowie die Hintergrundfarbe festgelegt. Akzeptiert werden die Werte 0 und 1, wird 8 dazuaddiert werden
die Zeichen in Großschrift ausgegeben. Dabei bedeutet:
Value |
Textfarbe |
Textgröße |
Pseudografik |
0 |
schwarz auf weiß |
normal |
löschen |
1 |
weiß auf schwarz |
normal |
zeichnen |
8 |
schwarz auf weiß |
groß |
löschen |
9 |
weiß auf schwarz |
groß |
zeichnen |
|
Nach dem Priogrammstart ist der Voreinstellwert 1.
6.2 CLS
Mit dem CLS-Befehl wird der Bildschirm gelöcht. Beim Programmstart geschieht das automatisch. Es wird die eingestellte
Hintergrundfarbe (beim Programmstart schwarz) verwendet.
6.3 PRINT [?]
Der PRINT-Befehl dient zur Ausgabe auf den Bildschirm Zusätzlich kann die Ausgabe noch formatiert werden.
Anstelle des PRINT Befehls muß ein Fragezeichen verwendet werden.
"TEXT" |
der Text TEXT wird ausgegeben |
@Expr1,Expr2 |
Cursorpositionierung (Y=Expr1, X=Expr2) |
%Expr |
Direkte Ausgabe eines Zeichens mit Zeichencode=Expr |
Expr |
gibt das Ergebnis des Ausdrucks mit dem eingestellten Format aus |
; |
Trenner zwischen Ausdrücken |
, |
Trenner zwischen Ausdrücken, Leerzeichen bis zur nächsten durch 8 teilbaren Position |
|
Steht am Ende des PRINT-Befehls einer der beiden Trenner, wird kein Zeilenvorschub ausgeführt.
6.4 SCR n
Es gibt ein Scrollfenster, in dem in alle 4 Richtungen gescrollt werden kann. Das Fenster beginnt
bei Zeichen 2 in Zeile 2 und geht bis Zeichen 27 in Zeile 20. Somit gibt es um das Scrollfenster einen 2 Zeichen
breiten Rand in dem z.B. Informationen stehen, die nicht mitgescrollt werden sollen.
Die freiwerdende Zeile wird mit Leerzeichen in der aktuellen Farbeinstellung gefüllt.
n |
Richtung |
0 |
nach oben |
1 |
nach rechts |
2 |
nach unten |
3 |
nach links |
|
verschiebt das Scrollfenster um 1 Zeichen nach unten.
7 Tastatur
7.1 INP V
die Variable V wird an der aktuellen Stelle eingelesen.
01 ? "Zahl: ";
02 INP Z:?
03 ? "Die Zahl war ";M
|
Enthält die Eingabe ungültige Zeichen, ist das Resultat 0.
7.2 Die Keycodes
Neben den "normalen" ASCII-Werten für Ziffern, Zahlen und Satzzeichen liefern RKEY und WKEY auch Codes für
Funktionstasten etc.
Code Hexadezimal |
Code Dezimal |
Taste |
$E0 |
224 |
Pos1 |
$E1 |
225 |
End |
$E2 |
226 |
Pfeiltaste nach links |
$E3 |
227 |
Pfeiltaste nach rechts |
$E4 |
228 |
Pfeiltaste nach oben |
$E5 |
229 |
Pfeiltaste nach unten |
$E6 |
230 |
Bild hoch |
$E7 |
231 |
Bild runter |
$E8 |
232 |
Einfg (Ins) |
$E9 |
233 |
Entf (Del) |
$EA |
234 |
Enter |
$EB |
235 |
Tabulator |
$EC |
236 |
Backspace |
$ED |
237 |
Esc |
$F1...$FC |
241...252 |
F1...F12 |
|
7.3 Die Funktion KY
Diese Funktion liefert verschiedene Tastaturabfragen als -1,0,1 Wert. Als Parameter wird die Art der
Abfrage eingetragen. Bei den Abfragen 2...5 gilt: Ist keine der beiden Tasten betätigt,
wird 0 zurückgegeben.
KEY(0) |
liefert den Keycode der gerade gedrückten Taste oder 0 zurück |
KEY(1) |
wartet auf einen Tastendruck und liefert den Keycode zurück |
KEY(2) |
linke Shift-Taste liefert 1, linke Control-Taste liefert -1, beide 0 |
KEY(3) |
rechte Shift-Taste liefert 1, rechte Control-Taste liefert -1, beide 0 |
KEY(4) |
linke Control-Taste liefert 1, rechte Control-Taste liefert -1, beide 0 |
KEY(5) |
Taste Cursor links liefert -1, Taste Cursor rechts liefert 1 |
KEY(6...) |
Wartet auf die Enter-taste und liefert 0 zurück |
|
8 Pseudografik
Für die Pseudografik wird jedes Zeichen in 4 "Pixel" aufgeteilt. Bei 23 Zeilen a 30 Zeichen ergibt sich
so eine Arbeitsfläche von 60x46 Punkten.
Ist die Zeichenfarbe gleich 0 so werden die Pixel nur gelöscht, bei 1 entsprechend fesetzt.
8.1 PL Y,X
Mit dem PLOT-Befehl wird ein "Pixel" gesetzt.
Zeichnet ein "Pixel" an der Position Y=3 und X=7+A mit der aktuellen Vordergrundfarbe.
8.2 DR Y1,X1,Y2,X2
Zeichnet eine Linie von Y1,X1 nach Y2,X2.
Hier wird eine Linie von der linken oberen in die rechte untere Ecke gezeichnet.
8.3 BX Y1,X1,Y2,X2
Mit dem BX-Befehl wird ein Rechteck gezeichnet.
8.4 FBX Y1,X1,Y2,X2
Mit dem FBX-Befehl wird ein gefülltes Rechteck gezeichnet.
Ist Y1=Y2 oder X1=X2 werden horizontale oder vertikale Linien gezeichnet.
zeichnet eine waagerechte Linie am oberen Bildschirmrand, der Wert 100 wird zur Laufzeit auf den Bildschirmbereich
begrenzt. Auch wenn die Ausgabe auf den sichtbaren bereich begrenzt ist, verbrauchen auch nicht gesetzte Pixel Rechenzeit.
9 Audio
9.1 NO n
Ein Ton mit der Tonhöhe n (Halbtonschritte ab 220 Hz aufwärts) wird ausgegeben.
Bei n=0 bis 63 werden Noten ausgegeben, bei n=63 wird keine Note
sondern Rauschen ausgegeben.
01 FOR N=0 to 63:NO N
02 SY 10:NXT
|
gibt nacheinander alle spielbaren Noten aus.
10 Zeit
10.1 SY n
Mit dem SYNC-Befehl wird auf N Bildsynchronimpuse gewartet. N kann wieder ein beliebiger Ausdruck sein.
wartet ca. 2 Sekunden, bis das Programm fortgesetzt wird.
11 Ein- und Ausgabe
11.1 DIR n
Setzt die I/O-Richtung der 8 Portpins an der parallelen Schnittstelle. Eine 0 bedeutet Eingang, eine 1 Ausgang.
Pin I/O 0-2 werden als Ausgang, I/O 3 als Eingang konfiguriert.
11.2 OUT n
Der Wert N wird an I/O 0-3 ausegegeben. Ist der I/O als Ausgang konfiguriert, wird er entsprechend gesetzt.
Ist der I/O als Eingang konfiguriert, wird der interne Pull-Up Widerstand aus- bzw. eingeschaltet.
Beispiele:
setzt I/O 0-2 auf 1-Pegel und I/O 3 auf 0.
11.3 IN(n)
Gibt den aktuellen Status des I/O Pins n zurück. Je nach anliegendem Pegel ist das Resultat 0 oder 1.
gibt den Status von I/O Pin 0 aus.
11.4 AV(n)
Gibt den aktuellen Spannungswert des I/O Pins n zurück. Der Wertebereich liegt zwischen 0 und 255 für 0...5V..
gibt den Spannungswert von I/O Pin 3 aus.
12 Kommunikation
12.1 PUT n
das Byten wird an die serielle Schnittstelle ausgegeben.
gibt einen Zeilenvorschub an die serielle Schnittstelle aus.
12.2 GET V
Ein Zeichen von der seriellen Schnittstelle wird eingelesen und in die Varaiable V gespeichert.
wartet auf ein Zeichen von der seriellen Schnittstelle und speichert die in die Variable C
13 Speicher
13.1 POK adr,dat
Speichert ein Datenbyte in den internen EEPROM. Als Adressen sind 0...255 möglich.
speichert den Wert 18 an die Adresse V im internen EEPROM.
13.2 EP(adr)
Die Funktion liest ein Byte aus dem internen EEPROM. Als Adressen sind 0...255 möglich.
liest den Wert von EEPROM-Adresse V (internes EEPROM) und speichert diesen in der Variable W.
14 Fehlermeldungen
14.1 Fehlermeldungen
Insgesamt gibt es 5 verschiedene (Fehler) Meldungen. Im Editor werden diese oben in der zweiten Zeile
mit Zeilen- und Statementnummer angezeigt. Im Allgemeinen lässt sich damit der Fehler recht
schnell finden, manchmal kann er sich auch am Ende der vorherigen Zeile befinden.
OK |
Das Programm wurde mit Sprung in eine nichtexistente Zeile beendet. |
BREAK |
Das Programm wurde mit der Tastenkombination Control (Strg) + C abgebrochen. |
SYN ERR |
Fehlende Parameter, ungültige Zeichen |
EXPR ERR |
In einer Formel befinden sich syntaktische Fehler |
STACK ERR |
zuviele oder zuwenig FOR/NXT/SUB/RET |
|
created with latex2web.pl v0.61 © 2006-2010 Joerg Wolfram
|