Basic stamp homework board manual
Parallax, Inc. • BASIC Stamp HomeWork Board ver 1.1 Page 17
Advanced LED Control
Another advantage to this program style is that we can cause the LED to follow the operation of a different value
within our program. We can do this because
Out15 is actually a bit-sized variable [a value that can change]. We
can copy another bit-sized variable to it and cause the LED to follow the value of that variable.
Listing 1d is a bit advanced, but you can handle it. Take a look and then we'll go into all the details.
' {$STAMP BS2}
' Program: LED Blink.BS2 (Version D)
' Purpose: Blinks an LED connected to the BASIC Stamp (advanced)
' ---------------------------------------------------------------
LedPin VAR Out15 ' LED on/off control
LedCtrl VAR Dir15 ' LED i/o pin control
blinkVal VAR Byte ' blink control value
blinkBit VAR Nib ' blink control bit
' ---------------------------------------------------------------
Initialize:
LedCtrl = %1 ' make LED pin an output
Start:
DEBUG CLS
FOR blinkBit = 0 TO 7 ' test all bits
FOR blinkVal = 0 TO 255 ' test all values
' report
DEBUG Home
DEBUG "Blink Value = ", DEC blinkVal, " ", CR
DEBUG "Blink Bit = ", DEC blinkBit, CR
DEBUG CR
DEBUG "Blink Value = ", BIN8 blinkVal, CR
DEBUG "Blink Bit = ", REP " "\(7 - blinkBit), "^ "
' control the LED
LedPin = blinkVal.LowBit(blinkBit)
PAUSE 5
NEXT
NEXT
GOTO Start
In this program we'll need a couple variables. The first is called blinkVal and it is defined as a Byte (8 bits). You'll
remember that a Byte can hold values from zero to 255. The other variable is called
blinkBit and is defined as a
Nib (4 bits). Being a Nib,
blinkBit can hold values from 0 to 15, but we only need it to go up to seven. We will use
blinkBit to point at a bit in blinkVal and the LED will follow that bit value. It will be on when the bit is a one; off when
the bit is a zero.
The main part of the program starts by opening the
DEBUG window and clearing it with CLS (clear screen). The
DEBUG statement allows the BASIC Stamp send messages to the PC. This will let us know what's going on
inside our program as it's running.
The bulk of the code is two
FOR-NEXT loops; one nested inside the other. The outside loop is controlled by
blinkBit and will run eight times (0 to 7). For each iteration of blinkBit, the inner loop, controlled by blinkVal will run
256 times (0 to 255). This is where the action takes place.