User manual
Operace s proměnnými
Doposud bylo u parametrů pro jednotlivé příkazy použito pouze číselných hodnot. Programovat je
v takovém případě vhodné, pakliže je program spouštěn pokaždé stejným způsobem. Složitější
programy však pracují s proměnnými daty, provést lze například operace A = A + B V závislosti
na obsahu proměnných A a B, může být pokaždé jiný výsledek. Výsledný program pro ovládání
LED může mít následující výstup.
Mikroprocesor má celkem 4 proměnné A, B, C a D. Nejdůležitější proměnná je A, která se také
nazývá akumulátor, zkr. Accu. A je součástí všech početních operací a zároveň přijímá výsledek
výpočtu. A se také používá pro přenos dat. Proměnná B je zapotřebí pro výpočet operace.
Proměnné C a D se využívají jako dočasná paměť a jsou následně používané pro operace
smyček (Loop).
K dispozici jsou také dva analogové vstupy (AD1 a AD2) a PWM výstup. Zpracovaná data jsou
omezena na 4 bity a jsou přístupná pouze prostřednictvím proměnné A (A = AD1, PWM = A).
Akumulátor A může být načten přímo s čísly (příkazy 40-4F). Pro zavedení B, C nebo D je zapotřebí
načíst jako první A a poté přiřadit obsah k další proměnné (příkazy 51-53). A a B umožňuje některé
početní procesy (příkazy 71-7A).
Příkazy 40-4F přiřazují proměnné A novou hodnotu. Skupina příkazů 51-5A převádí obsah A k cíli
jako další proměnnou nebo na PWM výstup. V této skupině jsou také příkazy, které stanoví jeden bit
výstupního portu.
Opačný směr dat je zastoupen skupinou příkazů 61-6A, kde jsou zdrojová data načtena do A.
Skupina příkazů 71-7A nakonec provádí několik výpočetních operací s výsledkem, který se projevuje
v proměnné A. Výstupní port Dout (Digital-out, výstup digitálních dat do mikroprocesoru) zahrnuje
4 výstupy A1-A4, který může být aktivován buď společně, nebo jako jednotlivé bity Dout.0 do Dout.3.
Vstupy E1-E4 se aktivují stejně jako vstupní port Din.
40-4F: A = 0-15
51-5A: Target 1-9 =
51: B = A
52: C =
53: D =
54: Dout = A
55: Dout.0 = A.0
56: Dout.1 = A.0
57: Dout.2 = A.0
58: Dout.3 = A.0
59: PWM =
61-6A: = Source 1-10
61: A = B
62: A = C
63: A = D
64: A = Din
65: A = Din.0
66: A = Din.1
67: A = Din.2
68: A = Din.3
69: A = AD1
6A: A = AD2
71 -7a: = Expression 1-10
71: A = A + 1
72: A = A - 1
73: A = A + B
74: A = A - B
75: A = A * B
76: A = A / B
77: A = A B
78: A = A or B
79: A = B Xor
7A: = Not
Příklad programu s proměnnou A je uveden části „Binární čítač a PWM výstup“.
Program byl nastaven na adresu 0 dále nepatrně rozšířen. Začátek programu
je nastaven s hodnotou 0 v proměnné A. Adresa 01 obsahuje početní operaci,
navýšenou o 1. Obsah proměnných je pak převáděn do PWM výstupu a na výstupní port.
Adresa
Příkaz
Data
Popis
00 4 0 A = 0
01 7 1 A = A + 1
02 5 4 Port = A
03 5 9 PWN = A
04 2 6 100 ms
05 3 4 Jump -4
Program „Navýšení o 1“
40 71 54 59 26 34
Další program je obdobou příkladu uvedeného v části „Analogově-digitální převodník“.
Údaje přicházejí z analogového vstupu AD1 a jsou převáděny na výstupní port a PWM výstup.
Upravený program zahrnuje další početní proces - inverzi obsahu proměnné A. Dochází tak
ke změně hodnoty 0000 na novou hodnotu 1111, v tomto případě ke změně z hodnoty 0 na 15
a obráceně. Zvyšující se vstupní napětí vede k omezení PWM výstupu.
Adresa
Příkaz
Data
Popis
00 6 9 A = AD1
01 5 4 Port = A
02 7 A A = Not A
03 5 9 PWN = A
04 2 6 100 ms
05 3 5 Jump -5
Program „Inverze“
69 54 59 26 35 7A
Jump / Branch
Doposud jsme si představili jednoduchý příkaz 3 (skokový návrat) u 15 adres. V této části dojde
k rozšíření tohoto příkazu na absolutní hodnoty. Příkaz Jump může být indikován pouze
prostřednictvím 4 bitů. Rozšířený příkaz udává „High nibble“ jednotlivé adresy. Dojde tak k rozšíření
adresy v rozmezí 0-255, což je víc, než dokáže EEPROM zpracovávat (128 byte), tedy adresa 00-7F
(0-127). Paměť je rozdělena na 8 stran (stránky 0 – 7). Strana pro příkaz Jump musí být specifikována
před příkazem Absolute Jump. 2 sčítané smyčky s proměnnými C a D tak provádějí Absolute Jump
se adresní stranou paměti, která byla předtím specifikována.
Podmíněné Jump příkazy fungují jako Skip Commands (vynechávání řádků). Pokud je příslušná
podmínka splněna, dojde k vynechání adresy. Na vynechanou pozici je možné zapsat příkaz nebo
početní operaci. U těchto podmínek dochází k porovnávání mezi A a B nebo přímým bit-query u
vstupního portu.
K dispozici je možnost spuštění subprogramu (call) a souvisejícího příkazu return. Současně může
probíhat několik subprogramů. Přesto subprogram nemá možnost spouštění jiného subprogramu,
vzhledem k tomu, že interpret má v paměti pouze předchozí adresu.
80–8F: Adr-high = 0–15
90–0F: Direct jump to Adr-high, Adr-low (0–15)
A0–AF: Counting loop C-times Adr-high, Adr-low (0–15)
B0–BF: Counting loop D-times Adr-high, Adr-low (0–15)
C1–CF: Conditional jump: if (condition 1–15) then skip
C1: if A > B then Adr = Adr + 1
C2: if A > B then Adr = Adr + 1
C3: if A = B then Adr = Adr + 1
C4: if Din.0 = 1 then Adr = Adr + 1










