Operators – Referencia de Lenguaje Spin
Como Random es siempre un operador de asignación las reglas de Asignación Intermedia
aplican a la instrucción (ver Pág. 151).
Bitwise Decode '
'
|<
El operador Bitwise Decode decodifica un valor (0 – 31) en un valor long de 32-bit con un bit
simple activado en alto correspondiente a la posición del bit del valor original. Bitwise
Decode puede usarse en expresiones variables y constantes enteras pero no en expresiones
constantes de punto flotante. Ejemplo:
Pin := |<PinNum
El ejemplo de arriba activa
corresponde a la posición indicada por
PinNum
Pin
Si
es 3,
se activa igual a %00000000 00000000 00000000 00001000.
PinNum
Pin
Si
es 31,
se activa igual a %10000000 00000000 00000000 00000000.
Hay muchas formas de usar Bitwise Decode, pero la mas útil es para convertir de un pin E/S
a un patrón de 32-bit que describe ese numero de pin en relación a los registros E/S. Por
ejemplo Bitwise Decode es muy útil para los parámetros de mascara de las instrucciones
WAITPEQ
WAITPNE
y
.
Bitwise Decode se convierte en operador de asignación cuando esta el operador solo a la
izquierda de la variable en una línea. Por ejemplo:
|<PinNum
Esto almacenara el valor decodificado de
Bitwise Encode '
'
>|
El operador Bitwise Encode codifica un valor de 32-bit long en un valor (0 – 32) que
representa el grupo de bit mas alto mas 1. Bitwise puede usarse en variables y expresiones
constantes enteras pero no puede usarse en expresiones constantes de punto flotante.
Ejemplo:
PinNum := >|Pin
El ejemplo anterior activa
Pin
Si
es %00000000 00000000 00000000 00000000,
Pin
Si
es %00000000 00000000 00000000 10000000,
Pagina 164 · Manual Propeller v1.1
Pin
igual al valor de 32-bit en el cual el bit sencillo en alto
PinNum
.
PinNum
de regreso en
PinNum
igual al numero del bit mas alto activado en
PinNum
.
PinNum
es 0; no hay bits activos.
PinNum
es 8; el bit 7 es activo.
Pin
, mas 1.