Advanced Light Controller Instruction Code

Über ALIC
Das Prinzip
So funktioniert die Code-Verarbeitung
Vorgaben und Definitionen
Assembler Syntax
Befehls-Referenz
Beispiele
ALIC Implementation für Microchip PICs
Links
Kontakt

Mnemonic Opcode Parameter Beschreibung Beispiel
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 
Beispiel 1
LIGHTOFF 0x00 <delay> Turn Light Off for time <delay>
Andere Form von (SETBRIGHT 0,<delay>)

Beispiel 2
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)
Beispiel 3
SMOOTHON 0xC1 Turn Smooth Mode On
Änderungen zwischen den Helligkeitswerten nachfolgender SETBRIGHT-Anweisungen erfolgen kontinuierlich durch lineare Interpolation.
Implementationsabhängig: andere Steuerkommandos, als SETBRIGHT, unterbrechen ggf. den Smooth-Modus an dieser Programmstelle
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.
Beispiel 4
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.
Beispiel 5
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".
Beispiel 6
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.
Beispiel 2
RNDDLY 0xC9 <maxticks> Random Delay
Das Programm wird nach einer zufällig erzeugten Wartezeit zwischen 0 und <maxticks> fortgesetzt.
Beispiel 7
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.
Implementaionsabhängig: funktioniert nicht bei allen Controllern 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.
Beispiel 9
9
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
Beispiel 8
SETSWX 0xCF <x> Set Switch X
Der Steuerschalter <x> wird eingeschaltet
DEFTICKLEN 0xD0 <time> Define Length of Tick
Definiert die Länge eines Ticks in Millisekunden.
Standard-Wert: 10 ms
DEFBRIGHT 0xD1 <value> Define Brightness Multiplier
Definiert einen Helligkeits-Multiplikator für den Ausgangs-Kanal.
Bereich: 0..255, Standardwert = 128 = *1.0
Beispiel 11
DEFSWITCH 0xD2 <x> Define Channel Switch
Definiert einen anderen Schalter, der dem Ausgangs-Kanal zugeordnet ist (= channel switch)
Standard: x = Kanalnummer
Beispiel 10
DEFVAR 0xD3 <x> Define Control Variable
Definiert eine andere Steuerwert-Variable, die dem Kanal zugeordnet ist (= channel variable)
Standard: x = Kanalnummer
Beispiel 12
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.
Beispiel 8
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.
Beispiel 1



counter