PICALIC Lichtcontroller nach ALIC Standard - V. 1.0
Über PICALIC V1.0
Kochbuch
Datenblatt
Implementierter ALIC-Befehlssatz
#defines
LED Treiber-
schaltungen
Kontakt
Mnemonic Opcode Parameter Beschreibung
SETBRIGHT 0x00
-0xBF
<delay> Set Brightness value for time <delay>
Assembler-Syntax: SETBRIGHT <value>,<delay>
Stellt die Helligkeit auf den Wert <value> ein. Der nachfolgende Befehl wird nach der Zeit <delay> (in "Ticks") ausgeführt. Der Helligkeitswert wird hierbei im Opcode codiert!
Wertebereich:
value:  0..191 (128 entspricht 100%)
delay: 0..255 
LIGHTOFF 0x00 <delay> Turn Light Off for time <delay>
Andere Form von (SETBRIGHT 0,<delay>)

LIGHTON 0x80 <delay> Turn Light On for time <delay>
Andere Form von (SETBRIGHT 128,<delay>)
SMOOTHOFF 0xC0 Turn Smooth Mode Off
Helligkeitsänderungen nachfolgender SETBRIGHT-Anweisungen erfolgen direkt auf den angegebenen neuen Wert, ohne Zwischenwerte. (Standardeinstellung)
SMOOTHON 0xC1 Turn Smooth Mode On
Änderungen zwischen den Helligkeitswerten nachfolgender SETBRIGHT-Anweisungen erfolgen kontinuierlich durch lineare Interpolation.
Implementation: jedes Steuerkommando mit Opcode >= 0xC0 unterbricht ggf. den Smooth-Modus an dieser Programmstelle. SMOOTH bleibt aktiviert, aber es entsteht ggf. ein Helligkeits-Sprung.
HALTSWOFF 0xC2 Halt while Channel's Switch is Off
Hält bei ausgeschaltetem Steuerschalter die Programmausführung an dieser Stelle an, bis der Schalter eingeschaltet wird.
HALTSWON 0xC3 Halt while Channel's Switch is On
Hält bei eingeschaltetem Steuerschalter die Programmausführung an dieser Stelle an, bis der Schalter ausgeschaltet wird.
JSWOFF 0xC4 <addr> Jump if Channel's Switch is Off
Wenn der dem eigenen Kanal zugeordnete Steuerschalter ausgeschaltet ist, wird das Programm an Speicheradresse <addr> fortgesetzt.
JSWON 0xC5 <addr> Jump if Channel's Switch is On
Wenn der dem eigenen Kanal zugeordnete Steuerschalter eingeschaltet ist, wird das Programm an Speicheradresse <addr> fortgesetzt.
CLRSW 0xC6 Clear Channel's Switch
Schaltet den dem eigenen Kanal zugeordneten Steuerschalter auf "aus".
SETSW 0xC7 Set Channel's Switch
Schaltet den dem eigenen Kanal zugeordneten Steuerschalter auf "ein".
JUMP 0xC8 <addr> Jump
Das Programm wird an Speicheradresse <addr> fortgesetzt.
RNDDLY 0xC9 <maxticks> Random Delay
Das Programm wird nach einer zufällig erzeugten Wartezeit zwischen 0 und <maxticks> fortgesetzt.
RNDBRT 0xCA <min>,<max>,<delay> Set Random Brightness
Der Helligkeitswert wird zufällig im Bereich <min> bis <max> eingestellt und liegt für die Dauer <delay> dort an.
funktioniert nicht im Smooth-Modus
RNDJMP 0xCB <chance>,<addr> Random Jump
Das Programm wird mit der Wahrscheinlichkeit <chance> an Addresse <addr> fortgesetzt.
<chance> = 0..128 für nie bis immer.
JSWXOFF 0xCC <x>,<addr> Jump if Switch X is Off
Wenn der Steuerschalter <x> ausgeschaltet ist, wird das Programm an Speicheradresse <addr> fortgesetzt.
JSWXON 0xCD <x>,<addr> Jump if Switch X is On
Wenn der Steuerschalter <x> eingeschaltet ist, wird das Programm an Speicheradresse <addr> fortgesetzt.
CLRSWX 0xCE <x> Clear Switch X
Der Steuerschalter <x> wird ausgeschaltet
SETSWX 0xCF <x> Set Switch X
Der Steuerschalter <x> wird eingeschaltet
DEFTICKLEN 0xD0 <time> Define Length of Tick (Header-Befehl)*
Definiert die Länge eines Ticks in Millisekunden.
Standard-Wert: 10 ms
funktioniert nur, wenn das Programm mit
"#define COMMTICK 0" assembliert wird!
DEFBRIGHT 0xD1 <value> Define Brightness Multiplier (Header-Befehl)*
Definiert einen Helligkeits-Multiplikator für den Ausgangs-Kanal.
Bereich: 0..255, Standardwert = 128 = *1.0
DEFSWITCH 0xD2 <x> Define Channel Switch (Header-Befehl)*
Definiert einen anderen Schalter, der dem Ausgangs-Kanal zugeordnet ist (= channel switch)
Standard: x = Kanalnummer
DEFVAR 0xD3 <x> Define Control Variable (Header-Befehl)*
Definiert eine andere Steuerwert-Variable, die dem Kanal zugeordnet ist (= channel variable)
Standard: x = Kanalnummer
JVARB 0xD8 <val>,<addr> Jump if Channel's Variable is Below <val>
Wenn der inhalt der dem Kanal zugeordneten Variablen kleiner ist als <val>, wird das Programm bei <addr> fortgesetzt.
JVARAE 0xD9 <val>,<addr> Jump if Channel's Variable is Above or Equal <val>
Wenn der inhalt der dem Kanal zugeordneten Variablen größer oder gleich <val> ist, wird das Programm bei <addr> fortgesetzt.
JVARXB 0xDA <x>,<val>,<addr> Jump if Variable X is Below <val>
Wenn der inhalt Variablen <x> kleiner ist als <val>, wird das Programm bei <addr> fortgesetzt.
JVARXAE 0xDB <x>,<val>,<addr> Jump if Variable X is Above or Equal <val>
Wenn der inhalt der Variablen <x> größer oder gleich <val> ist, wird das Programm bei <addr> fortgesetzt.
DELAY 0xDC <delay> Delay
Fügt eine Wartezeit von <delay> Ticks ein. Der vor diesem Befehl eingestellte Helligkeitswert wird nicht verändert.
P_RESET 0xFF Program Reset
Setzt für den aktuellen Kanal den Programmzähler auf die Einsprungadresse  zurück und aktiviert die folgenden Werte:
  • Ausgangs-Helligkeit: 0 (Licht aus)
  • Smooth-Modus: aus
  • Ticklänge: Default (10ms)
Schalterstellungen, Variablen und deren Zuordnungen bleiben unverändert.
*Header Befehle: diese Anweisungen müssen am Programmanfang stehen, d.h. unmittelbar nach Einsprungadresse und vor allen anderen Befehlen. Jeder andere Befehl, als vom Typ "Header", macht Header-Befehle im nachfolgenden Programmablauf unwirksam.