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 | ![]() |
![]() |
![]() |
![]() |
|
![]() |
|
![]() |
|
![]() |