---

PicoBasic Sprachumfang            

            

Elektronik-Labor  Projekte  Mikrocontroller  Raspberry     




PicoBasic kennt nur vier Byte-Variablen, A, B, C und D.   A ist die wichtigste davon, vergleichbar mit dem Akku früherer Mikrocontroller. Alle Rechenergebnisse landen in A, und über A kann man Daten an Ausgänge übertragen oder von Eingängen lesen. B wird als zweite Variable in Rechnungen verwendet. C und D werden hauptsächlich für Zählschleifen verwendet.

Es gibt ein 256 Bytes großes Datenarray, das den Adresszähler B verwendet. Mit jedem Schreib- oder Lese-Zugriff wird B um 1 erhöht.

Es gibt acht digitale IO-Pots an P0 bis P7, die als ein Byte behandelt werden. Die Datenrichtung wird mit Pdir = festgelegt. Portausgaben können mit Pout = Konstante oder mit Pout = A  erfolgen. Pullup- und Pulldown-Widerstände können mit Pullup = Konstante und Pulldown = Konstante eingeschaltet werden.

Zwei quasi-analoge PWM-Ausgange liegen an P8 (PWM 1) und an P9 (PWM2). Die Auflösung beträgt 8 Bit. Die PWM-Ausgabe kann über eine Konstante (0…255) oder über eine Zuweisung des Inhalts von A erfolgen.

Drei analoge Eingänge AD0, AD1 und AD3 können mit einer Auflösung von 8 Bit abgefragt werden, wobei das Ergebnis in A landet.

Zuweisung von Konstanten

A =, B =, C = D =     Die im Feld rechts daneben eingegebene Zahl wird der Variablen als Konstante zugewiesen.
PWM1 =, PWM2 =    Die Byte-Konstante (0…255) rechts wird an einen PWM-Ausgang gesandt.
Label L steht für eine Adresse, die angesprungen werden kann. Die Konstante steht zuerst auf 0 und wird mit jedem neunen Label um 1 erhöht, L1, L2, L3 usw.
Goto L1, Goto L2 usw. Ein Sprung zum angegebenen Ziel. Die Nummer des Labels wird als Konstante eingegeben.
Gosub L1, Gosub L2    Aufruf eines Unterprogramms, das mit Return abgeschlossen wird.
If A=B Goto L, If A>B Goto L, If A<B Goto L   Ein Sprung zum Label L, wenn der Vergleich von A und B wahr ist.
C*Goto L, D*Goto L  Zählschleifen, es wird so oft nach L gesprungen, wie in C bzw. D angegeben wurde. 
Delay µs =, Delay ms =, Delay s =, Delay min = Wartebefehle mit konstanter Wartezeit in Mikosekunden bis Minuten




Rechenbefehle

A = A + 1 bis A = NOT A  stehen für Rechenoperationen, deren Ergebnis grundsätzlich in A erscheint

Zuweisungen

B = A  bis A = D   Der Inhalt einer Variablen wird in eine andere Variable kopiert.
A = [B+]    Der Inhalt des Daten-Arrays wird an der Adresse B ausgelesen und in A kopiert. B wird um 1 erhöht.
[B+]  = A   Der Inhalt von A wird an der Adresse B des Daten-Arrays geschrieben. B wird um 1 erhöht.
A = AD0 bis A = AD2     Ein analoger Eingang wird ausgelesen und das Byte-Ergebnis in A übergeben.
A = Din    Alle acht digitalen Ports werden gelesen und als ein byte in A übergeben.
A = Din0   Nur der Zustand des ersten digitalen Ports wird gelesen und als 1 oder 0 in A übergeben.
Input A  Wenn ein Byte vom PC gesendet wurde, wird es A zugewiesen, ansonsten bleibt A unverändert.
Print A   Der Inhalt von A wird an den PC gesendet.
PWM1 = A, PWM2 = A   Der Inhalt von A wird über den angegebenen PWM-Ausgang ausgegeben.
Pout = A   Alle acht digitalen Ausgänge werden entsprechend dem Inhalt in A gesetzt.

Programmsteuerung

Return   Rücksprung aus einem Unterprogramm an die dem Aufruf folgende Adresse.
End   Ende eines Programms in einer Endlosschleife.
Nop   Ein Leerbefehl, der nichts tut, aber einige Mikrosekunden verbraucht und als geringe Verzögerung eingesetzt werden kann. 
Rem   Ein Kommentar im Quelltext




Bedienung

Die Oberfläche hat links ein Dateifenster und recht daneben ein Fenster für das Programm. Klickt man auf eine vorhandene Datei, erscheint der Name im Fenster links neben Open. Ein Klick auf Open überträgt den Inhalt ins Programmfenster. Darin sieht man in jeder Zeile links den übersetzten Code und recht die Basic-Zeile. Der übersetzte Code besteht aus einer 16-Bit Hexzahl, wobei das linke Byte für den Befehl und das rechte Byte für die Daten steht.

Ein Programm kann mit Run gestartet werden. Dabei werden die Codes an den Rpi Pico gesendet. Voraussetzung ist, dass die korrekte COM-Nummer im ini-File steht. Ein mit Run übertragenes Programm geht mit dem Ausschalten des Pico verloren. Wenn ein Programm für den dauerhaften Einsatz gedacht ist, muss es mit einem Klick auf EEPROM übertragen werden. Es läuft dann ebenfalls sofort, wird aber auch nach einem Reset des Pico oder nach einem neuen Einschalten sofort gestartet.

Ein geladenes Programm kann verändert und mit Save unter demselben Namen wieder gespeichert werden. Oder man editiert den Programmnamen behält so das alte Programm. Wenn man mit New ein leeres Programm erzeugt und neu eingibt, kann ein neuer Programmname eingegebenen werden, wobei die Endung .pbas automatisch angefügt wird.

Eine Programmzeile erzeugt man durch Anklicken des entsprechenden Befehls. Neue Befehle werden automatisch unten angefügt. Man kann jedoch nachträgliche Änderungen eingeben, indem man eine Zeile durch Anklicken markiert und dann durch einen neuen Befehl ersetzt. Eine markierte Zeile kann mit Delete gelöscht werden. Mit einem Klick auf Insert erzeugt man eine leere Zeile oberhalb der markierten Zeile. Der nächste eigegebene Befehl landet in der leeren Zeile. Folgende Befehle werden wieder unten angefügt. Um mehrere Befehle einzufügen, muss man mehrfach eine Zeile markieren und mit Insert eine Leerzeile bilden. Durch Löschen oder Einfügen von Zeilen können sich die Adressen vorhandener Labels ändern. Sie werden automatisch angepasst, dass die Sprungziele korrekt bleiben.

Bei jedem Programmstart sieht man im unteren Fenster die an den Pico übertragenen Daten. P 5 bedeutet, dass fünf Befehle übertragen werden sollen. Es folgen die fünf 16-Bit-Zahlen im Dezimalformat. Es handelt sich dabei um dieselben Daten, die in der linken Spalte des Programmfensters in hexadezimaler Form zu sehen sind.

Programmzustand beim Start

Beim Start eines neuen Programms werden alle vier Variablen A bis D auf null gesetzt. Anders ist es mit dem Datenspeicher, der mit A = [B+] ausgelesen werden kann. Er behält seinen Inhalt über einen Programmstart hinweg. Man kann den Speicher daher mit einem Programm füllen und mit einem anderen Programm auslesen.

Alle Portzustände und der Zustand der PWM-Ausgänge bleiben ebenfalls bei einem Neustart erhalten. So kann man z.B. den zuletzt erreichten Portzustand des letzten Programms im folgenden Programm auslesen.

Anders verhält sich PicoBasic nach einem Hardware-Reset. Danach sind alle Ports Eingänge mit Pulldown, die PWM-Ausgange sind im Zustand 0 und der Datenspeicher enthält nur noch Nullen. Wenn ein PicoBasic-Programm von diesem Grundzustand aus gestartet werden soll, kann man vorher auf den Reset-Taster drücken.




Elektronik-Labor  Projekte  Mikrocontroller  Raspberry