Tipo de datos |
Top |
Es una característica principalmente vinculada al tamaño, y que es obligatorio asignar a cada variable que se declara o crea (ver mas abajo).
• Bit, bool o DIG • Entero o INT o Word o int_16 (16bit) • Entero largo o LNG o int_32 (32bit) • Real o SNG (punto flotante)
|<----------------------- entero 32bit ------------------------>| | parte alta | parte baja | | | | | |<------ entero 16bit --------->|<------ entero 16bit --------->| | | | |_______________________________|_______________________________| | |B| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ¯¯¯\¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ | \___ bit | | | 31 16 15 0 | |<------- una dirección ------->|<------- una dirección ------->| de memoria de memoria
El tipo común es el Entero de 16bit, y es posible hacer referencia a cada uno de sus bits. Ejemplo:
• i0 hace referencia a los 16bits de las entradas digitales, q0 hace referencia a los 16bits de las salidas digitales. • i0.0 hace referencia a la 1º entrada digital (bit 0), i0.1 a la segunda, etc. q0.15 hace referencia al último bit de la variable correspondiente a las salidas digitales, q0.14 a la anterior, y así hasta llegar a la primera que es q0.0.
El entero largo (LNG) y el real (SNG) no son comunes y están reservados para las funciones aritméticas y comparaciones, por lo que no se puede usar algo como i0.25. Las operaciones aritméticas, las comparaciones, INC, DEC, LD y ST pueden usar estos dos tipos. Para esto es necesario usar variables declaradas. Esto significa que si se hace un LD v0 lo hará en 16bit, pero si se declara una variable como entero largo o real en la posición de v0 (ocupará v0 y v1) la operación se hará correctamente (ver instrucción LD).
Constantes (valores numéricos)
Los
números son tomados como constantes, y su tipo (entero, largo o
real) será determinado por la forma que esté escrito. Un
LD 2 cargará el acumulador con un entero de valor 2, un
LD 80000 cargará
el acumulador con un largo de valor ochenta mil, y un
LD 1.23
cargará el acumulador con un real uno coma veintitrés.
Los enteros y enteros largos pueden también expresarse en binario, octal y hexadecimal:
En la imagen están los tipos de datos que se pueden declarar. Nótese que el salto de la variable llamada Total a Prop es de 2 posiciones. Esto es debido a su tamaño (el doble), y así se evita que se superpongan.
Uniones
Aquí las variables están superpuestas. Es lo que en C se llama unión. Los nombres que se le han asignado coinciden con el tipo de superposición. De esta forma, lo que le acontece a una se refleja en la otra, ya que es la misma cosa con varios nombres. Por ejemplo, en CP127 y CP128 CntFst es de 16 bits. Cuando la cuenta pase de 32767 a 32768 se leerá -32768 (es porque todas las variables son con signo). Para leerlo correctamente se lo convierte a 32 bit mediante una unión, copiando CntFst a Parte_baja, cero a Parte_alta, y finalmente leyendo Variable_Larga:
MOVE CntFst, Parte_baja MOVE 0, Parte_alta LD Variable_Larga
Un largo equivale a 2 enteros adyacentes. Para pasar datos de uno a otro utilice BLKMOVE. A partir de determinadas versiones puede usar MOVE para hacer conversiones entre 16 y 32 bit. |
Lista de instrucciones
Ejemplos matemática