Ich habe drei Varianten von diesem Projekt:
Jeder Befehl wird mit einem Zeilenumbruch (\n oder \r\n) beendet.
Die Befehle d, p, o und i können sich wahlweise auf einen einzelnen Pin, einen ganzen Port oder alle Ports gleichzeitig beziehen. Pin-Nummern werden immer als Dezimal-Zahl angegeben, und die Daten sind entweder binär (0/1) oder Hexadezimal.
Standardmäßig sind alle I/O Pins als Eingang. Der input Befehl liest den Eingang. Mit dem pull-up Befehl kann man die internen Pull-Up Widerstände einschalten.
Beispiel für das Lesen eines einzelnen Eingangs PB7 mit aktiviertem Pull-Up Widerstand:
Befehl: pPB7,1
Antwort: Ok
Befehl: iPB7
Antwort: PB7=1
Beispiel für einen ganzen Port PA am Stück (8 Pins):
Befehl: iPA
Antwort: PA=FF
Beispiel für alle Ports auf einmal:
Befehl: i
Antwort: i=000001FF
Die Hexadezimalzahl bezieht sich auf die Ports DD CC BB AA.
Bei größeren Mikrocontrollern ist sie doppelt so lang und bezieht sich auf die Ports HH GG FF EE DD CC
BB AA.
Zuerst muss man die gewünschten I/O Pins mit dem direction Befehl als Ausgang konfigurieren, danach kann man sie mit dem output Befehl auf HIGH oder LOW setzen.
Beispiel für einen einzelnen I/O Pin PB4:
Befehl: dPB4,1
Antwort: Ok
Befehl: oPB4,1
Antwort: Ok
Befehl: oPB4,0
Antwort: Ok
Beispiel für einen ganzen Port PB am Stück (8 Pins):
Befehl: dPB,FF
Antwort: Ok
Befehl: oPB,FF
Antwort: Ok
Befehl: oPB,00
Antwort: Ok
Beispiel für alle Ports auf einmal:
Befehl: d,FFFFFFFF
Antwort: Ok
Befehl: o,FFFFFFFF
Antwort: Ok
Befehl: o,00000000
Antwort: Ok
Die größeren Mikrocontroller mit mehr Ports erwarten längere Hexadezimalzahlen für die Ports HH GG FF EE DD CC BB AA, aber ohne Leerzeichen dazwischen.
Das folgende Beispiel liest dann den analogen Eingang 3 ein:
Befehl: a3
Antwort: ADC3=01A3
Das Ergebnis ist eine hexadezimale Zahl, entsprechend dem Messwert des ADC.
Je nach Mikrocontroller sind unterschiedliche Referenz-Spannungen einstellbar. Diese entspricht der höchsten Spannung, die man messen kann.
Das folgende Beispiel wählt die Versorgungsspannung VCC als Referenz:
Befehl: rVCC
Antwort: Ok
Mit Hilfe von Schieberegistern kann man die Anzahl der Eingänge erweitern. Diese zusätzlichen Eingänge nenne ich "Port X". Sie können mit dem i Befehl abgefragt werden. Je nach Anzahl der Schieberegister antwortet der input Befehl mit unterschiedlich großen Hexadezimal-Zahlen (8-32 Bits). Zum Beispiel:
Befehl: iPX
Antwort: PX=FFFF
Beispiel zur Abfrage eines einzelnen Pins X9:
Befehl: iPX9
Antwort: PX9=1
Die Befehle d und p stehen bei erweiterten Eingängen und Ausgängen nicht zur Verfügung!
Mit Hilfe von Schieberegistern kann man die Anzahl der Ausgänge erweitern. Diese zusätzlichen Ausgänge nenne ich "Port Y". Sie können mit dem o Befehl beschrieben werden. Je nach Anzahl der Schieberegister erwartet der output Befehl unterschiedlich große Hexadezimal-Zahlen (8-32 Bits). Zum Beispiel:
Befehl: oPY,FFFF
Antwort: Ok
Beispiel zum Ändern eines einzelnen Pins X12:
Befehl: oPY12,1
Antwort: Ok
Die Befehle d und p stehen bei erweiterten Eingängen und Ausgängen nicht zur Verfügung!