Page 34 of 62
SBasic User's Manual SBasic Version 2.7 Page 34
Printed: December 5, 1999
Functions and statements
SBasic supports several functions and statements useful for embedded
control applications.
Generally speaking, a function returns a value, while a statement does
not. All functions contain parentheses, though not all functions
actually need an argument inside the parentheses.
All statements, however, appear without parentheses.
The SWAPB function exchanges the two bytes of the 16-bit argument and
returns the new value. It does not alter the original argument. This
operation is useful for sending both bytes of a variable to a byte-
wide I/O port, such as the 68hc11's SPI.
Example:
j = $1234 ' prepare j
pokeb spdr, swapb(j) ' send $12 to SPI
The RSHFT and LSHFT functions shift the 16-bit argument one bit
position, either right or left. This operation can be used as a fast
multiply or divide by 2.
Example:
n = %11000011 ' initial value of n
n = rshft(n) ' n now holds %01100001
n = lshft(n) ' n now holds %11000010
Note that the shift functions move the argument one bit in the
specified direction, moving a 0 bit into the vacated position. Thus:
x <- xxxxxxxxxxxxxxx <- 0 = LSHFT()
0 -> xxxxxxxxxxxxxxx -> x = RSHFT()
The RROLL and LROLL functions rotate the 16-bit argument one bit
position, either right or left. This operation can be used as part of
a pulse-width modulation (PWM) function.
Example:
n = %1111 ' initial value of n
n = rroll(n) ' n now holds %1000000000000111
n = lroll(n) ' n now holds %0000000000001111
Note that the roll functions move the argument one bit in the
specified direction, placing the rotated bit into the position at the
opposite end of the word. Thus: