BASCOM verwendet eine Basic ähnliche Skriptsprache, die leicht zu erlernen ist. Aber, wie in jeder Programmiersprache, bedarf es doch einiger Grundbefehle, die man kennen sollte. Diese Befehle findet man auch in unseren Projekten.
Befehl | Kommentar |
---|---|
1WIRECOUNT() | Übergibt die Anzahl von angeschlossenen 1-Wire Devices |
1WRESET | Reset des 1-Wire Busses |
1WREAD() | Lesen von Daten vom 1-Wire Bus |
1WSEARCHFIRST() | Lesen der ersten Device ID vom 1-Wire Bus |
1WSEARCHNEXT() | Lesen der nächsten Device ID vom 1-Wire Bus |
1WVERIFY | Verifiziert, ob eine Device ID am 1-Wire Bus gefunden wird |
1WWRITE | Schreiben von Daten zum 1-Wire Bus |
ABS() | Übergibt den Absolutwerte einer Variablen (Integer oder Long) |
ACOS() | Übergibt den arccos einer Singlevariablen in rad zurück |
ADR, ADR2 | Erzeugt Label Adressen |
ALIAS | Alias für Variablennamen |
ASC() | Weist einer numerischen Variablen den ASCII Wert des ersten Zeichen eines Strings zu |
ASIN() | Übergibt den aresin einer Singlevariablen in rad zurück |
ATN() | Übergibt den aretan einer Singlevariablen in rad zurück |
ATN2() | Übergibt den arctan einer Singlevariablen in rad über vier Quadranten zurück |
BASE64DEC() | Konvertiert Base-64 Daten |
BASE64ENC() | Konvertiert Base-64 Daten zurück |
BAUD, BAUDL | Baudrate für die Hardware UART |
BCD() | Konvertiert numerische Variable im BCD Format in String |
BIN() | Konvertiert numerische Variable in binären String |
BIN2GRAY() | Übergibt den Gray-Code einer numerischen Variablen |
BINVAL() | Konvertiert binären String in numerische Variable |
BITS | Setzt Bits |
BITWAIT | Warten bis ein Bit gesetzt oder zurückgesetzt ist |
BLOAD | Schreibt ein File ins SRAM |
BOX() | Erzeugt eine gefüllte Box auf einem Grafikdisplay |
BOXFILL() | Erzeugt eine gefüllte Box auf einem Grafikdisplay |
BSAVE | Schreibt SRAM in ein File |
BUFSPACE() | Ermittelt den freien Speicher im seriellen Buffer |
BYVAL | Übergabe einer Variablen durch ihren Wert |
CALL | Aufruf und Ausführung einer Subroutine |
CHECKSUM() | Übergibt die Byte-Checksumme eines Strings |
CHR() | Konvertiert eine Bytevariable oder Konstante in ein Zeichen |
CIRCLE | Zeichnet einen Kreis im Grafik-LCD |
CLEAR | Löschen eines seriellen Buffers |
CLS | Löschen eines angeschlossenen LCDs |
CLOCKDIVISION | Setzt den Clockteiler bei megaAVRs |
CLOSE | Schließt einen Kommunikationskanal |
CLOSESOCKET | Schließt eine Socketverbindung |
CONFIG | Konfiguriert Hardware |
CONST | Deklariert eine Konstante |
cos() | Übergibt den Cosinus einer Singlevariablen |
COSH() | Übergibt den Cosinus Hyperbolicus einer Singlevariablen |
COUNTER0, COUNTER1 | Zugriff auf interne Counter/Timer-Register |
CPEEK() | Liest ein Byte aus dem Programmspeicher |
CPEEKH() | Liest ein Byte aus den oberen 64 KByte des Programmspeichers |
CRC8() | Übergibt die CRC8 Checksumme einer Bytefolge |
CRC16 | Übergibt die CRC16 Checksumme einer Bytefolge |
CRC16UNI | Übergibt die CRC16 Checksumme einer Bytefolge |
CRC32() | Übergibt die CRC32 Checksumme einer Bytefolge |
CRYSTAL | Ändert die Baudrate während der Runtime |
CURSOR | Setzen der Attribute des LCD Cursors |
DATA | Speichert Konstanten in SRAM oder EEPROM |
DATE | Übergibt einen Datumswert |
DATE$ | Variable und Formatierung für das Datum |
DAYOFWEEK() | Übergibt den Wochentag |
DAYOFYEAR() | Übergibt den Tag im Jahr |
DGB | Sendet Debuginformationen zur Hardware-UART |
DCF77TIMEZONE() | Übergibt den Offset zur Greenwich Zeit |
DEBOUNCE | Entprellt eine an ein Pin angeschlossene Taste |
DECR | Dekrementiert (Subtraktion von Eins) eine Variable |
DECLARE | Deklariert eine Funktion oder eine Subroutine |
DEFBIT, DEFBYTE, DEFINT, DEFLNG, DEFWORD | Deklariert alle nicht dimensionierten Variablen, die mit dem gleichen Zeichen beginnen, als entsprechenden Typ |
DEG2RAD | Konvertiert einen Winkel von Grad in Radian |
DEFLCDCHAR | Definiert ein anwendungsspezifisches LCD Zeichen |
DELAY | Unterbricht die Programmabarbeitung für ca. 1 ms |
DIM | Deklariert und dimensioniert eine Variable im SRAM (default), XRAM oder EF PROM (ERAM) |
DIR() | Gibt den Filenamen zurück |
DISABLE | Sperrt einen Interrupt |
DISKFREE() | Gibt den freien Speicherplatz zurück |
DISKSIZE() | Gibt die Grösse des Diskspeichers zurück |
DISPLAY | Schaltet das Display ein oder aus |
DO. ..LOOP | Wiederholt eine Folge von Instruktionen bis eine Bedingung erfüllt (True) ist. Eine DO-LOOP wird mindestens einmal durchlaufen |
DRIVECHECK() | Meldet, ob das CF Drive zur Benutzung fertig ist |
DRIVEGETIDENTITY() | Übergibt die Parameter des CF |
DRIVEINIT() | Drives Initialisierung des CF Drives und Reset |
DRIVERESET() | Reset des CF Drives |
DRIVEREADSECTOR() | Lesen eines Sektors (512 Bytes) vom CF Drive |
DRIVEWRITESECTOR() | Schreiben eines Sektors (512 Bytes) zum CF Drive |
DTMFOUT | Sendet einen DTMF Tone zum Comparel Ausgang von Timer1 |
ECHO | Schaltet das Echo bei INPUT ein oder aus |
ENABLE | Erlaubt einen spezifischen Interrupt |
ENCODER() | Lesen von Impulsen von einem Encoder |
END | Beendet das laufende Programm. Alle Interrupts werden gesperrt |
EOF() | Übergibt den End-of-File Status |
ERR | Interne Errorvariable, im Fehlerfall = 1 |
EXIT | Austritt aus FOR-NEXT, DO-LOOP, WHILE-WEND, Subroutine oder Funktion |
EXPO | Übergibt den Wert exp(x) |
FILEDATE() | Übergibt das Filedatum |
FILEDATETIME() | Übergibt das Datum & Zeit des Files |
FILELEN() | Übergibt die Filegrösse |
FILETIME() | Übergibt die Filezeit |
FIX() | Übergibt für positive Werte den nächst niedrigeren und für negative den nächst höheren ganzzahligen Wert |
FLUSH | Schreibt den Bufferinhalt ins File |
FOR … NEXT | Wiederholt eine Folge von Instruktionen bis zu einem Endwert. Die Indexvariable kann „inkrementiert (TO) oder dekrementiert (DOWNTO) werden. Die Schrittweite kann optional festgelegt werden (STEP) |
FORMAT() | Formatierung eines numerischen Strings |
FOURTHLINE | Setzt den Cursor an den Beginn der vierten Zeile des LCDs |
FRAC() | Übergibt die Nachkommastellen einer Singlevariablen |
FREEFILE() | Übergibt eine freie Filenummer |
FUNCTION END FUNCTION | Definiert eine Funktion |
FUSING() | Stringformatierung einer Singlevariablen |
GET | Liest ein Byte vom UART (HW, SW) bzw. Daten von einem geöffneten File in Binary Mode |
GETADC() | Liest einen Kanal des ADU (wenn ADU vorhanden) |
GETATKBD() | Abfrage einer PC AT Tastatur |
GETATKBDDRAW() | Liest eine Taste von einem PC-AT-Keyboard |
GETDSTIP() | Abfrage der IP Adresse |
GETDSTPORT() | Abfrage des Ports |
GETKBD() | Abfrage einer 4×4 Tastaturmatrix |
GETRC() | Liest eine RC-Zeitkonstante von einem Portpin |
GETRC5() | Liest eine RC5 codierte Pulsfolge von einem IR Sensor |
GETSOCKET() | Erzeugt ein Socket für TCP/IP Kommunikation |
GETTCPREGS() | Liest ein W3100A Register |
GLCDCMD | Sendet ein Kommandobyte zu einem SED-Grafik-LCD |
GLCDDATA | Sendet ein Datenbyte zu einem SED-Grafik-LCD |
GOSUB | Sprung zu einer Subroutine |
GOTO | Sprung zu einem Label |
GRAY2BIN() | Übergibt den numerischen Wert eines Gray-Codes |
HEX() | Konvertiert numerische Variable in Hexadezimal-String |
HEXVAL() | Konvertiert einen Hexadezimal-String in eine numerische Variable |
HIGHO | Ermittelt das höchstwertige Byte (MSB) einer Variablen |
HIGHW() | Ermittelt das höchstwertige Word (MSW) einer Longvariablen |
HOME | Setzt den Cursor an den Beginn der ersten Zeile des LCDs |
I2CINIT | Initialisiert den I2C Bus |
I2CRECEIVE | Empfängt Daten vom I2C Bus |
I2CSEND | Sendet Daten zum I2C Bus |
I2CSTART | Erzeugt eine I2C Startbedingung |
I2CSTOP | Erzeugt eine I2C Stoppbedingung |
I2CRBYTE | Empfängt ein Byte vom I2C Bus |
I2CWBYTE | Sendet ein Byte vom I2C Bus |
IDLE | Versetzt den Prozessor in den IDLE Mode, d.h. der Systemtakt wird von der CPU aber nicht von der Peripherie abgeschaltet. Der IDLE Mode wird durch In¬terrupt (Timer/Counter, serielle Schnittstelle) oder Reset verlassen |
IF THEN ELSE ENDIF | Bedingte Programmverzweigung |
INCR | Inkrementiert (Addition von Eins) eine Variable |
INITFILESYSTEM() | Initialisiert das CF Filesystem |
INITLCD | Initialisiert ein angeschlossenes LCD |
INKEY() | Liest ein Zeichen aus dem seriellen Eingangsbuffer |
INP() | Liest ein Byte von einem Hardwareport oder aus dem Datenspeicher |
INPUT | Liest Zeichen vom COM-Port und speichert in die betreffenden Variablen ab. Vor dem Promptzeichen kann eine Zeichenkonstante prompt als Eingabeauf¬forderung gesetzt werden. Die Anzahl der Bytes hängt vom Typ der Variablen ab. INPUT wartet auf ein CR. |
INPUTBIN | Liest Binärwerte vom COM-Port und speichert diese als Binärzahl ab. Die An¬zahl der Bytes hängt vom Typ der Variablen ab. INPUTBIN wartet nicht auf ein CR. |
INPUTHEX | Liest Zeichen vom COM-Port und speichert diese als Hexadezimalzahl ab. Die Anzahl der Bytes hängt vom Typ der Variablen ab. INPUTHEX wartet nicht auf ein CR. |
INT() | Übergibt den ganzzahligen Teil einer Singlevariablen |
INTSTR() | Übergibt die Position eines Substrings in einem String |
IP2STR() | Konvertiert eine IP in einen String |
ISCHARWAITING() | Übergibt 1, wenn Zeichen im Buffer der Hardware UART vorhanden |
KILL | Löscht ein File vom CF Drive |
LCASE() | Konvertiert einen String in Kleinbuchstaben |
LCD | Sendet den Inhalt einer Variablen oder Text an ein LCD |
LCDAT | Sendet den Inhalt einer Variablen oder Text an ein SED-Grafik-LCD |
LCDCONTRAST | Stellt den Kontrast beim Text-LCD ein (LCD abhängig) |
LEFT() | Übergibt eine bestimmte Anzahl von Zeichen eines Strings links beginnend |
LEN() | Übergibt die Länge eines Strings |
LINE | Zeichnet eine Linie auf ein Grafik-LCD |
LINEINPUT | Liest eine Zeile aus einem geöffneten File |
LOAD | Lädt einen Reload Wert in einen Timer |
LOADADR | Lädt die Adresse einer Variable in eines der Registerpaare X oder Z |
LOADLABEL() | Lädt die Adresse eines Labels in eine Wordvariable. |
LOADWORDADR() | Lädt das Z-Register und setzt RAMPZ (wenn verfügbar) |
LOC() | Übergibt die letzte Lese- oder Schreibposition vom CF Drive |
LOCAL | Deklariert eine lokale Variable in einer Funktion oder einer Subroutine. Eine lokale Variable ist eine temporäre Variable, die in einem Frame gespeichert wird. |
LOCATE | Positioniert den Cursor im LCD |
LOF() | Übergibt die Länge eines Files vom CF Drive |
LOG() | Übergibt den natürlichen Logarithmus einer Singlevariablen |
LOG10() | Übergibt den dekadischen Logarithmus einer Singlevariablen |
LOOKDOWN() | Übergibt den Index einer gesuchten Wertes |
LOOKUP() | Übergibt einen Wert aus eines Tabelle |
LOOKUPSTR() | Übergibt einen String aus einer Stringtabelle |
LTRIM() | Bereinigt die führenden Leerzeichen in einem String |
LOW() | Ermittelt das niederwertige Byte (LSB) einer Variablen |
LOWERLINE | Positioniert den Cursor in die untere Zeile des LCD |
MACRO ENDMACRO | Definition eines Makros |
MAKEBCD() | Konvertiert eine Variable vom Dezimal- in das BCD-Format |
MAKEDEC() | Konvertiert eine Variable vom BCD- in das Dezimalformat |
MAKEINT() | Konvertiert zwei Bytes in eine Integervariable (var = 256 * MSB + LSB) |
MAKEMODBUS() | Erzeugt einen MODBUS Master/Client Frame |
MAKETCP() | Erzeugt eine TCP/IP Variable |
MAX() | Übergibt das Maximum eines Wordarrays |
MEMCPY() | Kopiert einen Block von Bytes |
MID() | Ersetzt Teile eines Strings durch einen anderen String oder gibt Teile eines Strings zurück |
MIN() | Übergibt das Minimum eines Wordarrays |
NBITS() | Setzt Bits (Gegenstück zu BITS()) |
ON | Sprungverteiler für Interruptvektortabelle oder Liste |
OPEN | Ordnet einem Software-UART ein I/O-Pin als Eingang oder Ausgang sowie die Kommunikationsparameter zu |
OUT | Sendet ein Byte an ein Hardwareport oder in den Datenspeicher |
PEEK() | Liest ein Byte aus einem internen Register (RO – R31) |
POKE | Schreibt ein Byte in ein internes Register (RO – R31) |
POWER | Potenzfunktion xy |
POWERDOWN | Versetzt den Prozessor in den POWERDOWN Mode, d.h. der Systemtakt wird komplett abgeschaltet. Der POWERDOWN Mode wird nur durch Reset verlas¬sen. Der Watchdog kann diesen Reset auslösen |
POWERSAVE | Versetzt die CPU in den PowerSave Mode (CPU abhängig) |
Sendet den Inhalt von Variablen oder Text an die serielle Schnittstelle. Mehrere Variable werden durch Semikolon getrennt. Semikolon am Ende unterdrückt die automatisch CR/LF. | |
PRINTBIN | Sendet den binaren Inhalt einer Variablen an die serielle Schnittstelle. Mit PRINTBIN lassen sich aber ganze Arrays ausgeben |
PSET | Setzt ein Pixel (im Grafik-LCD) |
PS2M0USEXY | Sendet Informationen über Bewegung und Tastenbetätigung einer Maus an einen PC |
PULSEIN | Misst die Länge eines Pulses an einem Portpin |
PULSEOUT | Erzeugt einen Puls an einem Portpin |
PUSHALL POPALL | Retten und Restaurieren aller internen Register |
PUT | Schreibt ein Byte zum UART (HW, SW) bzw. Daten in ein geöffnetes File im Binary Mode |
QUOTE() | Konvertiert text zu „text“ (für HTML-Anwendungen) |
RAD2DEG | Konvertiert einen Winkel von Radian in Grad |
RC5SEND | Sendet eine RC5 codierte Pulsfolge zu einem IR Empfänger |
RC5SENDTEXT | Sendet eine erweiterte RC5 codierte Pulsfolge zu einem IR Empfänger |
RC6SEND | Sendet eine RC6 codierte Pulsfolge zu einem IR Empfänger |
READ | Liest einen Wert aus einer data Zeile resp. dem Speicher und ordnet diesen einer Variablen zu |
READEEPROM | Liest einen Wert aus dem EEPROM und ordnet diesen einer Variablen zu. Wichtig: Nach einem Reset kann die erste Zeile im EEPROM überschrieben werden |
READHITAG() | Liest die HITAG RFID Transponder Seriennummer |
READMAGCARD | Liest Daten von einer Magnetkarte |
REM | Leitet einen Kommentar ein |
RESET | Setzt ein Bit auf Null |
RESTORE | Setzt den Datenzeiger in einer DATA Instruktion zurück auf den Anfang |
RETURN | Rücksprung aus einer Subroutine oder einer Interruptserviceroutine |
RIGHTO | Übergibt eine bestimmte Anzahl von Zeichen eines Strings rechts beginnend |
RND() | Übergibt eine Pseudo-Zufallsszahl |
ROTATE | Rotiert alle Bits einer Variablen um eine Position nach links oder rechts |
ROUND() | Übergibt den gerundeten Wert einer Singlevariablen |
RTRIM() | Bereinigt die abschließenden Leerzeichen in einem String |
SECELAPSED | Übergibt die ab einem Zeitstempel vergangenen Sekunden |
SECOFDAY() | Übergibt die Sekunden des Tages |
SELECT CASE END SELECT | Fallunterscheidung |
SENDSCAN | Sendet ein Scankommando zum Mausanschluss eines PCs |
SENDSCANKBD | Sendet ein Scankommando zum Tastaturschluss eines PCs |
SERIN | Liest Daten von einem dynamischen Software UART |
SEROUT | Schreibt Daten zu einem dynamischen Software UART |
SET | Setzt ein Bit auf Eins |
SETFONT | Setzt den Font für LCDAT für ein SED-Grafik-LCD |
SETTCP | Konfiguriert den TCP/IP W3100A Chip |
SETTCPREGS | Beschreibt Register des W3100A Chips |
SETIPPROTOCOL | Konfiguriert das Socket RAW-Mode Protokoll |
SGN() | Übergibt das Vorzeichen einer Singlevariablen |
SHIFT | Schiebt alle Bits einer Variablen eine Position nach Links oder rechts |
SHIFTLCD | Verschiebt den LCD-Inhalt eine Position nach links oder rechts |
SHIFTCURSOR | Verschiebt den LCD Cursor eine Position nach links oder rechts |
SHIFTIN | Schiebt einen Bitstrom von einem Portpin in eine Variable |
SHIFTOUT | Schiebt einen Bitstrom aus einer Variablen zu einem Portpin |
SHOWPIC | Anzeigen eines BGF Files auf einem Grafik-LCD |
SHOWPICE | Anzeigen eines BGF Files im EEPROM auf einem Grafik-LCD |
SIN() | Übergibt den Sinus einer Singlevariablen |
SINH() | Übergibt den Sinus Hyperbolicus einer Singlevariablen |
SOCKETCONNECT() | Erzeugt eine Verbindung zu einem TCP/IP Server |
SOCKETLISTEN | Eröffnet einen Socket im Servermode |
SOCKETSTAT() | Übergibt Socketinformationen |
SONYSEND | Sendet eine SONY Pulsfolge zu einem IR Empfänger |
SOUND | Tonerzeugung mit einem Beeper |
SPACE() | Übergibt einen String aus Leerzeichen |
SPC() | Erzeugt eine String aus einer Anzahl Leerzeichen |
SPIINIT | Initialisiert die SPI Pins |
SPXIN | Liest eine Anzahl von Bytes vom SPI Bus |
SPIMOVE() | Schreibt und liest eine Anzahl von Bytes zum/vom SPI Bus |
SPIOUT | Schreibt eine Anzahl von Bytes zum SPI Bus |
SPLIT() | Teilt einen String in eine Anzahl von Arrayelementen |
START | Starten der betreffenden Hardware |
STCHECK | Test auf Stackoverflow |
STR() | Konvertiert eine Zahl in einen String |
STRING() | Übergibt einen String aus mehreren gleichen Zeichen |
STOP | Stopp der betreffenden Hardware |
SUB END SUB | Definiert eine Subroutine |
SWAP | Vertauscht den Inhalt von zwei Variablen gleichen Typs |
SQR() | Übergibt die Quadratwurzel einer Singlevariablen |
SYSDAY() | Übergibt den Systemtag |
SYSSEC() | Übergibt die Systemsekunden |
SYSSECELAPSED() | Übergibt die ab einem Systemzeitstempel vergangenen Systemsekunden |
TAN() | Übergibt den Tangens einer Singlevariablen |
TANH() | Übergibt den Tangens Hyperbolicus einer Singlevariablen |
TCPCHECKSUM() | Übergibt eine TCP/IP Checksum |
TCPREAD() | Liest Daten von einer geöffneten Socket Verbindung |
TCPWRITE() | Schreibt Daten zu einer geöffneten Socket Verbindung |
TCPWRITESTRING() | Sendet einen String zu einer geöffneten Socket Verbindung |
TIME$ | Variable und Formatierung für die Zeit |
THIRDLINE | Setzt den Cursor an den Beginn der dritten Zeile des LCDs |
TIME | Übergibt einen Zeitwert |
TOGGLE | Umschalten eines Ausgangspins oder einer Bitvariablen |
TRIM() | Bereinigt führenden und abschließende Leerzeichen in einem String |
UCASE() | Konvertiert einen String in Grossbuchstaben |
UDPREAD | Liest Daten über das UDP Protokoll |
UDPWRITE | Schreibt Daten über das UDP Protokoll |
UDPWRITESTRING | Sendet einen String über das UDP Protokoll |
UPPERLINE | Positioniert den Cursor in die obere Zeile des LCDs |
VAL() | Konvertiert einen String in eine Zahl |
VARPTR() | Ermittelt die Adresse einer Variablen im Datenspeicher |
VER() | Rückgabe der AVR-DOS-Version |
VERSION() | Rückgabe von Datum und Zeit der Compilation |
WAIT WAITMS WAITUS | Unterbrechung der Programmabarbeitung für (nicht sehr präzise) Zeit in s, ms bzw. µs |
WAITKEY() | Wartet auf ein Zeichen von der seriellen Schnittstelle |
WRITE | Schreibt Daten in ein File |
WRITEEEPROM | Schreibt den Wert einer Variablen ins EEPROM. Wichtig: Nach einem Reset kann die erste Zelle im EEPROM überschrieben werden. |
WHILE WEND | Wiederholt eine Folge von Instruktionen solange eine Bedingung erfüllt ist. |
#IF #ELSE #ENDIF | Bedingte Compilierung |