---
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