< Wróć do bazy wiedzy

Jaka jest różnica między typami “Constant” i “K Constant”?

Główna różnica polega na innym zakresie wartości dla tych typów.
Różnicę tę można wyjaśnić na poniższym przykładzie kodu programu:

ADD    K 100     ; 1. linia polecenia
       R 100     ; 2. linia polecenia
       R 101     ; 3. linia polecenia

Wszystkie dane dotyczące pojedyncze linii kodu przechowywane są w 32 Bitach (4 bajty). Pierwsza linia kodu wymaga użycia 18 bitów na instrukcję (np. ADD) i typ zmiennej (K, R, I,…). Pozostałe 14 bitów – w przypadku, gdy typem jest K – może być użyte na wartość “K constant”. Dlatego też zakres wartości “K constant” wynosi 0..16383.
“K constant” jest oznaczona kodem typu zmiennej (bity 14 i 15 są w stanie wysokim) i dlatego też może być użyta zamiast np. rejestru w instrukcjach, które go wymagają.
Uwaga: “K Constant” może być użyta jako parametr w instrukcjach, które wymagają podania typu zmiennej.
Niektóre instrukcje akceptują tylko “Constants” w kolejnych liniach instrukcji. Instrukcja LD jest właśnie takim przykładem:

LD     R 200         ; Załaduj rejestr 200
       2147483647    ; wartością 2147483647

Ponieważ druga linia instrukcji LD pozwala na podanie jedynie wartości, to całe 32 bity mogą być wykorzystane na wartość z zakresu (-2 147 483 648 .. 2 147 483 647) tej stałej.
Uwaga: Stała typu “Constant” nigdy nie może być wykorzystana w pierwszej linii instrukcji I nie może być przekazana jako parametr wywołania funkcji FB.