{LET} Variable = {Value} {Op} Value

Function
Assign a Value or result of an expression to Variable.

Explanation
LET is an optional keyword an not typcially used. For example,

  LET idx = 25 

... produces the same compiled output as:

  idx = 25 

so using LET is of no advantage. Note that when assigning a bit variable the value of a byte variable, the bit variable will be set to zero if the byte variable is zero, otherwise it will be set to one.

  myByte = 0
  myBit = myByte                                ' myBit = 0
  myByte = 4
  myBit = myByte                                ' myBit = 1

Using Operators in Assignments
Note that SX/B supports only simple expressions, that is, just one operator per line of code. The following line will produce an error:

  idx = count / 2 + 1                           ' illegal in SX/B! 

The error is corrected by splitting the operators across separate lines:

  idx = count / 2                               ' okay now
  idx = idx + 1

The tables below show available operators for SX/B assignments:


Unary Operator Definition
-  Negate
~  Bitwise inversion
NOT  Bitwise inversion


Binary Operator Definition
+  Addition
-  Subtraction
*  Multiplication
/  Division
//  Modulus
*/  Multiply, return middle 16 bits
**  Multiply, return upper 16 bits
MAX  Set Maximum
MIN  Set Minimum
&  Bitwise AND
AND  Bitwise AND
|  Bitwise OR
OR  Bitwise OR
^  Bitwise Exclusive OR
XOR  Bitwise Exclusive OR
<<  Shift Left
SHL  Shift Left
>>  Shift Right
SHR  Shift Right

See the Operaters section for details.

Configuration Registers
When assigning values to SX configuration registers, the format is limited to:

  {LET} Register = Value

When assigning values to the special registers WKPND_B and CMP_B a variable must be used and that variable will be exchanged with the SX register.

  {LET} Register = ByteVar

  WKPND_B = wakeUp                              ' WKPND_B exchanged with wakeUp
  CMP_B = analog                                ' CMP_B exchanged with analog