LIN | Top

LIN ini, fin o LIN ini,cnt
Hace una linealización mediante una interpolación de una tabla de segmentos. De esta forma se puede hacer un escalado no lineal o leer el valor de un punto en una curva.
La tabla consta de valores X, Y que definen los segmentos. El final de un segmento es el inicio del siguiente. El orden es siempre alternando X e Y:
X0, Y0; X1, Y1; X2, Y2; X3, Y3, etc.
La forma de escribir es:
LIN X0, X3 ;Punto inicial (X0,Y0) y punto final (X3,Y3)
o
LIN X0, 3 ;Punto inicial (X0,Y0) y cantidad de puntos
Las variables X0 a Y3 son solo un ejemplo, pero pueden usarse todas las que entren hasta llenar la memoria (ese es el límite). Preferiblemente deben ser variables con retención. Cada una de estas es de 16bit signado (-32768 a 32767).
El dato a linealizar debe estar en el acumulador al momento de ejecutar la instrucción. Una vez ejecutada el resultado está en el acumulador. Lo que hace es dar un valor Y para un valor X de entrada:
LD valor
LIN X0, X1
ST linealizado
Si el valor a linealizar es menor que X0 el resultado será Y0. Si el valor a linealizar es mayor que el último X el resultado será el último Y. Para el caso del ejemplo el mínimo y máximo estarán en Y0 e Y3 respectivamente.
SCALE
ADD
MUL
DIV
Lista de instrucciones
Indice