| BASIC für Control II | Letztmalig dran rumgefummelt: 07.06.05 07:13:03 |
|
|
C-Control II BASIC arbeitet auf Compiler-Basis und erzeugt einen mäßig schnellen Zwischencode, welcher seine Grenzen bei Echtzeitbetrieb erreicht. Dann muss definitiv anderes Werkzeug her und die Lösung lautet auch hier: Assembler-Programmierung - also voll die Härte. Zielplattform für diese BASIC-Anwendung ist ausschließlich C-Control II sowie C-Control II/Station. | ||
|
|
|||
|
1. Control I/Plus BASIC-Befehlsliste 2. C-Control/Plus 3. C-Control II 4. C-Control-Roboter |
|||
| C-Cotrol im Web |
| 1. C-Control I/Plus BASIC-Befehlsliste |
| allgemeine Befehlsnotation | Bedeutung | Anwendungsbeispiel | |
| ABS(x) | Absolutbetrag von x, x: Term | y =ABS(-1) | |
| AD[i] | spezifiziert einen A/D-Port bei
DEFINE i: 1...8 |
DEFINE poti AD[1] | |
| AND | logische und bitweise UND-Verknüpfung | if (x<0) AND (y<0) ... y = x AND &H7F |
|
| APPEND | Datei öffnen zum Anhängen von Daten | OPEN# FOR APPEND | |
| BAUD rate | Übertragungsrate der ser. Schnittstelle
stellen rate: Konstante |
BAUD R2400 | |
| BEEP t,d,p | einen Ton ausgeben, t: Ton = 250000/Frequ. d: Dauer = d * 20ms p: Pause = p * 20ms |
BEEP 400,25, 10 | |
| BIT[i] | spezifiziert ein Userbit bei
DEFINE i: 1...192 |
DEFINE flag BIT[16] | |
| BYTE[i] | spezifiziert ein Userbyte bei DEFINE, i: 1...24 |
DEFINE x BYTE[1] | |
| BYTEPORT[i] | spezifiziert einen 8-Bit-Digitalport bei
DEFINE, i: 1...2 |
DEFINE leds BYTEPORT[l] | |
| &B... | Angabe einer Binärzahl | &101010000 | |
| CLOSE# | Datei schließen | CLOSE# | |
| DAY | Tag-Wert der Echtzeituhr | DAY = 1 PRINT DAY |
|
| DA[i] | spezifiziert einen D/A-Port bei DEFINE, i: 1...2 |
DEFINE v DA[2] | |
| DEACT p | deaktiviert einen Digitalport, p: Portvariable |
DEACT led | |
| DEFINE | Definition eines Bezeichners für einen Port, eine Variable oder eine Konstante |
DEFINE sensorAD[1] DEFINE flag BIT[1] DEFINE limit 1000 |
|
| DOW | Wochentag-Wert der Echtzeituhr | IF DOW=1 THEN PRINT "MONTAG" | |
| ELSE | Alternativzweig bei einer bedingten Programmausführung | IF x=0 THEN y=0 ELSE y=5 | |
| END | Programmende | IF x THEN END | |
| EOF | Test auf Dateiende beim Auslesen der Datei | IF EOF THEN GOTO xxx | |
| FILEFREE | Test auf freien Speicherplatz beim Schreiben der Datei | IF FILEFREE THEN GOTO xxx | |
| FOR | Programmschleifen | FOR i=1 TO 10 | |
| FREQ | Abfrage der Frequenz am DCF77-Eingang | x = FREQ | |
| GET v | Byte von der seriellen Schnittstelle lesen, v: Variablenbezeichner |
GET zeichen | |
| GOSUB I | Sprung zu einer Unterroutine 1: Label-Bezeichner |
GOSUB proc | |
| GOTO 1 | Programmsprung, 1: Label-Bezeichner |
GOTO start | |
| &H... | Angabe einer Hexzahl | &H1FFE | |
| HOUR | Stunden-Wert der Echtzeituhr | PRINT HOUR | |
| IF | Bedingte Programmausführung, nach IF folgt der Bedingungsterm | IF x < y THEN GOTO ready | |
| INPUT v | Einlesen eines Zahlenwertes von der
ser. Schnittstelle, v: Variablenbezeichner |
INPUT x | |
| INPUT# v | Einlesen eines Zahlenwertes aus der Datei, v: Variablenbezeichner |
INPUT# x | |
| LOOKTAB t,i,v | Laden eines Wertes aus einer Tabelle, t: Tabellenbezeichner i: Index v: Variablenbezeichner |
LOOKTAB kty, mess, temp | |
| MAX(x,y) | Ermittlung des größeren Wertes, x,y: Terme |
z = MAX(x, 10) | |
| MIN(x,y) | Ermittlung des kleineren Wertes, x,y: Terme |
z = MIN(x, 10) | |
| MINUTE | Minuten-Wert der Echtzeituhr | PRINT MINUTE | |
| MOD | Operator für Modulodivision | = 10 MOD 3 | |
| MONTH | Monats-Wert der Echtzeituhr | PRINT MONTH | |
| NAND | logische und bitweise UND-Verknüpfung mit anschließender Negation | x = a NAND b | |
| NOR | logische und bitweise ODER-Verknüpfung mit anschließender Negation | x = a NOR b | |
| NOT | logische und bitweise Negation | y = NOT x | |
| OFF | vordefinierte Konstante für 0 | led=OFF | |
| ON | vordefinierte Konstante für &HFFFF | led=ON | |
| ON x GOSUB | Unterroutinenaufruf in Abhängigkeit von x | ON sel GOSUB pl, p2, p3 | |
| ON x GOTO | Programmsprung in Abhängigkeit von x | ON sel GOTO pl, p2, p3 | |
| OPEN# FOR m | Datei mit Modus m öffnen, m: APPEND, WRITE oder READ |
OPEN# FOR WRITE | |
| OR | logische und bitweise ODER-Verknüpfung | x = a OR b | |
| PAUSE t | Programmunterbrechung für t*20 Millisekunden | PAUSE 50 | |
| PORT[i] | spezifiziert einen Digitalport bei DEFINE, i: 1...16 |
||
| PRINT x | Ausgabe von Werten und Texten über die serielle
Schnittstelle, x: Term oder Text in Anführungszeichen |
PRINT "A=", a, "B="; b | |
| PRINT# x | Aufzeichnen eines Wertes in der Datei, x: Term |
PRINT# a | |
| PULSE p | Ausgabe eines Pulses an einem Digitalport, p: Portvariable |
PULSE clock | |
| PUT x | Ausgabe eines Bytes über die serielle Schnittstelle, x: Term |
PUT ch | |
| RAND | Integer-Zufallszahl generieren | x = RAND | |
| RANDOMIZE x | Zufallszahlengenerator neu initialisieren | RANDOMIZE TIMER | |
| RETURN | Rückkehr aus einer Unterroutine | RETURN | |
| RXD | Test, ob ein Byte seriell empfangen wurde | IF RXD THEN GET ch | |
| READ | Datei öffnen zum Auslesen von Daten | OPEN# FOR READ | |
| SECOND | Sekunden-Wert der Echtzeituhr | PRINT SECOND | |
| SHL | Operator für bitweises Linksschieben | a = a shl 2 | |
| SHR | Operator für bitweises Rechtsschieben | a = a shr 2 | |
| SLOWMODE m | Prozessortakt/16, m: ON oder OFF |
SLOWMODE ON | |
| STEP | Angabe der Schrittweite bei der FOR-Schleife | FOR i=100 TO 0 STEP -5 | |
| SYS a | Aufruf eines
Systemprogramms, a: Adresse |
SYS &H101 | |
| SYSCODE | Angabe von Systemcodes oder einer S 19-Datei | SYSCODE "TEST.S19" | |
| SYSEND | Abschluss bei mit SYSCODE direkt eingegebenen Bytes | SYSCODE &H81 SYSEND | |
| TABLE | Definition einer Datentabelle, direkt oder per Tabellendatei | TABLE kty "KTYIO.TAB" | |
| TABEND | Abschluss bei mit TABLE direkt eingegebenen Werten | TABLE tab 10 5 -3 TABEND | |
| TIMER | Abfrage des 20-ms Timers | x = timer | |
| TO | Angabe des Endwertes bei der FOR-Schleife | FOR i=1 TO 10 | |
| TOG p | Umschalten eines
Digitalports, p: Portvariable |
TOG led | |
| WORD[i] | spezifiziert ein Userword bei
DEFINE, i: immer 1 |
DEFINE x WORD[1] | |
| WORDPORT[i] | spezifiziert einen 16-Bit-Digitalport bei
DEFINE, i: immer 1 |
DEFINE all WORDPORT[1] | |
| WRITE | Datei öffnen zum Schreiben neuer Daten |
OPEN# FOR WRITE | |
| YEAR | Jahr-Wert der Echtzeituhr | PRINT YEAR |
| 2. C-Control I/-Plus |
| C-Control/Plus | |
| BASIC für C-Control | |
| 3. C-Control II |
| 4. C-Control-Roboter |