BASIC für Control II history menue 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.

C-Control II

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 history menue scroll up
  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 history menue scroll up

 

C-Control/Plus
BASIC für C-Control


3. C-Control II history menue scroll up

 

 


4. C-Control-Roboter history menue scroll up