BASIC für Control I | ![]() |
![]() |
Letztmalig dran rumgefummelt: 07.06.05 18:07:44 |
![]() |
C-Control I/Plus BASIC arbeitet auf Compiler-Basis und stellt somit eine relativ einfach zu erlernende Programmiersprache dar, welche auch einen mäßig schnellen Referenzcode erzeugt. Schneller allerdings ist der Assembler des Zielprozessors. In diesem Falle des MC68HCO5B6. Zielplattform für den aufgeführten BASIC-Dialekt ist ausschließlich die C-Control I/Plus. | ||||
![]() |
|
||||
![]() |
1. Control I/ BASIC-Befehlsliste 2. Oberfläche und Upload zur Maschine 3. BASIC-Programmierung 4. C-Control-Roboter |
||||
![]() |
C-Cotrol im Web | ||||
![]() |
Alternativen zur Programmierung der Control I Main Unit:
|
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 | ![]() |
![]() |
![]() |
![]() |
|
![]() |
|
![]() |
|
![]() |