Projekt BASIC Beispiele Download:
|
AVR-ChipBASIC: BASIC-Referenz
V0.72 (c) 2006/2007 Jörg Wolfram 1 Lizenz Das Programm unterliegt der GPL (GNU General Public Licence) Version 2 oder höher, jede Nutzung der Software/Informationen nonkonform zur GPL oder ausserhalb des Geltungsbereiches der GPL ist untersagt! Die Veröffentlichung dieses Programms 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. 2 Allgemeines Da es reichlich Schlüsselwörter gibt, kann es sein, dass diese Referenz anfangs noch unvollständig ist. Viele Hinweise findet man auch in den Beispielprogrammen. Jedes Programm besteht aus maximal 20 Programmzeilen (1-20). Alle Schlüsselwörter ausser Funtionen können bis auf zwei Zeichen abgekürzt werden, beim Laden werden abgekürzte Schlüsselwörter mit 2 Zeichen dargestellt. Nach jedem Schlüssselwort muss ein Leerzeichen stehen. Viele Befehle blenden nicht benutzte Bits bei den Parametern aus (z.B. COLOR) oder begrenzen auf den gültigen Wertebereich (z.B. PLOT). Achtung! Aus Kompatibilitätsgründen zur kommenden MEGA32-Version haben sich einige Dinge wie zum Beispiel Farbzuordnung und Speicherzugriff geändert. 3 Zahlen, Variablen und Funktionen AVR-ChipBASIC kennt nur einen Datentyp, und das sind 16Bit Integerzahlen. Dazu gibt es 26 Variablen (A-Z) und ein Array mit 32 Elementen (@), dazu aber später mehr. Konstanten können sowohl in Dezimalform als auch in Hexadezimalform eingegeben werden, wobei bei letzterer keine negativen Werte erlaubt sind. Hexadezimalzahlen beginnen mit $. Folgende Operationen sind erlaubt:
Zusätzlich zu den normalen Variablen gibt es noch die Arrayvariable @. Die Indices 0 bis 31 sprechen die 32 Array-Elemente in Wortbreite an. Dabei entsprechen die Indices 0-25 den Variablen A-Z. Die Indices 128 bis 191 sprechen dasselbe Array mit 64 Elementen in Bytebreite an, wobei das LOW-Byte zuerste gespeichert ist. 4 Schlüsselwörter 4.1 Wertzuweisung Wertzuweisungen beginnen nicht mit einem Schlüsselwort, sondern mit einem Variablennamen oder Array-Ausdruck gefolgt von einem Gleichheitszeichen und einem Ausdruck. Beispiele:
Der Wert der Variable v wird auf den Wertebereich min..max begrenzt. Beispiele:
4.2 Programmsteuerung 4.2.1 FAST Mit dem FAST-Befehl wird die Bildschirmdarstellung abgeschaltet. Synchronsignale werden weiterhin generiert. 4.2.2 SLOW Mit dem SLOW-Befehl wird die Bildschirmdarstellung wieder eingeschaltet. 4.2.3 BREAK Setzt einen Breakpoint und ruft den Monitor auf. Wird vom MEGA16 nicht unterstützt. 4.2.4 END Mit dem END-Befehl wird das Programm an der aktuellen Stelle beendet. Das gleiche geschieht auch, wenn die letzte Programmzeile abgearbeitet ist. 4.2.5 GOTO Mit dem GOTO-Befehl kann die Programmabarbeitung mit einer anderen Zeile fortgesetzt werden. Argument ist ein beliebiger Ausdruck. Beispiele:
4.2.6 IF - THEN 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. Das THEN kan auch weggelassen werden. Beispiele:
4.2.7 FOR - NEXT Bei der Schleifenabarbeitung gibt es nur die Grundform FOR A=1 TO C ohne die Angabe der Schrittweite. Da der Stack auf 9 Einträge begrenzt ist, lassen sich nur 9 Schleifen bzw. Unterprogrammaufrufe schachteln. Beispiel:
4.2.8 CALL - RETURN Im Gegensatz zu den meisten BASIC-Dialekten heisst GOSUB hier CALL. Durch das verwendete Prinzip der Abkürzungen dürfen keine zwei Schlüsselwörter mit denselben beiden Buchstaben beginnen und GOTO beginnt schon mit "GO". CALL Expr ruft das Unterprogramm in der durch den Ausdruck definierten Zeile auf, mit RETURN wird wieder zurückgesprungen. Da der Stack auf 9 Einträge begrenzt ist, lassen sich nur insgesamt 9 Schleifen bzw. Unterprogrammaufrufe schachteln. 4.3 Ausgabe 4.3.1 CLS Mit dem CLS-Befehl wird der Bildschirm gelöscht. Beim Programmstart geschieht das automatisch. 4.3.2 POS Y,X Mit dem POS-Befehl wird der Schreibcursor an die Stelle Y,X gesetzt. Nach jedem Löschen des Bildschirms wird der Cursor auf die Position 0,0 (links oben) gesetzt 4.3.3 PRINT Der PRINT-Befehl dient zur Ausgabe auf den Bildschirm oder auf die serielle/parallele Schnittstelle. Zusätzlich kann die Ausgabe noch formatiert werden.
Steht am Ende des PRINT-Befehls einer der beiden Trenner, wird kein Zeilenvorschub ausgeführt. Das Format ist ein Wert zwischen 0 und 255, wobei die Bits folgende Bedeutung haben:
4.3.4 EMIT Gibt durch Komma getrennte Zeichen auf den Bildschirm/Seriell/Drucker aus, je nachdem was zuletzt eingestellt war. Es werden keine Zeichen, sondern Zahlenwerte der Zeichen erwartet. Beispiel:
4.3.5 YEMIT Gibt durch Komma getrennte Zeichen auf den Bildschirm/Seriell/Drucker aus, je nachdem was zuletzt eingestellt war. Es werden keine Zeichen, sondern Zahlenwerte der Zeichen erwartet. Beispiel:
4.3.6 LCHAR n Es werden (am oberen Bildrand beginnend) n Zeichenzeilen um ein Zeichen nach links verschoben. Am rechten Rand rücken Leerzeichen nach. Beispiel:
4.3.7 GCHAR v,y,x Ermittelt das Zeichen an der Position y,x und schreibt dieses in die Variable v. Beispiel:
4.4 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. Die Hintergrundfarbe ist immer schwarz und die 4 Pixel eines Zeichens haben immer die gleiche Vordergrundfarbe. 4.4.1 COLOR Mit dem COLOR-Befehl wird die Zeichenfarbe festgelegt. Diese wird bei PLOT, BOX und FBOX sowie bei der Ausgabe von großen Zeichen (Formatbit 6 gesetzt) ausgewertet. Akzeptiert werden Werte von 0 bis 7, dabei bedeutet 0=schwarz, 1...3=rot,4...6=cyan,7=weiss. Argument ist ein beliebiger Ausdruck. Beispiele:
4.4.2 PLOT Y,X Mit dem PLOT-Befehl wird ein "Pixel" im Pseudografikmodus gesetzt. Dabei kann es passieren, dass benachbarte Punkte auch ihre Farbe wechseln. Beispiel:
4.4.3 DRAW Y1,X1,Y2,X2 Zeichnet eine Linie vo X1,Y1 nach X2,Y2 im Pseudografikmodus. Dabei kann es passieren, dass vorhandene Punkte in Liniennähe auch ihre Farbe wechseln. Beispiel:
4.4.4 BOX Y1,X1,Y2,X2 Mit dem BOX-Befehl wird ein Rechteck im Pseudografikmodus gezeichnet. Dabei kann es passieren, dass vorhandene Punkte auch ihre Farbe wechseln. Beispiel:
4.4.5 FBOX Y1,X1,Y2,X2 Mit dem FBOX-Befehl wird ein gefülltes Rechteck im Pseudografikmodus gezeichnet. Dabei kann es passieren, dass vorhandene Punkte auch ihre Farbe wechseln. ist Y1=Y2 oder X1=X2 werden horizontale oder vertikale Linien gezeichnet. Beispiel:
4.4.6 LPIX n Es werden (am oberen Bildrand beginnend) n*2 Pixelzeilen um ein Pixel nach links verschoben. Bei verschiedenfarbigen Pixeln können Farbwechsel auftreten. Amrechten Rand rücken schwarze Pixel nach. Beispiel:
4.5 Sprites Die Sprites sind recht einfach "gestrickt". Sie bestehen aus nur einem Zeichen, welches aber mehrfach nebeneinander oder übereinander dargestellt wird. 4 Sprites stehen zur Verfügung. Wird ein Sprite an einer neuen Stelle angezeigt, wird es vorher an der alten Stelle gelöscht, falls es sichtbar war. 4.5.1 SDEF n,t,c Definiert ein Sprite, dabei ist n die Nummer des Sprites (1-4), t der Typ (s.u.) und c die Position des Zeichens in der Zeichentabelle. Der Typ t kann zwischen 0 und 15 liegen:
4.5.2 SSHOW n,y,x Zeichnet das Sprite n an die Position Y,X. War es bereits an einer anderen Stelle gezeichnet, wird es vorher gelöscht. Befindet sich an der Stelle wohin das Sprite gezeichnet wird bereits ein anderes Zeichen, dessen Position in der Zeichentabelle nicht ein Vielfaches von 16 ist, wird das zugehörige Kollisionsflag gesetzt und das Sprite nicht gezeichnet. Beispiel:
4.5.3 SHIDE n Löscht das Sprite n. Beispiel:
4.5.4 COL(n) Kollisionsabfrage für Sprite n. Beispiel:
4.6 Audio 4.6.1 NOTE 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=255 Rauschen. Beispiel:
4.7 Tastatur 4.7.1 INPUT Es können durch Kommata getrennt Zeichenketten und Variablen angegeben werden. Die Zeichenketten werden ausgegeben, die Variablen bewirken einen Eingabecursor. Falsch eingegebene Zeichen können mit der Backspace-Taste korrigiert werden. Es ist auch möglich, Ausdrücke einzugeben die dann berechnet werden. Das folgende Beispiel zeigt einen kleinen Rechner, das letzte Ergebnis ist in der Variable M gespeichert.
4.7.2 RKEY V Die aktuell gedrückte Taste wird in die Variable V geschrieben. Ist keine Taste gedrückt, wird eine 0 geschrieben. Beispiel:
4.7.3 WKEY V Es wird auf einen Tastendruck gewartet und die gedrückte Taste wird in die Variable V geschrieben. Beispiel:
4.7.4 Die Funktion KEY Diese Funktion liefert verschiedene Tastaturabfragen als -1,0,1 Wert. Als Parameter wird die Art der Abfrage eingetragen. Ist keine der beiden Tasten betätigt, wird 0 als Funktionswert zurückgeliefert.
4.8 Zeit 4.8.1 WAIT n Mit dem WAIT-Befehl wird N*0,1 Sekunden gewartet. N kann wieder ein beliebiger Ausdruck sein. Beispiel:
4.8.2 SYNC n Mit dem SYNC-Befehl wird auf N Bildsynchronimpuse gewartet. N kann wieder ein beliebiger Ausdruck sein. Beispiel:
4.8.3 TSET n Der interne Timer (10Hz) wird auf den Wert n gesetzt. Beispiel:
4.8.4 TGET V Der interne Timer (10Hz) wird ausgelesen und in die Varaiable V gespeichert. Beispiel:
4.9 Ein-/Ausgabe 4.9.1 DIR n setzt die I/O-Richtung der 8 Portpins an der parallelen Schnittstelle. Eine 0 bedeutet Eingang, eine 1 Ausgang. Beispiel:
4.9.2 OUT n,b Setzen (b=1) oder Rücksetzen (b=0) des Ausganges n. Beispiel:
4.10 Serielles 4.10.1 PUMP n Schaltet die Ladungspumpe aus (n=0) oder ein (n=1). Beispiel:
4.10.2 SPUT n das Byten wird an die serielle Schnittstelle ausgegeben. Beispiel:
4.10.3 SGET V Ein Zeichen von der seriellen Schnittstelle wird eingelesen und in die Varaiable V gespeichert. Beispiel:
4.11 Speicher 4.11.1 ESET dat Speichert einen Wert im internen EEPROM. Dieser Wert ist programmbezogen und wird auch mit auf den externen Programm-EEPROM gespeichert. Nach dem Laden über die serielle Schnittstelle wird der Wert auf 0 gesetzt. Beispiel:
4.11.2 EGET V Liest einen Wert aus dem internen EEPROM. Dieser Wert ist programmbezogen und wird auch mit auf den externen Programm-EEPROM gespeichert. Beispiel:
4.11.3 XPOKE adr,dat Speichert ein Byte im externen EEPROM (Adresse=1). Beispiel:
4.11.4 EPOKE adr,dat Speichert ein Word im internen EEPROM, beim MEGA16 nur Dummyfunktion. Als Adressen sind 0...999 möglich.
5 Changelog Version 0.61 vom 17.12.2006
erzeugt mit latex2web.pl v0.45 © 2006 Joerg Wolfram |