Home
BASIC Stamp Programming Manual
Contents
1. PBASIC2 Interpreter Chip Parallax Custom PIC16C57 lt Input Output Pins gt Output source 20mA each sink 25mA each Input leakage lt 1A pels eee Nene a E threshold 1 4V Se Mette Ca fens Pet Ses ee leah te Be et en SS 22 rey TAO a rrere QOaaaa Notes 1 This diagram depicts the DIP SOIC version of the PBASIC2 interpreter chip since users wishing to construct a BS2 from discrete components are most likely to use those parts Contact Parallax for a schematic depicting the SSOP ultra small surface mount package used in the BS2 IC module 2 Numbers in parenthesesN Nare pin numbers on the BS2 IC module The BS2 IC has the form factor of a 24 pin 0 6 DIP 3 Q1 Q2 and Q3 are Rohm part numbers Other components may be substituted in custom circuits subject to appropriate design Contact Parallax for design assistance 4 U3 and U4 are Seiko part numbers Other components may be substituted in custom circuits subject to appropriate design Contact Parallax for design assistance Parallax Inc BASIC Stamp Programming Manual 1 9 Page 207 BASIC Stamp Il PBASIC2 Interpreter Chip U1 The brain of the BS2 is a custom PIC16C57 microcontroller U1 U1 is permanently programmed with the PBASIC2 instruction set When you program the BS2 you are telling U1 to store symbols called tokens in EEPROM memory U2 When your program runs U1 retrieves to kens from memory
2. formatters with HEX 3 Replace all formatters with BIN 4 Replace all formatters with ASC 5 If variable has no formatters preceding it add the DEC formatter before variable e Signs type indicators strings and digit limitation formatting options are available for more flexibility Example BS1 DEBUG B0 B1 B2 BS2 DEBUG DEC AByte HEX AWord BIN ANibble Page 392 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C AS O eg TAE pa os vee Sis epa 1 Remove any DEC formatters preceding variables 2 Replace all DEC formatters with 3 Replace all HEX formatters with 4 Replace all BIN formatters with 5 Replace all ASC formatters with 6 Delete any formatting characters 7 Signs type indicators strings and digit limitation formatters are not available in the Stamp I Manual formatting will have to be done possibly multiple DEBUG statements to accomplish the same formatting Example BS2 DEBUG DEC AByte HEX AWord BIN ANibble CR BS1 DEBUG B0 B1 B2 CR Parallax Inc BASIC Stamp Programming Manual 1 9 Page 393 BASIC Stamp and Stamp II Conversions DATA BASIC Stamp EEPROM location data data e LOCATION is in the range 0 255 e DATA is a constant in the range 0 255 No variables are allowed BASIC Srtawe Il pointer DATA location W
3. ATN l 2 RES e D Tee E VSS la 2595 8 22 13 21 VDD Fon S 2008 2 3562 S Po sj 2222 re Bol P15 LT a ON P M oN ee ee ae R p1 fe a pry el P44 cada L T P2 22uf 10V ii 3 7 L AS R P13 F P3 ls a P12 lvss YN RES 2 27 Pa i RS Ele a P11 J voo s6 P156 goon ES Pup P5 ho 7 RX 22 P12 22 15 P10 IX pe ene pr Ng poho P6 ha A gx Ree 14 PO ge di mi Myvss apg 15 P7 h2 J 13 P8 PC Serial Port Connect DSR and RTS for NN Bx automatic port detection BS2 1C PC to BS2 IC connection Module Parallax Inc BASIC Stamp Programming Manual 1 9 Page 453 Appendix D Page 454 BASIC Stamp Programming Manual 1 9 Parallax Inc A ABS 236 Accessing I O pins 214 217 Addition 239 240 A D converter 8 bit Interfacing an 356 359 A D converter 12 bit Interfacing an 359 360 Aliases 221 224 Analog 1 0 141 144 205 PWM 205 293 295 423 424 RCTIME 205 298 301 AND logical amp 239 245 Application notes 347 363 A D converter 8 bit Interfacing an 356 359 A D converter 12 bit Interfacing an 359 360 Button Using Instruction Effectively 159 165 Networking Multiple Stamps 135 139 327 329 Phoneline Interface 361 363 Puls
4. ISHEX1 ISHEX4 1 to 4 digit indicated signed hexidecimal text BIN Binary text BIN1 BIN16 1 to 16 digit binary text SBIN Signed binary text ca SBIN1 SBIN16 1 to 16 digit signed binary text IB IN Indicated binary text prefix e g 10101100 IBIN1 IBIN16 1 to 16 digit indicated binary text 1 IS BIN Indicated signed binary text 2 ISBIN1 ISBIN16 1 to 16 digit indicated signed binary text 1 2 NOTES 1 Fixed digit modifiers like DEC4 will pad text with leading Os if necessary e g DEC4 65 sends 0065 If a number is larger than the specified number of digits the leading digits will be dropped e g DEC4 56422 sends 6422 2 Signed modifiers work under two s complement rules same as PBASIC2 math separate variable or in the last element of the array as in this example myText var byte 10 An array to hold the string myText 0 H myText 1 E Store HELLO in first 5 cells myText 2 L myText 3 L myText 4 O myText 9 5 Put length 5 in last cell Serout 1 16468 STR myText myText 9 Send HELLO Note that Serout s string capabilities work only with strings in RAM not EEPROM To send a string from EEPROM you must either 1 Read it byte by byte into an array then output it using one of the STR modifiers Page 324 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Table l 8 String Modifiers Used by Serout Modifier Action
5. BRANCH b2 case_0 case_1 case_2 This works exactly the same as the previous If Then example If the value isn t in range in this case if b2 is greater than 2 Branch does nothing and the program continues execution on thenextinstruction after Branch Demo Program This program shows how the value of the variable pick controls the destination of the Branch instruction pick var nib Variable to pick destination of Branch for pick 0 to 3 Repeat with pick 0 1 2 3 debug Pick DEC pick cr Show value of pick BRANCH pick zero one two Branch based on pick debug Pick exceeded of items cr in BRANCH list Fell through cr nextPick next Next value of pick stop zero debug Branched to zero cr cr goto nextPick one debug Branched to one cr cr goto nextPick Parallax Inc BASIC Stamp Programming Manual 1 9 Page 247 BASIC Stamp Il two debug Branched to two cr cr goto nextPick Page 248 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Button BUTTON pin downstate delay rate bytevariable targetstate address Debounce button input perform auto repeat and branch to address if buttonisin target state Button circuits may be active low oractive high e Pinis avariable constant 0 15 that specifies the I O pin to use This pin will be made an input e Downstate is a variable constant 0 or 1 that specifies which logical state occurs when the button is
6. During normal operation the BASIC Stamp II takes about 7 mA In vari ous power down modes consump tion can be reduced to about 50 pA BASIC Stamp Il Starting the Editor With the BASIC Stamp II connected and powered insert the BASIC Stamp diskette and then enter the BASIC Stamp II directory by typing the following command from the DOS prompt CD STAMP2 Once in the BASIC Stamp II directory you can run the BASIC Stamp II editor downloader software by typing the following command STAMP2 The software will start running after several seconds The editor screen is dark blue with one line across the top that indicates how to get on screen editor help Except for the top line the entire screen is available for entering and editing PBASIC programs Command line options There are several command line options that may be useful when run ning the software these options are shown below STAMP2 filename Runs the editor and loads filename STAMP2 m Runs the editor in monochrome mode May give a better display on some systems espe cially laptop computers STAMP2 n Runs the editor and specifies which serial port to use when downloading to the BASIC Stamp II note that n must be replaced with a serial port number of 1 4 Normally the software finds the BASIC Stamp II by looking on all se rial ports for a connection between DSR and RTS this connection is made on the carrier board If the DSR RTS connection is not p
7. debug bin 00001111 8 10101101 Show AND result 4000001101 Returns the bitwise OR of two values Each bit of the values is subject to the following logic 0ORO 0 00R1 1 10R0 1 10R1 1 The result returned by will contain 1s in any bit positions in which one or the other or both input values contain 1s Example debug bin 00001111 10101001 Show OR result 10101111 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 245 BASIC Stamp Il A Returns the bitwise XOR of two values Each bit of the values is subject to the following logic OXORO 0 0 XOR 1 1 1 XOR 0 1 1 XOR 1 0 The result returned by will contain 1s in any bit positions in which one or the other but not both input values contain 1s Example debug bin 00001111 10101001 Show XOR result 10100110 Page 246 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Branch BRANCH offset address0 address1 addressN Go to the address specified by offset if in range e Offset is a variable constant that specifies which of the listed address to go to 0 N e Addressesare labels that specify where to go Explanation Branch is useful when you might want to write something like this if b2 O then case_0 b2 0 go to label case_0 if b2 1 then case_1 b2 1 go to label case_1 if b2 2 then case_2 b2 2 go to label case_2 You can use Branch to organize this logic into a single statement
8. e MODE is a constant symbol expression or a bit nibble byte or word variable in the range 0 1 specifying the bit order 0 or LSBFIRST Isb first 1 or MSBFIRST msb first e DATA is a constant expression or a bit nibble byte or word vari able containing the data to send out e BITS is a constant expression or a bit nibble byte or word vari able in the range 1 16 specifying the number of bits of DATA to send The default is 8 De ON Beene aras bn 21S hak TETEE TTE Code such as the following SYMBOL Count B1 Counter variable SYMBOL CLK 0 Clock pin is pin O SYMBOL DATA PIN1 Data pin is pin 1 DIRS 00000011 Set Clock and Data pins as outputs BO 125 Value to be shifted out FOR Count 1TO8 DATA BIT7 Send out MSB of BO PULSOUT CLK 1 Clock the data BO BO 2 Shift the value left note that this causes us to lose the value NEXT Count when we re done shifting Parallax Inc BASIC Stamp Programming Manual 1 9 Page 441 May be converted to the following code Value VAR BYTE CLK CON 0 DATA CON 1 DIRS 0000000000000011 Value 125 SHIFTOUT DATA CLK MSBFIRST Value 8 CONVERSION BST S BSA 6 csp Code such as the following Value VAR BYTE CLK CON 0 DATA CON 1 DIRS 0000000000000011 Value 220 SHIFTOUT DATA CLK LSBFIRST Value 8 May be converted to the following code SYMBOL Count B1 SYMBOL CLK 0 SYMBOL DATA PIN1 DIRS 00000011 BO 2
9. BASIC Stamp Il STOP e Execution is frozen such as with the END command however low power mode is not entered and the I O pins never go into high impedance mode Conversion BS1 gt BS2 00 Code such as the following StopExecution GOTO StopExecution May be converted to the following code StopExecution STOP Conversion BS1 BS2 0 Code such as the following Quit STOP May be converted to the following code Quit GOTO Quit Parallax Inc BASIC Stamp Programming Manual 1 9 Page 445 BASIC Stamp and Stamp II Conversions TOGGLE BASIC Stamp TOGGLE pin e PIN is a constant or a bit byte or word variable in the range 0 7 BASIC Stamp II TOGGLE pin e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 o ON NN Gate eh a Ole E LAIN Aye e PIN may be a nibble variable and may be in the range 0 15 A BS ardido hich Geis gels a e A e PIN must not be a nibble variable and must be in the range 0 7 Example BS2 TOGGLE 15 BS1 TOGGLE 7 Page 446 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C WRITE BASIC Stamp WRITE location data e LOCATION is a constant or a bit byte or word variable in the range 0 255 e DATA is a constant or a bit byte or word variable BASIC Stamp Il WRITE location data e LOCATION is a constant expression or a bit nibble byte or word variable in the range 0 2047 e DATA is a constant
10. Page 304 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Reverse REVERSE pin Reverse the data direction of the specified pin e Pinis avariable constant 0 15 that specifies the I O pin to use This pin will be placed into the opposite ofits currentinput output mode by inverting the corresponding bit of the DIRS register Explanation Reverse is convenient way to switch the I O direction of a pin If the pin is an input and you Reverse it it becomes an output if it s an output Reverse makes it an input Remember that input really has two meanings 1 Setting a pin to input makes it possible to check the state 1 or 0 of external circuitry connected to that pin The state is in the corresponding bit of the INS register 2 Setting a pin to input also disconnects the output driver corresponding bit of OUTS The demo program below illustrates this second fact with a two tone LED blinker Demo Program Connect the circuit of figure I 16 to pin 0 and run the program below The LED will alternate between two states dim and bright What s happen ing is that the Reverse instruction is toggling pin 0 between input and output states When pin 0 is an input current flows through R1 through the LED through R2 to ground Pin 0 is effectively disconnected and doesn t play a part in the circuit The total resistance encountered by current flowing through the LED is R1 R2 440Q When pin 0 is Reversed
11. Try the example below with and without the CR at the end of the first Debug Debug A carriage return CR Debug starts a new line Technical Background Debug is actually a special case of the Serout instruction It is set for inverted RS 232 compatible serial output through the BS2 program ming connector SOUT on the BS2 IC at 9600 baud no parity 8 data bits and 1 stop bit You may view Debug output using a terminal programset to these parameters but youmustmodify either your carrier board or the Page 254 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il serial cable to temporarily disconnect pin 3 of the BS2 IC pin 4 of the DB 9 connector The reason is that the STAMP2 host software uses this line to reset the BS2 for programming while terminal software uses the same line to signal ready for serial communication If youmake this modification be sure to provide a way to reconnect pin 3 of the BS2 IC to pin 4 of the DB 9 connector for reprogramming With these pins disconnected the STAMP2 host software will not be able to download new programs Demo Program This demo shows the letters of the alphabet and their corresponding ASCII codes A brief pause slows the process down alittle so thatit doesn t goby inablur Youcan freeze the display while the program is running by pressing the space bar letter var byte Debug ALPHABET gt ASCII CHART BELL CR CR for letter A to Z Debug
12. When a pin is an output your program can change its state by writing to the corresponding bit in the OUTS variable For example OUTPUT 4 OUT4 1 Make pin 4 high 1 When your program changes a pin from input to output whatever state happens to be in the corresponding bit of OUTS sets the state of the pin To simultaneously make a pin an output and set its state use the High and Low instructions Demo Program This program demonstrates how the input output direction of a pin is determined by the corresponding bit of DIRS To set up the demo con nect a 10k resistor from 5V to P7 on the BS2 The resistor to 5V puts a high 1 on the pin when it s initially an input The BS2 then overrides this state by writing a low 0 to bit 7 of OUTS and executing Output 7 input 7 Make pin 7 an input debug State of pin 7 bin IN7 cr OUT7 0 Write O to output latch debug After O written to OUT7 bin IN7 cr OUTPUT 7 Make pin 7 an output debug After pin 7 changed to output bin IN7 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 287 BASIC Stamp Il Pause PAUSE milliseconds Pause the program do nothing for the specified number of millisec onds e Millisecondsis a variable constant specifying the length of the pause in ms Pauses may be up to 65535 ms 65 seconds long Explanation Pause delays the execution of the next program instruction for the speci fied number of milliseconds For examp
13. BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il a low 0 to bit 7 of OUTS and changing the pin to output INPUT 7 Make pin 7 an input debug State of pin 7 bin IN7 cr OUT7 0 Write O to output latch debug After O written to OUT7 bin IN7 cr output 7 Make pin 7 an output debug After pin 7 changed to output bin IN7 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 277 BASIC Stamp Il Lookdown LOOKDOWN value comparisonOp value0 value1 valueN resultVariable Compare a value to a list of values according to the relationship speci fied by the comparison operator Store the index number of the first value that makes the comparison true into result Variable If no value in the list makes the comparison true result Variable is unaffected e Valueis a variable or constant to be compared to the values in the list e ComparisonOp is optional and maybe one of the following equal lt gt not equal gt greater than less than gt greater than or equal to lt less than or equal to If no comparison operator is specified PBASIC2 uses equal e Valued value1 make up a list of values constants or variables up to 16 bits in size e ResultVariable is a variable in which the index number will be stored if a true comparison is found Explanation Lookdown works like the index in a book You search for a topic and the index gives you the page number Lookdow
14. go to the sender After Serin finishes receiving pin 0 goes high to tell the sender to stop If an inverted baudmode had been specified the fpin s repsonses would have been reversed Here s the relationship of serial polarity to fpin states Go Stop Inverted 1 0 Noninverted 0 1 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 317 BASIC Stamp Il Here s anexample that demonstrates fpin flow control Itassumes that two BS2s are powered up and connected together as shown in figure I 20 SENDER data out pin 1 flow control pin O Baudmode 9600 N8 inverted Serout 110 16468 HELLO Send the greeting RECEIVER data in pin 1 flow control pin O Baudmode 9600 N8 inverted letta var byte again Serin 110 16468 letta Get 1 byte debug letta Display on screen pause 1000 Wait a second goto again Without flow control the sender would transmit the whole word HELLO in about 6ms The receiver would catch the first byte at most by the time it got back from the first 1 second Pause the rest of the data would be long gone With flow control communication is flawless since the sender waits for the receiver to catch up In figure 1 20 pin 0 fpin is pulled to ground through a 10k resistor This is to ensure that the sender sees a stop signal 0 for inverted comms when the receiver is being programmed Demo Program See the examples above Figure 1 20 Host PC for Debug progra
15. s output driver 2 The corresponding bit of the OUTS variable must contain a 1 High performs both of these actions with a single fast instruction Demo Program This program shows the bitwise state of the DIRS and OUTS variables before and after the instruction High 4 You may also connect an LED to pin P4 as shown in figure 1 5 to see it light when the High instruction executes debug Before cr debug bin16 dirs bin16 outs cr cr pause 1000 HIGH 4 debug After cr debug bin16 dirs bin16 outs Figure l 5 I O pin A LED 2200 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 269 BASIC Stamp Il if Then IF condition THEN addressLabel Evaluate condition and if true go to the point in the program marked by addressLabel e Condition is a statement such as x 7 that can be evaluated as true or false e AddressLabelis a label that specifies where to go inthe event that the condition is true Explanation If Then is PBASIC s decision maker It tests a condition and if that condition is true goes to a point in the program specified by an address label The condition that If Then tests is written as a mixture of com parison and logic operators The comparison operators are equal lt gt not equal gt greater than lt less than gt greater than or equal to lt less than or equal to The values to be compared can be any combination of variables
16. 4 is dropped so we get 1 instead of 1 5 Given the potential for misinterpretation we must use parentheses to make our mathematical intentions clear to the BS2 not to mention ourselves and other programmers who may look at our program With parentheses Enclosing a math operation in parentheses gives it prior ity over other operations For example in the expression 1 3 4 the 3 4 would be computed first then added to 1 To make the BS2 compute the previous expression in the conventional BASIC way you would write it as 12 3 2 4 Within the parenthe ses the BS2 works from left to right If you wanted to be even more specific you could write 12 3 2 4 When there are parentheses within parentheses the BS2 works from the innermost parentheses outward Parentheses placed within parentheses are said to be nested The BS2 lets you nest parentheses up to eight levels deep Parallax Inc BASIC Stamp Programming Manual 1 9 Page 233 BASIC Stamp Il Integer Math The BS2 performs all math operations by the rules of positive integer math That is it handles only whole numbers and drops any fractional portions from the results of computations Although the BS2 can inter pret two s complement negative numbers correctly in Debug and Serout instructions using modifiers like SDEC for signed decimal in calcu lations it assumes that all values are positive This yields correct re sults with two s complement negative num
17. If BS2s in a network used the always driven baudmodes two BS2s could simultaneously output opposite states This would create a short circuit from 5V to ground through the output drivers of the BS2s The heavy current flow would likely damage the BS2s and it would certainly prevent communication Since the open baudmodes only drive in one state and float in the other there s no chance of this kind of short The polarity selected for Serout determines which state is driven and which is open as follows Polarity Resistor State Inverted Noninverted Pulled to 0 open driven GND 1 driven open 5V Parallax Inc BASIC Stamp Programming Manual 1 9 Page 327 BASIC Stamp Il Since open baudmodes only drive to Figure l 23 one state they need a resistor to pull the network into the other state as shown in the table above and in fig ure I 23 Open baudmodes allow the BS2s to share a party line butitis up to your program toresolve othernetworking issues like who talks when and how to prevent detect and fix data errors In the example shown in figure I 24 and the program listings below two BS2ssharea party line They monitor the serial line for aspecific cue ping or pong then transmit data A PC may monitor net activity via a line driver or CMOS inverter as shown in the figure Net 1 This BS2 sends the word ping followed by a linefeed and carriage return for the sake of
18. While waiting for button randomize button 7 0 250 100 btn 0 hold Wait for button branch coin head tail If O then head if 1 then tail head debug cr HEADS Show heads heads heads 1 Increment heads counter goto theNext Next flip tail debug cr TAILS Show tails tails tails 1 Increment tails counter theNext Next flip next When done show the total number of heads and tails debug cr cr Heads dec heads Tails dec tails Figure l 13 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 297 BASIC Stamp Il RCtime RCTIME pin state resultVariable Count time while pin remains in state usually to measure the charge discharge time of resistor capacitor RC circuit e Pinisavariable constant 0 15 that specifies the I O pin to use This pin willbe placed into input mode and left in that state when the instruction finishes e State is a variable or constant 1 or 0 that will end the RCtime period e ResultVariable isa variable in which the time measurement 0 to 65535 in 21s units will be stored Explanation RCtime can be used to measure the charge or discharge time of a resis tor capacitor circuit This allows you to measure resistance or capaci tance use R or C sensors such as thermistors or capacitive humidity sensors or respond to user input through a potentiometer In a broader sense RCtime can also serve as a fast precise stopwatch for events
19. e The optional unary operator may now also include SQR ABS DCD NCD COS and SIN e The binary operators can now include DIG lt lt gt gt and REV Example BS1 LET b0 10 16 BS2 Result 10 16 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 399 BASIC Stamp and Stamp II Conversions A O 1 Remove any unary operator other than minus and modify the equation as appropriate if possible 2 The binary operator can not be DIG lt lt gt gt or REV 3 VARIABLE and VALUE must not be a nibble variable Example BS2 Result 0001 16 BS1 bO 1110 16 Page 400 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C FOR NEXT BASIC Stamp FOR variable start TO end STEP stepval NEXT variable e Up to 8 nested FOR NEXT loops are allowed e VARIABLE is a bit byte or word variable e START is a constant or a bit byte or word variable e END is a constant or a bit byte or word variable e STEPVAL is a constant or a bit byte or word variable e VARIABLE after NEXT must be the same as VARIABLE after FOR BASIC Stamp Il FOR variable start TO end STEP stepval NEXT e Up to 16 nested FOR NEXT loops are allowed e VARIABLE is a bit nibble byte or word variable e START is a constant expression or a bit nibble byte or word variable e END is a constant expression or a bit nibble byte or word variable e STEPVAL is an
20. expression or a bit nibble byte or word variable COMERS ON POS tas ebria e e LOCATION and DATA may be a nibble variable for efficiency e LOCATION may be in the range 0 2047 Conversion BS1 BS2 e LOCATION and DATA must not be a nibble variable e LOCATION must be in the range 0 255 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 447 BASIC Stamp and Stamp II Conversions XOUT BASIC Stamp NO EQUIVELANT COMMAND BASIC Stamp Il XOUT mpin zpin house keyorcommand cycles house keyorcommand cycles e MPIN is a constant expression or a bit nibble byte or word vari able in the range 0 15 specifying the modulation pin e ZPIN is a constant expression or a bit nibble byte or word vari able in the range 0 15 specifying the zero crossing pin e HOUSE is a constant expression or a bit nibble byte or word vari able in the range 0 15 specifying the house code A P respectively e KEYORCOMMAND is a constant expression or a bit nibble byte or word variable in the range 0 15 specifying keys 1 16 respec tively or is one of the commands in the following table X 10 Commands X 10 Command symbol Value UNITON 10010 UNITOFF 11010 UNITSOFF 11100 LIGHTSON 10100 DIM 11110 BRIGHT 10110 e CYCLES is a constant expression or a bit nibble byte or word variable in the range 2 65535 specifying the number of cycles to send Default is 2
21. plications relay contacts result var word again low 6 Energize relay coil RCTIME 7 1 result Measure time to contact closure debug Time to close dec result cr high 6 Release the relay pause 1000 Wait a second goto again Do it again Parallax Inc BASIC Stamp Programming Manual 1 9 Page 301 BASIC Stamp Il Read READ ocation variable Read EEPROM location and store value in variable e Locationisa variable constant 0 2047 thatspecifies the EEPROM address to read from e Variable holds the byte value read from the EEPROM 0 255 Explanation The EEPROM is used for both program storage which builds down ward from address 2047 and data storage which builds upward from address 0 The Read instruction retrieves a byte of data from any EEPROM address Although it s unlikely that you would want to read the compressed tokens that make up your PBASIC2 program storing and retrieving long term data in EEPROM is a very handy capability Data stored in EEPROM is not lost when the power is removed The demo program below uses the Data directive to preload the EEPROM with a message see the section BS2 EEPROM Data Storage for a com plete explanation of Data Programs may also write to the EEPROM see Write Demo Program This program reads a string of data stored in EEPROM The EEPROM data is downloaded to the BS2 at compile time immediately after you press ALT R and remains ther
22. used by controller peripherals like ADCs DACs clocks memory de vices etc Trade names for synchronous serial protocols include SPI and Microwire At their heart synchronous serial devices are essentially shift registers Page 334 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il trains of flip flops that pass data bits along in a bucket brigade fashion to a single data output pin Another bit is input each time the appropri ate edge rising or falling depending on the device appears on the clock line BS2 application note 2 explains shift register operation in detail A single Shiftout instruction causes the following sequence of events Makes the clock pin cpin output low Copiesthestate of thenext data bitto be output working from oneend of the data to the other to the dpin output latch corresponding bit of the OUTS variable Makes the data pin dpin an output Pulses the clock pin high for 14ps Repeats the sequence of outputting data bits and pulsing the clock pin until the specified number of bits is shifted into the variable Making Shiftout work witha par Figure 1 26 ticular device is a matter of match ing the mode and number of bits to that device s protocol Most eel manufacturers use a timing dia scale gram toillustrate the relationship of clock and data Figure 1 26 shows Shiftout s timing begin ning at the moment the Shiftout instruction first executes Timing values
23. 1 Charge the cap rctime 7 1 result Measure resistance result result 42 100 Scale to fit one byte 0 255 debug Storing dec result tab at dec EEaddr cr WRITE EEaddr result Store it in EEPROM pause 1000 Wait a second Page 342 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il next Do until all samples done pause 2000 debug cls Wait 2 seconds then clear screen for EEaddr log to endLog Retrieve each sample from EEPROM read EEaddr result Read back a byte debug Reading dec result tab at dec EEaddr cr next Do until all samples retrieved stop Parallax Inc BASIC Stamp Programming Manual 1 9 Page 343 BASIC Stamp Il Xout XOUT mpin zpin house keyOrCommand cycles house keyOrCommand cycles Send an X 10 powerline control command through the appropriate powerline interface e Mpinis the I O pin 0 15 that outputs X 10 signals modulation to the powerline interface device This pin is placed into output mode e Zpinisthel O pin 0 15 that inputs the zero crossing signal from the powerline interface device This pin will be placed into input mode e Houseis the X 10 house code values 0 15 representing letters A through P e KeyOrCommand is a key on a manual X 10 controller values 0 15 representing keys 1 through 16 or an X 10 control command listed in the table below In Xout instructions youcan use either the command value or the built
24. 1 9 Parallax Inc BASIC Stamp Il PWM PWM pin duty cycles Convert a digital value to analog output via pulse width modulation e Pinis a variable constant 0 15 that specifies the I O pin to use This pin willbe placed into output mode during pulse generation then switched to input mode when the instruction finishes e Dutyisa variable constant 0 255 that specifies the analog output level 0 to 5V e Cyclesisa variable constant 0 65535 specifying an approximate number of milliseconds of PWM output Explanation Pulse width modulation PWM allows the BS2 a purely digital de vice to generate an analog voltage The basic idea is this If you make a pin output high the voltage at that pin will be close to 5V Output low is close to OV What if you switched the pin rapidly between high and low so that it was high half the time and low half the time The average voltage over time would be halfway between 0 and 5V 2 5V This is the idea of PWM that you can produce an analog voltage by outputting a stream of digital 1s and 0s in a particular proportion The proportion of 1s to Os in PWM is called the duty cycle The duty cycle controls the analog voltage in a very direct way the higher the duty cycle the higher the voltage In the case of the BS2 the duty cycle can range from 0 to 255 Duty is literally the proportion of 1s to 0s output by the PWM instruction To determine the proportional PWM output voltage use this
25. 255 0 WkspcByte 1 ButtonWasPressed Conversion BSTC BS2 0020 ccoo 1 PIN must be a constant or a bit byte or word variable in the range 0 7 2 No arguments may be nibble variables Example BS2 BUTTON 12 1 255 0 WkspcByte 1 ButtonWasPressed BS1 BUTTON 7 1 255 0 BO 1 ButtonWasPressed Page 388 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C COUNT BASIC Stamp NO EQUIVELANT COMMAND BASIC Stawp Il COUNT pin period result e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 e PERIOD is a constant expression or a bit nibble byte or word variable in the range 0 65535 e RESULT is a bit nibble byte or word variable pa TA No conversion possible Parallax Inc BASIC Stamp Programming Manual 1 9 Page 389 BASIC Stamp and Stamp II Conversions BASIC Stamp DEBUG outpuidata outputdata e OUTPUTDATA is a text string bit byte or word variable no con stants allowed e If no formatters are specified DEBUG defaults to variablename value carriage return FORMATTERS The following formatting characters may precede the variable name displays value in decimal followed by a space displays variablename value carriage return where value is in hexidecimal displays variablename value carriage return where value is in binary displays variablename character ca
26. 2ps units Explanation Pulsout combines several actions into a single instruction It puts the specified pin into output mode by writing a 1 to the corresponding bit of DIRS inverts the state of that pin s OUTS bit waits for the specified number of 21s units then inverts the corresponding bit of OUTS again returning the bit to its original state An example PULSOUT 5 50 Make a 100 us pulse on pin 5 The polarity of the pulse depends on the state of the pin s OUTS bit when the instruction executes In the example above if OUT5 0 then Pulsout 5 50 produces a 100us positive pulse If the pin is an input the OUTS bit won t necessarily match the state of the pin What does Pulsout do then Example pin 7 is an input DIR7 0 and pulled high by a resistor as shown in figure I 10a Suppose that OUT7 is 0 when we execute the instruction PULSOUT 7 5 10 us pulse on pin 7 Figure I 10b shows the sequence of events as they would look on an oscilloscope Initially pin 7 is high Its output driver is turned off be cause it is in input mode so the 10k resistor sets the state on the pin When Pulsout executes it turns on the output driver allowing OUT7 to control the pin Since OUT is low the pin goes low After a few micro seconds of preparation Pulsout inverts OUT7 It leaves OUT in that state for 10hs then inverts it again leaving OUT in its original state This sequence of events is different from the original Basic
27. 3313 11505 600 18030 26222 1646 9838 1200 17197 25389 813 9005 2400 16780 24972 396 8588 4800 16572 24764 188 8380 9600 16468 24660 84 8276 19200 16416 24608 32 8224 38400 16390 24582 6 8198 Note Ifthe dedicated serial port rpin 16 is used all data is inverted regardless of the baudmode setting Simple Input and Numeric Conversions Stripped to just the essentials Serin can be as simple as Serin rpin baudmode inputData For example to receive a byte through pin 1 at 9600 bps 8N inverted serData var byte Serin 1 16468 serData Serin would wait for and receive a single byte of data through pin 1 and store it in the variable serData If the Stamp were connected to a PC running a terminal program set to the same baud rate and the user pressed the A key on the keyboard after Serin the variable serData would con tain 65 the ASCII code for the letter A See the ASCII character chart in the appendix If you wanted to let the user enter a decimal number at the keyboard and put that value into serData the appropriate Serin would be serData var byte Serin 1 16468 DEC serData The DEC modifier tells Serin to convert decimal numeric text into binary form and store the result in serData Receiving 123 followed by a space or other non numeric text results in the value 123 being stored in Page 310 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Table l 4
28. 422 PULSIN 204 289 290 420 421 PULSOUT 205 291 292 422 PWM 205 293 295 423 424 PWM for analog output Using 141 144 Q Qualifiers serial comm 313 314 R Radian binary 238 RAM 213 225 378 384 RAM space and register allocation 378 384 RANDOM 204 296 297 425 RCTIME 205 298 301 426 428 READ 206 302 303 429 Reading data 206 213 302 303 341 343 397 Reading potentiometers 205 298 301 Reading pulses 289 290 Reset Circuit 209 210 Pin 200 Voltage threshold 209 210 Reserved words 367 RETURN 204 304 REV 239 245 REVERSE 204 305 306 430 RS 232 210 308 309 Rumning a program 202 Running the editor 201 Run time 231 232 Run time math and logic 231 246 S Saving programs 202 Schematic BASIC Stamp II components DIP SOIC 207 BS2 IC module SSOP 452 Serial communication asynchronous Baud mode table 310 312 321 322 Flow control 317 318 326 327 From a PC figure 212 309 1 0 pins 211 308 309 320 321 Modifiers table 311 324 Networking 327 329 Networking figure 328 Numeric Strings 310 313 322 325 Page 462 BASIC Stamp Programming Manual 1 9 Parallax Inc Open signaling 327 329 Pacing 325 Parity and parity errors 315 316 Qualifiers 313 314 RS 232 210 308 309 SERIN 205 307 318 431 434 SEROUT 205 319 329 435 438 Speed considerations 309 310 Timeout 316 327 To a PC figure 212 320 Serial communication synchronous Application no
29. 576 ms 6 64 1152 ms 1 152 seconds 7 128 2304 ms 2 304 seconds Explanation Nap uses the same shutdown startup mechanism as Sleep with one big difference During Sleep the BS2 automatically compensates for varia tions in the speed of the watchdog timer oscillator that serves as its alarm clock As a result longer Sleep intervals are accurate to approxi mately 1 percent Nap intervals are directly controlled by the watchdog timer without compensation Variations in temperature supply voltage and manufacturing tolerance of the BS2 interpreter chip can cause the actual timing to vary by as much as 50 100 percent i e a period 0 Nap can range from 9 to 36 ms Atroom temperature with a fresh battery or other stable power supply variations in the length of a Nap will be less than 10 percent If your application is driving loads sourcing or sinking current through output high or output low pins during a Nap current will be inter rupted for about 18 ms when the BS2 wakes up The reason is that the watchdog timer reset that awakens the BS2 also causes all of the pins to switch to input mode for approximately 18 ms When the PBASIC2 inter preter firmware regains control of the processor it restores the Parallax Inc BASIC Stamp Programming Manual 1 9 Page 285 BASIC Stamp Il I O direction dictated by your program If you plan to use End Nap or Sleep in your programs make sure that your loads can toler ate these
30. 9 Parallax Inc BASIC Stamp Il The commonsense rule for combining modifiers is that they must get progressively smaller from left to right It would make no sense to specify for instance the low byte of a nibble because a nibble is smaller than a byte And just because you can stack up modifiers doesn t mean that you should unless it is the clearest way to express the location of the part you want get at The example above might be improved rhino var word A 16 bit variable eye var rhino bit9 A bit Although we ve only discussed variable modifiers in terms of creating alias variables you can also use them within program instructions Example rhino var word A 16 bit variable head var rhino highbyte Highest 8 bits of rhino rhino 13567 debug head Show the value of alias variable head debug rhino highbyte rhino highbyte works too stop You ll run across examples of this usage in application notes and sample programs it s sometimes easier to remember one variable name and specify parts of it within instructions than to define and remember names for the parts Modifiers also work with arrays for example myBytes var byte 10 Define 10 byte array myBytes 0 AB Hex AB into Oth byte debug hex myBytes lownib 0 Show low nib B debug hex myBytes lownib 1 Show high nib A If you looked closely at that example you probably thought it was a misprint Shouldn t myBytes low
31. B4 General Purpose word byte B5 nibble and bit addressable W3 B6 General Purpose word byte B7 nibble and bit addressable W4 B8 General Purpose word byte B9 nibble and bit addressable W5 B10 General Purpose word byte B11 nibble and bit addressable W6 B12 General Purpose word byte B13 nibble and bit addressable W7 B14 General Purpose word byte B15 nibble and bit addressable w8 B16 General Purpose word byte B17 nibble and bit addressable w9 B18 General Purpose word byte B19 nibble and bit addressable B20 General Purpose word byte B21 nibble and bit addressable B22 General Purpose word byte B23 nibble and bit addressable B24 General Purpose word byte B25 nibble and bit addressable Page 382 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C 1 Remove the SYMBOL directive from variable or constant decla rations 2 On all variable declarations replace the predefined register name to the right of the with the corresponding variable type or reg ister name according to the following table BS1 to BS2 Register Allocation Conversion Stamp Register Name Stamp II Variable Type Register Name PORT NO EQUIVALENT PINS or PINO PIN7 INS OUTS or INO IN7 OUTO OUT7 DIRS or DIRO DIR7 DIRS or DIRO DIR7 WO W6 WORD BO B13 BYTE BITO BIT15 BIT The PORT control regis
32. Character letter tab ASCII code dec letter cr pause 200 next Parallax Inc BASIC Stamp Programming Manual 1 9 Page 255 BASIC Stamp Il Table l 1 Debug Modifiers Modifier Effect ASC Displays variablename character carriage return where character is an ASCII character DEC 1 5 Decimal text optionally fixed for 1 to 5 digits SDEC 1 5 Signed decimal text optionally fixed for 1 to 5 digits HEX 1 4 Hexadecimal text optionally fixed for 1 to 4 digits SHEX 1 4 Signed hex text optionally fixed for 1 to 4 digits IHEX 1 4 Indicated hex text prefix e g 7A3 optionally fixed for 1 to 4 digits ISHEX 1 4 Indicated signed hex text optionally fixed for 1 to 4 digits BIN 1 16 Binary text optionally fixed for 1 to 16 digits SBIN 1 16 Signed binary text optionally fixed for 1 to 16 digits IBIN 1 16 Indicated binary text prefix e g 10101100 optionally fixed for 1 to 16 digits ISBIN 1 16 Indicated signed binary text optionally fixed for 1 to 16 digits STRbytearray Display an ASCII string from bytearray until byte 0 STR bytearray n Display an ASCII string consisting of n bytes from bytearray REP byte n Display an ASCII string consisting of byte repeated n times e g REP X 10 sends XXXXXXXXXX NOTES 1 Fixed digit modifiers like DEC4 will pad text with leading Os if necessary e g DEC4 65 sends 0065 If anumber is
33. I O pins is approximately 50pA End keeps the BS2 inactive until the reset button is pushed or the power is cycled off and back on Just as during Sleep intervals pins will retain their input or output settings after the BS2 is deactivated by End So if a pin is driving a load when End occurs it will continue to drive that load after End However at approximate 2 3 second intervals output pins will disconnect gointo inputmode fora period of approximately 18 ms Then they will revert to their former states Forexample if the BS2 is driving an LED on when End executes the LED will stay lit after end But every 2 3 seconds there will be a visible wink of the LED as the output pin driving it disconnects for 18 ms Page 260 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il For Next FOR variable start to end STEP stepVal NEXT Create a repeating loop that executes the program lines between For and Next incrementing or decrementingvariableaccording tostep Valuntil the value of the variable passes the end value e Variable is a bit nib byte or word variable used as a counter e Startis a variable or constant that specifies the initial value of the variable e End is a variable or constant that specifies the end value of the variable When the value of the variable passesend the For Next loop stops executing and the program goes on to the instruction after Next e StepValis an optional variab
34. INA INB INC IND INO IN7 IN8 IN15 Input pins word byte nibble and bit addressable OUTS OUTL OUTH OUTA OUTB OUTC OUTD OUTO OUT7 OUTS OUT15 Output pins word byte nibble and bit addressable DIRS DIRL DIRH DIRA DIRB DIRC DIRD DIRO DIR7 DIR8 DIR15 1 0 pin direction control word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable General Purpose word byte nibble and bit addressable The Input Output 1 0 Variables General Purpose word byte nibble and bit addressable As the map shows the first three words of the memory map are asso ciated with the Stamp s 16 I O pins The word variable INS is unique in that it is read only The 16 bits of INS reflect the bits present at Stamp I O pins
35. INS or INO IN7 CONNER SION a oS e ubapa es Sut Suis Seed tal 1 If the INS or OUTS symbol is specified to the left of the conditional operator replace it with PINS 2 If the logical operator NOT is specified remove it and switch the conditional operator to negative logic 3 If one of the values is an expression you must perform the calcula tion in a dummy variable outside of the IF THEN statement Example BS2 IF NOT FirstValue gt LastValue 2 NextValue THEN Loop BS1 Temp 2 NextValue LastValue IF FirstValue lt Temp THEN Loop Page 408 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C INPUT BASIC Stamp INPUT pin e PIN is a constant expression or a bit byte or word variable in the range 0 7 BASIC Stamp Il INPUT pin e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 A A aha i dead tee tds db e PIN may be a nibble variable in the range 0 15 O AS retos Do leet Hatta se e PIN must not be a nibble variable and must be in the range 0 7 only Example BS2 INPUT 15 BS1 INPUT 7 e Parallax Inc BASIC Stamp Programming Manual 1 9 Page 409 BASIC Stamp and Stamp II Conversions LET BASIC Stamp LET variable value value value e VARIABLE is a bit byte or word variable e VALUE is a constant or a bit byte or word variable 9 2 is 7 1 MIN MAX amp 1 4 amp he BASIC Stamp Il varia
36. Inc BASIC Stamp Programming Manual 1 9 Page 249 BASIC Stamp Il a rapid fire stream of characters appears on the screen Button s auto repeat function can be set up to work much the same way Button is designed to be used inside a program loop Each time through the loop Button checks the state of the specified pin When it first matches downstate Button debounces the switch Then in accordance with targetstate it either branches to address targetstate 1 or doesn t targetstate 0 If the switch stays in downstate Button counts the number of program loops that execute When this count equals delay Button once again triggers the action specified by targetstate and address Hereafter if the switch remains indownstate Button waitsratenumber of cycles between actions Button does not stop program execution In order for its delay and autorepeat functions to work properly Button must be executed from within a program loop Demo Program Connect the active low circuit shown in figure I 1 to pin P7 of the BS2 When you press the button the Debug screen will display an asterisk Feel free to modify the programtoseethe effects of your changes on the way Button responds btnWk var byte Workspace for BUTTON instruction btnWk 0 Clear the workspace variable Try changing the Delay value 255 in BUTTON to see the effect of its modes O no debounce 1 254 varying delays before autorepeat 255 no0 autorepe
37. NEXT Again until reps gt 65500 The value of reps increases by 3000 each trip through the loop As it approaches the stop value an interesting thing happens 57000 60000 Page 262 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il 63000 464 3464 It passes the stop value and keeps going That s because the result of the calculation 63000 3000 exceeds the maximum capacity of a 16 bit number When the value rolls over to 464 it passes the test Is w1 gt 65500 used by Next to determine when to end the loop Demo Program Here s an example that uses a For Next loop to churn out a series of sequential squares numbers 1 2 3 4 raised to the second power by using a variable to set the For Next stepVal and incrementing stepVal within the loop Sir Isaac Newton is generally credited with the discovery of this technique square var byte For Next counter and series of squares stepSize var byte Step size which will increase by 2 each loop stepSize 1 square 1 EN for square 1 to 250 step stepSize Show squares up to 250 debug dec square Display on screen stepSize stepSize 2 Add 2 to stepSize next Loop til square gt 250 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 263 BASIC Stamp Il Freqout FREQOUT pin duration freq1 freq2 Generate one or two sine wave tones for a specified duration e Pinisavariable constant 0 15 that specifies the I O pin
38. Numeric Conversion Modifiers Used by Serin COX Numerie Gharaciare nos DEC1 DEC5 1 to 5 digit decimal 0 1 2 3 4 5 6 7 8 9 1 SDEC Signed decimal 0 1 2 3 4 5 6 7 8 9 1 2 SDEC1 SDEC5 1 to 5 digit signed decimal 0 1 2 3 4 5 6 7 8 9 HEX Hexadecimal hex 0 1 2 3 4 5 6 7 8 9 A B C D E 1 3 HEX1 HEX4 1 to 4 digit hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E 1 3 SHEX Signed hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E SHEX1 SHEX4 1 to 4 digit signed hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F IHEX Indicated hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F ISHEX Indicated signed hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F ISHEX1 ISHEX4 1 to 4 digit indicated signed hex 0 1 2 3 4 5 6 7 8 9 A B C D E F Binary SBIN Signed binary SBIN1 SBIN16 1 to 16 digit signed binary IBIN Indicated binary IBIN1 IBIN16 1 to 16 digit indicated binary ISBIN Indicated signed binary ISBIN1 ISBIN16 1 to 16 digit indicated signed binary 1 2 4 NOTES 1 Allnumeric conversions will continue to accept new data until receiving either the specified number of digits e g three digits for DEC3 or a non numeric character 2 To be recognized as part of a number the minus sign must immediately precede a numeric character The character occurring in non numeric text is ignored and any character including a space between a minus and a number causes the minus to be ignored 3 The hex modifiers are not case sensitive a through f
39. O pins These possibilities are summarized in the Figure M 1 below To avoid making the table huge we ll look at only one bit The rules shown for a single bit apply to all of the I O bits pins Additionally the external circuitry producing the external state listed in the table can be over ridden by a Stamp output For example a 10k resistor to 5V will place a1 onan input pin but if that pin is changed to output and cleared to 0 a 0 will appear on the pin just as the table shows However if the pin is connected directly to 5V and changed to output 0 the pin s state will remain 1 The Stamp simply cannot overcome a direct short and will probably be damaged in the bargain Parallax Inc BASIC Stamp Programming Manual 1 9 Page 215 BASIC Stamp Il Figure M 1 Interaction of DIRS INS and OUTS The DIRS register controls which I O pins are inputs and which are outputs When setto input 0 the corresponding bitin the OUTS register is disconnected and ignored When set to output 1 the corresponding bit in the OUTS register is connected NOTE X indicates state could be a 1 or a 0 and does not affect other elements 2 indicates state is unknown and could change erratically VO Pin External Circultry To summarize DIRS determines whether a pin s state is set by exter nal circuitry
40. PO through P15 It may only be read not written OUTS con Page 214 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il tains the states of the 16 output latches DIRS controls the direction input or output of each of the 16 pins If you are new to devices that can change individual pins between in put and output the INS OUTS DIRS trio may be a little confusing so we ll walk through the possibilities A0 in a particular DIRS bit makes the corresponding pin PO through P15 an input So if bit 5 of DIRS is 0 then P5 is an input A pin that is an input is at the mercy of circuitry outside the Stamp the Stamp cannot change its state When the Stamp is first powered up all memory loca tions are cleared to 0 so all pins are inputs DIRS 0000000000000000 A1 ina DIRS bit makes the corresponding pin an output This means that the corresponding bit of OUTS determines that pin s state Suppose all pins DIRS are set to output 1s and you look at the con tents of INS What do you see You see whatever is stored in the vari able OUTS OK suppose all pins DIRS are set to input 0s and external circuits connected to the pins have them all seeing 0s What happens to INS if you write 1s to all the bits of OUTS Nothing INS will still contain Os because with all pins set to input the external circuitry is in charge However when you change DIRS to output 1s the bits stored in OUTS will appear on the I
41. PULSIN 15 1 Result BS1 PULSIN 7 1 WO Parallax Inc BASIC Stamp Programming Manual 1 9 Page 421 BASIC Stamp and Stamp II Conversions PULSOUT BASIC Stamp PULSOUT pin time e PIN is a constant or a bit byte or word variable in the range 0 7 e TIME is a constant or a bit byte or word variable in the range 0 65535 representing the pulse width in 10uS units BASIC Stamp Il PULSOUT pin period e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 e PERIOD is a constant expression or a bit nibble byte or word variable in the range 0 65535 representing the pulse width in 2uS units Conversion BS1 gt B852 0 1 PERIOD TIME 5 e PIN may be a nibble variable in the range 0 15 Example BS1 PULSOUT 1 10 BS2 PULSOUT 1 50 Conversion BS1 amp BS2000 1 TIME PERIOD 5 e PIN must be in the range 0 7 and must not be a nibble variable Example BS2 PULSOUT 15 25 BS1 PULSOUT 7 5 Page 422 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C PWM BASIC Stamp PWM pin duty cycles e PIN is a constant or a bit byte or word variable in the range 0 7 e DUTY is a constant or a bit byte or word variable in the range 0 255 e CYCLES is a constant or a bit byte or word variable in the range 0 255 representing the number of 5ms cycles to output BASIC Stamp Il PWM pin duty cycles e PIN is a constant expression or a
42. Programming Manual 1 9 Parallax Inc BASIC Stamp Il Table l 5 String Collection and Sequence Matching Modifiers Used By Serin Action Input a string of length L into an array If specified an end STR bytearray L E character E causes the string input to end before reaching length L Remaining bytes are filled with Os zeros WAIT value value Wait for a sequence of bytes which may be expressed as a WAIT text quoted text string up to six bytes characters long Wait for a sequence of bytes matching a string stored in an WAITSTR bytearray array The end of the array string is marked by a byte containing 0 zero SKIP L Ignore L bytes of serial input serString var byte 10 Make a 10 byte array serString 9 0 Put 0 in last byte SERIN 1 16780 STR serString 9 Stop at or 9 bytes debug str serString Display the string If the serial input were hello Debug would display hello since it collects bytes up to but not including the end character It fills the un used bytes up to the specified length with 0s Debug s normal STR modi fier understands a 0 to mean end of string However if you use Debug s fixed length string modifier STR bytearray n you will inadvertently clear the Debug screen The fixed length specification forces Debug to read and process the 0s at the end of the string and 0 is equivalent to Debug s CLS clear screen instruction Be alert for the consequ
43. STR bytearray Send a string from bytearray until byte 0 STR bytearray n Send a string consisting of n bytes from bytearray Send a string consisting of byte repeated n times e g REP REP byte n yte X 10 sends XXXXXXXXXX or 2 Read and output one byte at a time Since either approach requires Reading individual bytes method 2 would be simpler The demo pro gram for the Read instruction gives an example making it work with Serout requires changing Debug debug char Show character on screen to Serout as in this example Serout 1 16468 char Send the character If you have just a few EEPROM strings and don t need to manipulate them at runtime the simplest method of all is to use separate Serouts containing literal text as shown in the previous section Using the Pacing Option and a Serout Debug Trick Serout allows you to pace your serial transmission by inserting a time delay of 1 to 65535 ms between bytes Put the pacing value between the baudmode and the outputData list like so Serout 1 16468 1000 Slowly 1 sec delay between charac ters Suppose you want to preview the effect of that 1 second pacing without the trouble of booting terminal software and wiring a connector You can use the BS2 Debug window as a receive only terminal Tell Serout to send the data through pin 16 the programming connector at 9600 baud Debug cls Open a cleared Debug window Serout 16 84 1000 Slowly
44. Tell it to turn ON pause 1000 Wait a second xout mPin zPin houseA unitoff Tell it to turn OFF The next example talks to a dimmer module Dimmers go from full Page 350 BASIC Stamp Programming Manual 1 9 Parallax Inc 1 X 10 Control BASIC Stamp Il Application Notes ON to dimmed OFF in 19 steps Because dimming is relative to the current state of the lamp the only guaranteed way to seta predefined brightness level is to turn the dimmer fully OFF then ON then dim to the desired level Otherwise the final setting of the module will depend on its initial brightness level xout mPin zPin houseA Unit2 Talk to Unit 2 This example shows how to combine X 10 instructions into a single line We send OFF to the previously identified unit Unit2 for 2 cycles the default for non dimmer commands Then a comma introduces a second instruction that dims for 10 cycles When you combine instructions don t leave out the number of cycles The Stamp may accept your instruction without complaint but it won t work correctly it may see the house code as the number of cycles the instruction as the house code etc xout mPin zPin houseA unitoff 2 houseA dim 1 0 Just to reinforce the idea of combining commands here s the first example again xout mPin zPin houseA Unit1 2 houseA uniton Turn Unit 1 ON pause 1000 Wait a second xout mPin zPin houseA Unit1 2 houseA unitoff Turn
45. U2 interprets them as PBASIC2 instructions and carries out those instructions U1 executes its internal program at 5 million instructions per second Many internal instructions go into a single PBASIC2 instruction so PBASIC2 executes more slowly approximately 3000 to 4000 instruc tions per second The PIC16C57 controller has 20 input output I O pins in the BS2 circuit 16 of these are available for general use by your programs Two others may also be used for serial communication The remaining two are used solely for interfacing with the EEPROM and may not be used for anything else The general purpose I O pins PO through P15 can interface with all modern 5 volt logic from TTL transistor transistor logic through CMOS complementary metal oxide semiconductor To get technical their properties are very similar to those of 74HCTxxx series logic de vices The direction input or output of a given pin is entirely under the control of your program When a pin is an input it has very little effect on circuits connected to it with less than 1 microampere HA of cur rent leaking in or out You may be familiar with other terms for input mode like tristate high impedance or hi Z There are two purposes for putting a pin into input mode 1 To pas sively read the state 1 or 0 of the pin as set by external circuitry or 2 To disconnect the output drivers from the pin For lowest current draw inputs should always be as c
46. Unit 1 OFF End of program stop Parallax Inc BASIC Stamp Programming Manual 1 9 Page 351 BASIC Stamp Il Application Notes Page 352 BASIC Stamp Programming Manual 1 9 Parallax Inc 2 Using Shiftin 8 Shiftout BASIC Stamp Il Application Notes Introduction This application note shows how to use the new Shiftin and Shiftout instructions to efficiently interface the BASIC Stamp II to synchronous serial peripheral chips Background Many of the most exciting peripheral chips for microcontrollers are available only with synchronous serial interfaces These go by various names like SPI Microwire three or four wire interface but they are essentially the same in operation The BASIC Stamp II takes advantage of these similarities to offer built in instruc tions Shiftout and Shiftin that take most of the work out of com municating with synchronous serial peripherals Before plunging into the nuts and bolts of using the new instructions let s discuss some fundamentals First of all how does a synchronous serial interface differ from a parallel one Good question since most synchronous serial devices incorporate elements of both serial and parallel devices The building block of both parallel and serial interfaces is called a flip flop There are several types but we re going to discuss the D type or Data flip flop A D type flip flop has two inputs Data and Clock and one output typically called Q When
47. Waiting for str serString 4 cr serin 1 16780 WAITSTR serString 4 Wait for a match debug Password accepted cr Building Compound InputData Statements Serin s inputData can be structured as a list of actions to perform on the incoming data This allows you to process incoming data in powerful ways For example suppose you have a serial stream that contains pos Xxxx yyyy where xxxx and yyyy are 4 digit numbers and you want to capture just the decimal y value The following Serin would do the trick yOffset var word serin 1 16780 wait pos SKIP 4 dec yOffset debug yOffset The items of theinputData list work together to locate the label pos skip over the four byte x data then convert and capture the decimal y data This sequence assumes that the x data is always four digits long if its length varies the following code would be more appropriate yOffset var word serin 1 16780 wait pos dec yOffset dec yOffset debug yOffset The unwanted x data is stored in yOffset then replaced by the desired y data This is a sneaky way to filter out a number of any size without Page 314 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il using an extra variable With a little creativity you can combine the inputData modifiers to filter and extract almost any data Using Parity and Handling Parity Errors Parity is an error checking feature When a serial sender is set for eve
48. When a rising edge appears on the Clock input all of the flip flops latch their Data inputs to their Q outputs Because they are wired in a chain with each Q output connected to the next flip flop s Data input incoming bits ripple down the shift register You can picture this process as working like a bucket brigade or a line of people moving sandbags In perfect coordination each person hands their burden to the next person in line and accepts a new one from the previous person Looking at this from the standpoint of the parallel output there s a potential problem When data is being clocked into the shift register the data at the output isn t stable it s rippling down the line The cure for this is to add the previously described parallel latch after the shift register and clock it only when we re finished shifting data in That s the arrangement shown in figure 3 It isn t too much of a stretch to imagine how this kind of circuit could be turned around and used as an input Data would be grabbed in parallel by a latch then transferred to a shift register to be moved one bit at a time to a serial data output Page 354 BASIC Stamp Programming Manual 1 9 Parallax Inc 2 Using Shiftin amp Shiftout BASIC Stamp Il Application Notes Now you understand the communications hardware used in syn chronous serial periph erals it s basically just a collection of shift regis ters latches a
49. a byte array used to store variable length text Because the number of bytes can vary strings require either an end of string marker usually the ASCII null character a byte with all bits cleared to 0 or a variable representing the string s length PBASIC2 modifiers shown in Table I 8 for Serout supports both kinds of strings Here s an example of a null terminated string myText var byte 10 An array to hold the string myText 0 H myText 1 E Store HELLO in 1st 5 cells myText 2 L myText 3 L myText 4 O myText 5 0 Put null 0 after last character Serout 1 16468 STR myText Send HELLO The other type of string called a counted string requires a variable to hold the string length In most other BASICs the Oth element of the byte array contains this value Because PBASIC2 outputs the Oth array ele ment this is not the best way It makes more sense to put the countin a Parallax Inc BASIC Stamp Programming Manual 1 9 Page 323 BASIC Stamp Il Table I 7 Numeric Conversion Modifiers Used by Serout Modifier Effect ASC ASCII value with equivalent character e g CO CI A DEC1 DEC5 1 to 5 digit decimal text EN SDEC Signed decimal text SDEC1 SDECS5 1 to 5 digit signed decimal text HEX Hexadecimal hex text HEX1 HEX4 1 to 4 digit hexadecimal text CES COCO RNA Indicated hexadecimal text prefix e g 7A 3 ae 2 ISHEX Indicated signed hexadecimal text
50. a valid number in decimal hexidecimal binary or ascii Stamp I O and Variable Space Word Name Byte Name Bit Names Special Notes PINO PIN7 I O pins bit addressable DIRO DIR7 I O pin direction control bit addressable BITO BIT7 Bit addressable BITS BIT15 Bit addressable Used by GOSUB instruction Used by GOSUB instruction BASIC Stamp Il The RAM space of the BASIC Stamp II consists of sixteen words of 16 bits each Each word and each byte within the word has a unique predefined name similar to the Stamp I and shown in the table below The first three words named INS OUTS and DIRS are reserved to allow access and control over the 16 I O pins on the Stamp IL These reserved words represent the input states output states and directions of the pins respectively and are the Stamp II version of the single con trol word PORT on the Stamp I In comparison to the Stamp I the control registers size has been doubled and the I O register PINS has been split into two words INS and OUTS for flexibility Each word consists of a predefined name for its byte nibble and bit parts Parallax Inc BASIC Stamp Programming Manual 1 9 Page 379 BASIC Stamp and Stamp II Conversions The other thirteen words are general purpose registers for use by the PBASIC program There are two methods of referencing these regis ters within the Stamp II as follows 1 They may be referenced via
51. also been added replaced or removed The following table shows the differences between the two modules BASIC Stamp BRANCH BASIC Stamp II BRANCH Comments Syntax Modifications BSAVE Removed BUTTON BUTTON COUNT New Command DEBUG DEBUG Enhanced EEPROM DATA Enhanced DTMFOUT New Command END END Expressions Expressions Enhanced FOR NEXT FOR NEXT Enhanced GOSUB GOSUB Enhanced GOTO GOTO HIGH HIGH IF THEN IF THEN Enhanced INPUT INPUT LET Expression Enhanced LOOKDOWN LOOKDOWN Enhanced LOOKUP LOOKUP Syntax Modifications LOW LOW NAP NAP OUTPUT OUTPUT PAUSE PAUSE POT RCTIME Enhanced PULSIN PULSIN Enhanced PULSOUT PULSOUT Enhanced PWM PWM Enhanced RANDOM RANDOM READ READ Register Allocation Register Allocation Enhanced REVERSE REVERSE SERIN SERIN Enhanced SEROUT SEROUT Enhanced SHIFTIN New Command SHIFTOUT New Command SLEEP SLEEP SOUND FREQOUT Enhanced STOP New Command TOGGLE TOGGLE WRITE WRITE XOUT New Command Parallax Inc BASIC Stamp Programming Manual 1 9 Page 377 BASIC Stamp and Stamp II Conversions RAM SPACE AND REGISTER ALLOC
52. arrow Right arrow Up arrow Down arrow Ctrl Left Ctrl Right Home End Page Up Page Down Ctrl Page Up Ctrl Page Down Shift Left Shift Right Shift Up Shift Down Shift Ctrl Left Shift Ctrl Right Shift Home Shift End Shift Page Up Shift Page Down Shift Ctrl Page Up Shift Ctrl Page Down Shift Insert ESC Backspace Delete Shift Backspace Shift Delete Ctrl Backspace Alt X Alt C Alt V Alt F Alt N Parallax Inc BASIC Stamp Programming Manual 1 9 Page 203 BASIC Stamp Il Move up one line Move down one line Move left to next word Move to end of line Move up one screen Move to end of file Highlight one character to the left Highlight one character to the right Highlight one line up Highlight one line down Highlight one word to the left Highlight one word to the right Highlight to beginning of line Highlight to end of line Highlight one screen up Highlight one screen down Highlight to beginning of file Highlight to end of file Highlight word at cursor Cancel highlighted text Delete one character to the left Delete character at cursor Delete from left character to beginning of line Delete to end of line Delete line Cut marked text and place in clipboard Copy marked text to clipboard Paste insert clipboard text at cursor Find string establish search information Find next occurrence of string Move left one character Move right one character Move right to next wo
53. because of the final clock pulse The post clock Shiftin acquires its bits after each clock pulse The initial pulse changes the data line from 1 to 0 so the post clock Shiftin returns 01010101 By default Shiftin acquires eight bits but you can set it to shift any number of bits from 1 to 16 with an optional entry following the variable name In the example above substitute this for the first Shiftin instruc tion SHIFTIN 0 1 msbpre b1 4 Shiftin 4 bits The debug window will display 00001010 Some devices return more than 16 bits For example most 8 bit shift registers can be daisy chained together to form any multiple of 8 bits 16 24 32 40 You can use a single Shiftin instruction with multiple vari ables Each variable can be assigned a particular number of bits with the backslash option Modify the previous example Page 332 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il SHIFTIN 0 1 msbpre b115 b2 5 bits into b1 8 bits into b2 debug 1st variable bin8 b1 cr debug 2nd variable bin8 b2 cr Demo Program See listing 2 of BS2 application note 2 Using Shiftin and Shiftout or try the example shown in the explanation above Parallax Inc BASIC Stamp Programming Manual 1 9 Page 333 BASIC Stamp Il Shiftout SHIFTOUT dpin cpin mode data bits dataf bits Shift data out to a synchronous serial device e Dpinis a variable constant 0 15 that specifies th
54. bit nibble byte or word variable in the range 0 15 e DUTY is a constant expression or a bit nibble byte or word vari able in the range 0 255 e CYCLES is a constant expression or a bit nibble byte or word variable in the range 0 255 representing the number of 1ms cycles to output Conversion BS1 gt BS20 000 1 CYCLES CYCLES 5 e PIN may be a nibble variable in the range 0 15 Example BS1 PWM 0 5 1 BS2 PWM 0 5 5 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 423 BASIC Stamp and Stamp II Conversions Conversion BS1 amp BS2 000 1 CYCLES CYCLES 5 e PIN must be in the range 0 7 and must not be a nibble variable Example BS2 PWM 15 5 20 BS1 PWM 7 5 4 Page 424 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C RANDOM BASIC Stamp RANDOM variable e VARIABLE is a byte or word variable in the range 0 65535 BASIC Stamp Il RANDOM variable e VARIABLE is a byte or word variable in the range 0 65535 PONIES Peas ocio wap aba ata dol e The numbers generated for any given input will not be the same on the Stamp II as in the Stamp I E e The numbers generated for any given input will not be the same on the Stamp I as in the Stamp II Parallax Inc BASIC Stamp Programming Manual 1 9 Page 425 BASIC Stamp and Stamp II Conversions RCTIME BASIC Stamp POT pin scale bytevariable e PIN is a constant or a bit byte or word variabl
55. bit is set the input value is O NCD returns 0 NCD is a fast way to get an answer to the question what is the largest power of two that this value is greater than or equal to The answer that NCD re turns will be that power plus one Example w1 1101 Highest bit set is bit 3 debug NCD w1 Show the NCD of w1 4 Negates a 16 bit number converts to its two s complement w1 99 Put 99 two s complement format into w1 debug sdec w1 Display it on the screen as a signed wi ABS w1 Now take its absolute value debug sdec w1 Display it on the screen as a signed Complements inverts the bits of a number Each bit that contains a 1 is changed to 0 and each bit containing 0 is changed to 1 This process is also known as a bitwise NOT For example b1 11110001 Store bits in byte b1 debug bin b1 Display in binary 11110001 bi b1 Complement b1 debug bin b1 Display in binary 00001110 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 237 BASIC Stamp Il SIN Returns the two s complement 8 bit sine of an angle specified as an 8 bit 0 to 255 angle To understand the BS2 SIN operator more com pletely let s look at a typical sine function By definition given a circle with a radius of 1 unit known as a unit circle the sine is the y coordi nate distance from the center of the circle to its edge at a given angle Angles are measured relati
56. can filter and convert incoming data in powerful ways With all this power inevitably comes some complexity which we ll overcome by walking you through the process of setting up Serin and understanding its options Physical Electrical Interface Since the STAMP host software runs on a PC we ll use its RS 232 COM ports as a basis for discussion of asynchronous serial communication Asynchronous means no clock Data can be sent using a single wire plus ground The other kind of serial synchronous uses at least two wires clock and data plus ground The Shiftin and Shiftout commands are used for a form of synchronous serial communication RS 232 is the electrical specification for the signals that PC COM ports use Unlike normal logic in which a 1 is represented by 5 volts and a 0 by 0 volts RS 232 uses 12 volts for 1 and 12 volts for 0 Most circuits that receive RS 232 use a line receiver This component does two things 1 It converts the 12 volts of RS 232 to logic compatible 0 5 volt levels 2 Itinverts the relationship of the voltage levels to corresponding bits so that volts 1 and 0 volts 0 The BS2 has a line receiver on its SIN pin rpin 16 See the BS2 hardware description and schematic The SIN pin goes to a PC s serial data out pin on the DB9 connector built into BS2 car rier boards The connector is wired to allow the STAMP2 host program to re Figure l 17 Using the Carrier Board DB9 C
57. common serial devices use the RS 232 standard in which a 1 is represented by 12V and a 0 by 12V Serout through the I O pins is limited to logic level voltages of UV and 5V however most RS 232 de Figure l 21 vices are designed with sufficient lee a Pinouts for Standard PC COM Port way to accept logic level Serout trans Connectors with Serout Hookup missions provided that they are in ERA verted see Serial Timing and Mode SS VO pin below can 2 9 CF lesso 7 pa e 67 8 9 Figure I 21 shows the pinouts of the two styles of PC com ports and how to 08 25 Male 5 VO pin connect them to receive data sent by wenwesbess E 24 eee 0000009698000 st DB25 si e Serout through pins 0 15 The figure e 00008000000 usa misma pors also shows loopback connections that AN Functi defeat hardware handshaking used by ee aan some PC software mae oan Request to Send RTS p 7 Clear to Send CTS The SOUT pin can comply with the Data Set Ready DSR 5 Signal Ground SG 232 electrical standar stealin Ea carol sae CB RS 232 electrical standard by stealing the negative signal voltage from an RS eee 232 input at SIN See the BS2 hardware NOTE In the connector drawings above several handshaking lines are shown connected together DTR DSR DCD and RTS CTS This for the i i 1 benefit of terminal programs that expect hardware handshaking You may description and schematic In order for 2eviteltermnalprocrams that ex
58. comparisons as in this example value var byte result var nib value 17 result 15 LOOKDOWN value gt 26 177 13 1 0 17 99 result debug Value greater than item dec result in list Debug prints Value greater than item 2 in list because the first item that value 17 is greater than is 13 which is item 2 in the list Value is also greater than items 3 and 4 but these are ignored because Look down only cares about the first true condition This can require a certain amount of planning in devising the order of the list See the demo pro gram below Lookdown comparison operators use unsigned 16 bit math They will not work correctly with signed numbers which are represented inter nally as two s complement large 16 bit integers For example the two s complement representation of 99 is 65437 So although 99 is certainly less than 0 it would appear to be larger than zero to the Lookdown comparison operators The bottom line is Don t used signed numbers with Lookdown comparisons Page 280 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Demo Program This program uses Lookdown to determine the number of decimal digits in a number The reasoning is that numbers less than 10 have one digit greater than or equal to 10 but less than 100 have two greater than or equal to 100 but less than 1000 have three greater than or equal to 1000 but less than 10000 have four and greater than or equal
59. e KEY isa constant expression or a bit nibble byte or word variable in the range 0 15 CONVERSIONS 5 ii Sine pow No conversion possible Page 396 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C EEPROM See DATA Parallax Inc BASIC Stamp Programming Manual 1 9 Page 397 BASIC Stamp and Stamp II Conversions BASIC Stamp END e 20uA reduced current no loads BASIC Stamp Il END e 50uA reduced current no loads CONVERSION No conversion necessary Page 398 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C EXPRESSIONS BASIC Stamp value value value e Stamp I expressions are only allowed within an assignment state ment See the LET command for more detail e VALUE is a constant or a bit byte or word variable 2 is 7 MIN MAX amp 1 4 amp LOT BASIC Stamp Il value value value e Stamp II expressions are allowed in place of almost any argument in any command as well as within an assignment statement e is SOR ABS DCD NCD COS SIN e VALUE is a constant or a bit nibble byte or word variable e 2 is MIN MAX amp 4 DIG lt lt gt gt REV e Parentheses may be used to modify the order of expression evaluation KN ESTO anos yee eee snes ette 1 Remove the LET command This is not allowed in the Stamp II e VARIABLE and VALUE may be nibble variables for efficiency
60. figure 216 Instructions 204 346 385 BRANCH 204 247 248 385 Page 460 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Index BUTTON 205 249 250 159 165 387 388 Looping 204 COUNT 205 251 252 389 FOR NEXT 204 261 263 401 402 DATA 206 213 302 303 341 343 394 395 Low current mode DEBUG 206 253 256 390 393 END 206 210 260 398 DTMFOUT 206 257 259 396 NAP 206 210 285 286 416 END 206 210 260 398 SLEEP 210 443 FOR NEXT 204 261 263 401 402 LOW 204 206 284 415 FREQOUT 206 264 265 403 404 GOSUB 204 266 267 405 M GOTO 204 268 406 HIGH 204 269 407 IF THEN 204 270 275 408 INPUT 204 276 277 409 LOOKDOWN 204 278 281 412 413 LOOKUP 204 282 283 414 LOW 204 284 415 NAP 206 210 285 286 416 OUTPUT 204 287 417 PAUSE 206 288 418 PULSIN 204 289 290 420 421 PULSOUT 205 291 292 422 PWM 205 293 295 423 424 RANDOM 204 296 297 425 Number representations 231 RCTIME 205 298 301 426 428 ai a oe ee READ 206 302 303 429 perators in constants table RETURN 204 304 OR logical 1 239 245 REVERSE 204 305 306 430 Order of evaluation 232 233 SERIN 205 307 318 431 434 HENES Sasi SEROUT 205 319 329 435 438 Sad EET SHIFTIN 205 330 333 439 440 ift right gt gt 239 2 Subtraction 239 240 SHIFTOUT 205 334 335 441 442 A SLEEP 206 210 336 337 443 Unary and binary operators 234 236 2
61. from damage Actual current would be quite a bit less due to internal resistance of the pin s output driver but you get the idea Page 300 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Demo Program 1 This program shows the standard use of the RCtime instruction mea suring an RC charge discharge time Use the circuit of figure I 14a with R 10k pot and C 0 1pf Connect the circuit to pin 7 and run the program Adjust the pot and watch the value shown on the Debug screen change result var word Word variable to hold result again high 7 Discharge the cap pause 1 for 1 ms RCTIME 7 1 result Measure RC charge time debug cls dec result Show value on screen goto again Demo Program 2 Figure l 15 This program illustrates the use of RCtime as a sort of fast stopwatch The program a energizes a relay coil then has RCtime relay coil measures how long it takes for the relay E contacts to close Figure I 15 shows the pine gt relay with 20mA coil e g Radio Shack 275 232 hookup In a test run of the program with a storage oscilloscope independently tim ing the relay coil and contacts we got the following results RCtime result 28 units 56us Oscilloscope measurement 270ps The 214s difference is the time required for RCtime to set up and begin its measurement cycle Bear this in mind that RCtime doesn t start timing instantly when designing critical ap
62. function returns the x distance instead of the y distance To demonstrate the COS op erator use the example program from SIN above but substitute COS for SIN Page 238 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Binary two argument Operators Sixteen Binary Operators are listed and explaned below Table M 6 Binary Operators Operator Description Addition Subtraction Division Remainder of division Multiplication High 16 bits of multiplication Multiply by 8 bit whole and 8 bit part Limits a value to specified low Limits a value to specified high Returns specified digit of number Shift bits left by specified amount Shift bits right by specified amount Reverse specified number of bits Bitwise AND of two values Bitwise OR of two values Bitwise XOR of two values Adds variables and or constants returning a 16 bit result Works ex actly as you would expect with unsigned integers from 0 to 65535 If the result of addition is larger than 65535 the carry bit will be lost If the values added are signed 16 bit numbers and the destination is a 16 bit variable the result of the addition will be correct in both sign and value For example the expression 1575 976 will result in the signed value 599 See for yourself Parallax Inc BASIC Stamp Programming Manual 1 9 Page 239 BASIC Stamp Il wi 1575 w2 976 wi w
63. gener ate an error message and refuse to download it See the section BS2 EEPROM Data Storage for more information on the Data directive Demo Program This program is the bare framework of a data logger an application that gathers data and stores it in memory for later retrieval To provide sample data connect the circuit of figure I 14a see RCtime to pin 7 Use a 10k resistor and 0 1uF capacitor Run the program and twiddle the pot to vary the input data The program writes the data to EEPROM at 1 second intervals then reads it back from the EEPROM If you plan to use Write in a similar application pay close attention to the way the pro gram allocates the EEPROM with Data and uses constants to keep track of the beginning and ending addresses of the EEPROM space Note that this program uses an unnecessarily large variable a word for the EEPROM address With only 10 samples and with EEPROM addresses that start at 0 we could have gotten away with just a nibble However real world applications could expand to hundreds of samples or be located much higher in EEPROM so we used a word variable to set a good example result var word Word variable for RCtime result EEaddr var word Address of EEPROM storage locations samples con 10 Number of samples to get log data samples Set aside EEPROM for samples endLog con log samples 1 End of allocated EEPROM for EEaddr log to endLog Store each sample in EEPROM high 7 pause
64. house code lightsOn 10100 Turn on all lamp modules w this house code dim 11110 Reduce brightness of currently selected lamp bright 10110 Increase brightness of currently selected lamp In most applications it s not necessary to know the code for a given X 10 instruction Just use the command constant unitOn dim etc instead But knowing the codes leads to some interesting possibilities For example XORing a unitOn command with the value 1000 turns it into a unitOff command and vice versa This makes it possible to write the equivalent of an X 10 toggle instruction Here is an example of the Xout instruction zPin con mPin con houseA con uniti con XOUT mPin zPin houseAlunit1 ooo Zpin is PO Mpin is P1 House code A 0 Unit code 1 0 Get unit 1 s attention XOUT mPin zPin houseA unitOn and tell it to turn on You can combine those two Xout instructions into one like so XOUT mPin zPin houseA unit1 2 houseA unitOn Unit 1 on Parallax Inc BASIC Stamp Programming Manual 1 9 Page 345 BASIC Stamp Il Note that to complete the attention getting code houseA unit1 we tacked on the normally optional cycles entry 2 to complete the command be fore beginning the next one Always specify two cycles in multiple com mands unless you re adjusting the brightness of a lamp module Here is an example of a lamp dimming instruction zPin con 0 Zpin is PO mPin con 1 Mpin
65. i Serout to Debug screen Parallax Inc BASIC Stamp Programming Manual 1 9 Page 325 BASIC Stamp Il Controlling Data Flow In all of the examples above Serout sent the specified data without check ing to see whether the receiving device was ready for it If the receiver wasn t ready the data was sent anyway and lost With flow control the serial receiver can tell Serout when to send data BS2 flow control works on a byte by byte basis no matter how many bytes Serout is supposed to send it will look for permission to send before each byte If permission is denied Serout will wait until it is granted By permission we mean the appropriate state of the flow control pin fpin specified in the Serout instruction The logic of fpin depends on whether an inverted or non inverted baudmode is specified Go Stop Inverted 1 0 Noninverted 0 1 Here s an example that demonstrates fpin flow control It assumes that two BS2s are powered up and connected together as shown in figure 1 20 SENDER data out pin 1 flow control pin O Baudmode 9600 N8 inverted Serout 110 16468 HELLO Send the greeting RECEIVER data in pin 1 flow control pin O Baudmode 9600 N8 inverted letta var byte again Serin 110 16468 letta Get 1 byte debug letta Display on screen pause 1000 Wait a second goto again Without flow control the sender would transmit the whole word HELLO in about 6ms The receiver woul
66. in both hardware and software While it is trivial to recognize the differences in the Stamp hardware the modifications to the PBASIC command structure are intricate and not always obvious This appendix describes the Stamp I and Stamp II PBASIC differences in a detailed manner to aid in the conversion of programs between the two modules This document may also serve to give a better understanding of how cer tain features of the two versions can be helpful in problem solving TYPOGRAPHICAL CONVENTIONS This Appendix will use a number of symbols to deliver the needed infor mation in a clear and concise manner Unless otherwise noted the follow ing symbols will have consistent meanings throughout this document TOPIC HEADING Each discussion of a topic or PBASIC command will begin with a topic heading such as the one above MobuLE HEADING When separate discussion of a Stamp I or Stamp II module is neces sary it will begin with a module heading such as this one Inside the module section bulleted items will precede information on the properties of various arguments for the indicated command EO fanaa rotores ag E N When conversion between the two versions of PBASIC are necessary each set of steps will begin under the conversion heading as shown above This header will always begin with the word Conversion and will indicate in which direction the conversion is taking place i e from BS1 to BS2 or from BS2 to BS1 Parallax I
67. input 0 or by the state of OUTS output 1 INS always matches the actual states of the I O pins whether they are inputs or outputs OUTS holds bits that will only appear on pins whose DIRS bits are set to output In programming the BS2 it s often more convenient to deal with indi vidual bytes nibbles or bits of INS OUTS and DIRS rather than the entire 16 bit words PBASIC2 has built in names for these elements listed below When we talk about the low byte of these words we mean the byte corresponding to pins PO through P7 Table M 2 Predefined Names for Elements of DIRS INS and OUTS DIRS OUTS The entire 16 bit word The low byte of the word The high byte of the word The low nibble of low byte The high nibble of low byte The low nibble of high byte The high nibble of high byte OUTO The low bit corresponds to PO continues 1 through 14 Bits 1 14 corresponds to P1 through P14 IN15 OUT15 The high bit corresponds to P15 Page 216 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Using the names listed above you can access any piece of any I O variables And as we ll see in the next section you can use modifiers to access any piece of any variable Predefined Fixed Variables As table M 1 shows the BS2 s memory is organized into 16 words of 16 bits each The first three words are used for I O The remaining 13 words are available for use as genera
68. input text the modifiers aren t completely fool proof For instance in the ex ample above Serin would keep accepting text until the first non numeric text arrived even if the resulting value exceeded the size of the variable After Serin a byte variable would contain the low est 8 bits of the value entered a word would contain the lowest 16 bits You can control this to some degree by using a modifier that specifies the number of dig its such as DEC2 which would accept values only in the range of 0 to 99 Collecting Strings Serin can grab sequences of in coming bytes and store them in array variables using the STR modifier See table I 5 Here is an example that receives nine bytes through pin 1 at 2400 bps N81 inverted and stores them in a 10 byte array serString var byte 10 serString 9 0 SERIN 1 16780 STR serString 9 debug str serString Figure l 19 Calculating Baudmode for BS2 Serin Step 1 Figure the Bit Period bits 0 12 Bits 0 through 12 of the baudmode are the bit period expressed in microseconds us SerinOs actual bit period is always 20us longer than specified Use the following formula to calculate the baudmode bit period for a given baud rate 1 000 000 baud rate INT 20 INT means convert to integer drop the numbers to the right of the decimal point Step 2 Set Data Bits and Parity bit 13 Bit 13 lets you select one of two combinations of data bit
69. is P1 houseA con 0 House code A 0 uniti con 0 Unit code 1 0 XOUT mPin zPin houseA unit1 Get unit 1 s attention XOUT mPin zPin houseA unitOff 2 houseA dim 10 Dim halfway The dim bright commands support 19 brightness levels Lamp mod ules may also be turned on and off using the standard unitOn and unitOff commands In the example instruction above we dimmed the lamp by first turning it comletely off then sending 10 cycles of the dim command This may seem odd but it follows the peculiar logic of the X 10 system See the table in BS2 app note 1 X 10 Control for complete details Demo Program See the program listing accompanying BS2 app note 1 X 10 Control Page 346 BASIC Stamp Programming Manual 1 9 Parallax Inc 1 X 10 Control BASIC Stamp Il Application Notes Introduction This application note shows how to use the new Xout command to remotely control X 10 lamp and appliance modules Background Home automation the management of lights and ap pliances with a computer promises to increase security energy effi ciency and convenience around the house So why aren t home con trol systems more common The answer is probably the wiring it s hard to think of a nastier job than stringing control wiring through the walls and crawlspaces of an existing home Fortunately there s a wireless solution for home control called X 10 a family of control modules that respond to signals sent through exis
70. larger than the specified number of digits the leading digits will be dropped e g DEC4 56422 sends 6422 2 Signed modifiers work under two s complement rules same as PBASIC2 math Value must be no less than a word variable in size Page 256 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il DTMFout DTMFOUT pin fontime offtime tone Generate dual tone multifrequency tones DTMF i e telephone touch tones e Pinis avariable constant 0 15 that specifies the I O pin to use This pin will be put into output mode temporarily during generation of tones After tone generation is complete the pinis leftin input mode even if it was previously an output e Ontime is an optional entry a variable or constant 0 to 65535 specifying a duration of the tone in milliseconds If ontime is not specified DTMFout defaults to 200 ms on Offtime is an optional entry a variable or constant 0 to 65535 specifying the length of silent pause after a tone or between tones if multiple tones are specified If offtime is not specified DTMFout defaults to 50 ms off e Tone is a variable or constant 0 15 specifying the DTMF tone to send Tones 0 through 11 correspond to the standard layout of the telephone keypad while 12 through 15 are the fourth column tones used by phone test equipment and in ham radio applications 0 9 Digits O through 9 10 Star 11 Pound 12 15 Fourth column ton
71. may be substituted for A through F 4 Indicated hex and binary modifiers ignore all characters even valid numerics until they receive the appropriate prefix for hex for binary The indicated modifiers can differentiate between text and hex numbers e g ABC would be interpreted by HEX as a number IHEX would ignore it unless expressed as ABC Likewise the binary version can distinguish the decimal number 10 from the binary number 10 A prefix occurring in non numeric text is ignored and any character including a space between a prefix and a number causes the prefix to be ignored Indicated signed modifiers require that the minus sign come before the prefix as in 1B45 serData DEC is one of a family of conversion modifiers available with Serin see table I 4 for a list All of the conversion modifiers work simi larly they receive bytes of data waiting for the first byte that falls within the range of symbols they accept e g 0 or 1 for binary 0 to 9 for decimal 0 to 9 and A to F for hex and or for signed variations of any type Once they receive a numeric symbol they keep accepting input until a non numeric symbol arrives or in the case of the fixed length modifiers the maximum specified number of digits arrives Parallax Inc BASIC Stamp Programming Manual 1 9 Page 311 BASIC Stamp Il While very effective at filtering and converting
72. more time than storing a value ina variable Depending on many factors it may take several milliseconds for the EEPROM tocompletea write RAM storage is nearly instantaneous 2 The EEPROM can accepta finitenumber of Write cycles per byte before it wears out At the time of this writing each byte of the EEPROM used in the BS2 was good for 10 million Write cycles and an unlimited number of Reads Ifa program frequently writes to the same EEPROM location it makes sense to estimate how long it might take to exceed 10 million writes Forexample at one write per second 86 400 writes day it would take nearly 116 days of continuous operation to exceed 10 million 3 The primary function of the EEPROM isto store programs data is stored in leftover space If data overwrites a portion of your program the program will most likely crash Check the program s memory map to determine what portion of memory is occupied by your program and make sure that EEPROM Writes cannot stray into this area You may also use the Data directive to set aside EEPROM space For instance Parallax Inc BASIC Stamp Programming Manual 1 9 Page 341 BASIC Stamp Il name DATA n This directive allocates n bytes of EEPROM starting at the address name and extending to address name n 1 If you restrict Writes to this range of addresses you ll be fine If your program grows to the point that it overlaps the addresses allocated the STAMP2 host program will
73. oddSign 0 to 1 Toggle between input channels gosub convert Get data from ADC debug channel DEC oddSign DEC AD cr Display data pause 500 Wait a half second next Change channels goto again Endless loop Here s where the conversion occurs The Stamp first sends the config bits to the 1298 then clocks in the conversion data Note the use of the new BS2 instructions Shiftout and Shiftin Their use is pretty straightforward here Shiftout sends data bits to pin DIO and clock the CLK pin Sending the least significant bit first it shifts out the four bits of the variable config Then Shiftin changes DIO to input and clocks in the data bits most significant bit first post clock valid after clock pulse It shifts in 12 bits to the variable AD convert config config 1011 Set all bits except oddSign low CS Activate the ADC shiftout DIO_n CLK Isbfirst config 4 Send config bits shiftin DIO_n CLK msbpost AD 12 Get data bits high CS Deactivate the ADC return Return to program Page 360 BASIC Stamp Programming Manual 1 9 Parallax Inc 2 Using Shiftin amp Shiftout 3 Phoneline Interface BASIC Stamp Il Application Notes Introduction This application note shows how to interface the BS2 to the phone line in applications that use the DTMFout instruction Background The BS2 instruction DTMFout generates dual tone mul tifrequency signals the same music
74. of very short duration less than 0 131 seconds When RCtime executes it starts a counter that increments every 2s It stops this counter as soon as the specified pin is no longer in state 0 or 1 If pin is not instate when the instruction executes RCtime will return 1 in resultVariable since the instruction requires one timing cycle to discover this fact If pin remains in state longer than 65535 timing cycles of 2ps each 0 131 seconds RCtime returns 0 Figure I 14 shows suitable RC circuits for use with RCtime The circuit in I 14a is preferred because the BS2 s logic threshold is approximately 1 5 volts This means that the voltage seen by the pin will start at 5V then fall to 1 5V aspan of 3 5V before RCtime stops With the circuit of I 14b the voltage will start at OV and rise to 1 5V spanning only 1 5V before RCtime stops For the same combination of R and C the circuit shown in 1 14a will yield a higher count and therefore more resolution than I 14b Before RCtime executes the capacitor must be put into the state specified Page 298 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Figure 1 14 2200 AA 1 0 pin nS n a use with state 1 preferred see text b use with state 0 in the RCtime instruction For example with figure I 14a the capacitor must be discharged until both plates sides of the capacitor are at 5V It may seem counterintuitive that disch
75. open Add your choice to the sum of steps 1 through 3 The result is the correct serial baudmode for use by Serout FYI Bit Map of Serout Baudmode If youOre more comfortable thinking in terms of bits hereOs a bit map of SeroutOs baudmode Driven open O driven 1 open Data bits parity 0 8 bits no parity 1 7 bits even parity Polarity 0 noninverted 1 inverted Bit period 0 to 8191us 2015 r D Pdp BBBBBBBBBBBBB 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 BASIC Stamp Il Table l 6 Common Data Rates and Corresponding Baudmode Values Direct Connection Through Line Driver Data Speed a Inverted Noninverted 8 data bits 7 data bits 8 data bits 7 data bits no parity even parity no parity even parity Baud Rate 300 9697 27889 3313 11505 600 8030 26222 1646 9838 1200 7197 25389 813 9005 2400 6780 972 8588 4800 6572 764 8380 9600 6468 660 8276 19200 6416 608 8224 38400 6390 582 8198 Note For open baudmodes used in networking add32768to values from the table above Ifthe dedicated serial port tpin 16 is used the data is inverted and driven regardless of the baudmode setting than the 0 to 255 of 8E mode Serout s open baudmodes are used only in special circumstances usually networking applications See the Network example below Simple Output and Numeric Conversions Stripped to just the essentials Serout can be as simple as Serout tpin baudmod
76. out at intervals of approximately 2 3 seconds low 0 Turn LED on Figure 1 27 pause 1000 Wait 1 second 5V again y high 0 LED off ES pause 1000 Wait 1 second low 0 LED back on SLEEP 10 Sleep for 10 seconds 2200 goto again I O pin Parallax Inc BASIC Stamp Programming Manual 1 9 Page 337 BASIC Stamp Il Stop STOP Stop program execution Explanation Stop prevents the BS2 from executing any further instructions until it is reset The following actions will reset the BS2 pressing and releasing the RESET button on the carrier board taking the RES pin low then high by downloading anew program or turning the power off then on Stop differs from End in two respects e Stop doesnot putthe BS2 into low power mode The BS2 drawsjust asmuchcurrentasifit were actively running program instructions e The output glitch that occurs after a program has Ended does not occur after a program has Stopped Page 338 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Toggle TOGGLE pin Invert the state of a pin e Pinis avariable constant 0 15 that specifies the I O pin to use The state of the corresponding bit of the OUTS register is inverted and the pinis putinto output mode by writing a1 the corresponding bit of the DIRS register Explanation Toggle inverts the state of an I O pin changing 0 to 1 and 1 to 0 When the pin is intially in the output mode Toggle has
77. pressed e Delay is a variable constant 0 255 that specifies how long the button must be pressed before auto repeat starts The delay is measured in cycles of the Button routine Delay has two special settings 0 and 255 If Delay is 0 Button performs no debounce or auto repeat If Delay is 255 Button performs debounce butno auto repeat e Rate is a variable constant 0 255 that specifies the number of cycles between autorepeats The rate is expressed in cycles of the Button routine e Bytevariableis the workspace for Button It must be cleared to 0 before being used by Button for the first time e Targetstateis avariable constant 0 or 1 that specifies whichstate the button should be in for a branch to occur O not pressed 1 pressed e Addressis a label that specifies where to branch if the button isin the target state Explanation When you press a button or flip a switch the contacts make or break a connection A brief 1 to20 ms burst of noise occurs as the contacts scrape and bounce against each other Button s debounce feature prevents this noise from being interpreted as more than one switch action For a demonstration of switch bounce see the demo program for the Count instruction Button also lets PBASIC react to a button press the way your computer keyboard does toa key press When you press a key a character immedi ately appears on the screen If you hold the key down there s a delay then Parallax
78. program e OutputDataconsists of one or more of the following text strings variables constants expressions formatting modifiers and control characters Explanation Debug provides a convenient way for your programs to send messages to the PC screen during programming The name Debug suggests its most popular use debugging programs by showing you the value ofa vari able or expression or by indicating what portion ofa program is currently executing Debugis also a great way torehearse programming techniques Throughout this instruction guide we use Debug to give you immediate feedback on the effects of instructions Let s look atsome examples DEBUG Hello World Test message After you press ALT R to download this one line program to the BS2 the STAMP2hostsoftware will puta Debug window on your PC screen and wait for a response A moment later the phrase Hello World will appear Pressing any key other than space eliminates the Debug window Your program keeps executing after the screen is gone but you can t see the Debug data Another example x var byte x 65 DEBUG dec x Show decimal value of x Since x 65 the Debug window would display 65 In addition to decimal Debug can display values in hexidecimal and binary See table I 1 for a complete list of Debug prefixes Suppose that your program contained several Debug instructions show ing the contents of different variables You would wantsome way to
79. quite flexible the Stamp I can only emulate specific baud rates 4 Remove the PLABEL argument if it is specified No parity error checking is done on the Stamp I 5 Remove the TIMEOUT and TLABEL arguments if they are speci fied No timeout function is available on the Stamp I the program will halt at the SERIN instruction until satisfactory data arrives 6 Remove the brackets and J Parallax Inc BASIC Stamp Programming Manual 1 9 Page 433 BASIC Stamp and Stamp II Conversions 7 If QUALIFIERS are specified within a WAIT modifier remove the word WAIT 8 IF QUALIFIERS are specified within a WAITSTR modifier replace the word WAITSTR with an open parenthesis Convert the bytearray into a constant text or number sequence separated by commas if necessary remove the length specifier L if one ex ists and insert a close parenthesis immediately afterward 9 If a variable is preceded with a DEC formatter replace the word DEC with 10 Any formatter other than DEC and WAIT or WAITSTR has no di rect equivalent in the Stamp I and must be removed Additional variables or parsing routines will have to be used to achieve the same results in the Stamp I as with the Stamp II Example BS2 SERIN 15 813 1000 TimedOut WAIT ABCD DEC FirstByte SecondByte BS1 SERIN 7 1 ABCD B0 B1 Page 434 BASIC Stamp Programming Manual 1 9 Pa
80. signals may not be able to reach all outlets without a little help A device called an ACT CP000 Phase Coupler about 40 retail from the source below installed on the electrical breaker box helps X 10 signals propagate across the phases of the AC line For larger installations there are also amplifiers repeat ers etc Sources X 10 compatible modules are available from many home centers electrical suppliers and electronics retailers including Radio Operation of the Dim and Bright Commands Lamp is And you send OFF _ON _DIM _BRIGHT OFF FULL no effect turns ON FULL turns ON FULL turns ON FULL ON FULL tums O FF FULL no effect dims no effect OFF DIM tums O FF FULL no effect no effect brightens ON DIM tums O FF FULL no effect dims brightens Parallax Inc BASIC Stamp Programming Manual 1 9 Page 349 BASIC Stamp Il Application Notes Shack However relatively few of these carry the PL 513 and TW 523 Advanced Services Inc a home automation outlet sells every conceiv able sort of X 10 hardware including the PL 513 and TW 523 starting at around 20 at the time of this writing You may contact them at 800 263 8608 or 508 747 5598 Program listing This program may be downloaded from our Internet ftp site at ftp parallaxinc com The ftp site may be reached directly or through our web site at http www parallaxinc com Program X10_DEMO BS2 Demonstration of X 10 control using Xout This program really t
81. supply problems is U4 the S 81350HG 5 volt regulator This device accepts a range of slightly over 5V up to 15V and regulates it to a steady 5V This regulator draws mini mal current for its own use so when your program tells the BS2 to go into low power Sleep End or Nap modes the total current draw aver ages out to approximately 100 microamperes pA That figure assumes no loads are being driven and that all I O pins are at ground or 5V When the BS2 is active it draws approximately 8mA Since U4 can provide up to 50mA the majority of its capacity is available for power ing your custom circuitry Circuits requiring more current than U4 can provide may incorporate their own 5V supply Connect this supply to VDD and leave U4 s input VIN open Note that figure H 1 uses CMOS terms for the power supply rails VDD for the positive supply and Vss for ground or OV reference These terms are correct because the main components are CMOS Don t be con cerned that other circuits you may come across use different nomen clature for our purposes the terms VDD Vcc and 5V are interchange able as are Vss earth British usage and ground Serial Host Interface 01 Q2 and 03 The BS2 has no keyboard or monitor so it relies on PC based host soft ware to allow you to write edit download and debug PBASIC2 pro grams The PC communicates with the BS2 through an RS 232 COM port interface consisting of pins SIN SOUT and ATN serial i
82. to be placed in an 8 bit byte variable the upper eight bits are truncated and the lower eight bits stored in the byte 10011101 Now for the second half of the story Debug s SDEC modifier expects a 16 bit two s complement value but has only a byte to work with As usual it creates a 16 bit value by padding the leading eight bits with Os 0000000010011101 And what s that in signed decimal 157 Each of the instruction descriptions below includes an example It s a good idea to test your understanding of the operators by modifying the examples and seeing whether you can predict the results Experi ment learn and work the Debug instruction until it screams for mercy The payoff will be a thorough understanding of both the BS2 and com puter oriented math Parallax Inc BASIC Stamp Programming Manual 1 9 Page 235 BASIC Stamp Il Unary one argument Operators Six Unary Operators are listed and explained below Table M 5 Unary Operators Operator Description ABS Returns absolute value SQR Returns square root of value DCD 2 power decoder NCD Priority encoder of a 16 bit value SIN Returns two s compliment sine COS Returns two s compliment cosine ABS Converts a signed two s complement 16 bit number to its absolute value The absolute value of a number is a positive number represent ing the difference between that number and 0 For example the abso lute value of 99 is
83. to output current flows through R1 through the LED and into pin 0 to ground because of the 0 written to OUTO The total resistance encountered by current flowing through the LED is R1 2200 With only half the resistance the LED glows brighter OUTO 0 Put a low in the pin O output driver again pause 200 Brief 1 5th second pause REVERSE 0 Invert pin O I O direction goto again Repeat forever Parallax Inc BASIC Stamp Programming Manual 1 9 Page 305 BASIC Stamp Il Figure 1 16 5V O R1 2209 A 7 y LED pin 0 R2 2209 Page 306 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Serin SERIN rpin fpin baudmode plabel timeout tlabel inputData Receive asynchronous e g RS 232 data e Rpin is a variable constant 0 16 that specifies the I O pin through which the serial data will be received This pin willswitch to input mode and remain in that state after the instruction is completed If Rpin is set to 16 the Stamp uses the dedicated serial input pin SIN which is normally used by the STAMP2 host program Fpin is an optional variable constant 0 15 that specifies the I Opintobe used for flow control byte by byte handshaking This pin will switch to output modeand remainin that state after the end of the instruction Baudmode is a 16 bit variable constant that specifies serial timing and configuration The lower 13 bits are
84. transistor pull ing its collector to ground Q2 s collector is connected to the MCLR reset line of the PBASIC2 interpreter chip so turning on Q2 resets U1 During programming the STAMP2 host program pulses ATN high to reset U1 then transmits a signal to U1 through SIN indicating that it wants to download a new program Other than when it wants to ini tiate programming the STAMP2 host program holds ATN at 12V al lowing U1 to run normally Your PBASIC2 programs may use the serial host interface to commu nicate with PC programs other than the STAMP2 host program The only requirement is that ATN must be either disconnected or at less than 1V to avoid unintentionally resetting the BS2 See the Serin list ing for further information Parallax Inc BASIC Stamp Programming Manual 1 9 Page 211 BASIC Stamp Il PC to BS2 Connector Hookup Figure H 2 shows how a DB9 programming connector for the BS2 is wired This connector allows the PC to reset the BS2 for programming download programs and receive Debug data from the BS2 An addi tional pair of connections pins 6 and 7 of the DB9 socket lets the STAMP2 host software identify the port to which the BS2 is connected If you plan to construct your own carrier board or make temporary programming connections to a BS2 on a prototyping board use this drawing as a guide If you also want to use this host interface connec tion to communicate between the BS2 and other PC programs s
85. types unary and binary Remember the previous discussion of operator precedence Unary operators take precedence over binary the unary operation is always performed first For example SQR is the unary operator for square root In the expression 10 SOR 16 the BS2 first takes the square root of 16 then subtracts it from 10 Page 234 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il 16 bit Workspace Most of the descriptions that follow say something like computes some function of a 16 bit value This does not mean that the operator does not work on smaller byte or nibble values It just means that the com putation is done in a 16 bit workspace If the value is smaller than 16 bits the BS2 pads it with leading Os to make a 16 bit value If the 16 bit result of a calculation is to be packed into a smaller variable the higher order bits are discarded truncated Keep this in mind especially when you are working with two s comple ment negative numbers or moving values from a larger variable to a smaller one For example look what happens when you move a two s complement negative number into a byte b2 99 debug sdec b2 Show signed decimal result 157 How did 99 become 157 Let s look at the bits 99 is 01100011 binary When the BS2 negates 99 it converts the number to 16 bits 0000000001100011 and then takes the two s complement 1111111110011101 Since we ve asked for the result
86. word variable BASIC Stamp Il LOOKDOWN value value0 value1 valueN variable e VALUE is a constant expression or a bit nibble byte or word variable e is lt gt gt lt lt gt is the default e VALUEO VALUE etc are constants expressions or bit nibble byte or word variables e VARIABLE is a bit nibble byte or word variable Conversion BS1 gt BS52 0 1 Change all parentheses and to brackets and Any or all arguments may be nibble variables for efficiency e The optional operator may be included for flexibility Example BS1 LOOKDOWN bo A B C D b1 BS2 LOOKDOWN ByteValue A B C D Result E IAS dra aa 1 Change all brackets and to parentheses and 2 Remove the argument if it exists and modify the list if possible is assumed in the Stamp I Page 412 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C e None of the arguments may nibble variables Example BS2 LOOKDOWN ByteValue 1 2 3 4 Result BS1 LOOKDOWN bo 1 2 3 4 b1 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 413 BASIC Stamp and Stamp II Conversions LOOKUP BASIC Stamp LOOKUP index value0 value1 valueN variable e INDEX is a constant or a bit byte or word variable e VALUEO VALUE etc are constant
87. 0 FDES by itself The result is 4 225 000 000 or FBD46240 The star or normal multiplication instruction would return the lower 16 bits 6240 The instruction returns FBD4 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 241 BASIC Stamp Il w1 FDE8 w2 wi wi Multiply FDE8 by itself debug hex w2 Return high 16 bits Multiplies variables and or constants returning the middle 16 bits of the 32 bit result This has the effect of multiplying a value by a whole number and a fraction The whole number is the upper byte of the multiplier 0 to 255 whole units and the fraction is the lower byte of the multiplier 0 to 255 units of 1 256 each The star slash instruc tion gives you an excellent workaround for the BS2 s integer only math Suppose you want to multiply a value by 1 5 The whole number and therefore the upper byte of the multiplier would be 1 and the lower byte fractional part would be 128 since 128 256 0 5 It may be clearer to express the multiplier in hex as 0180 since hex keeps the con tents of the upper and lower bytes separate An example w1 100 w1 w1 0180 Multiply by 1 5 1 128 256 debug w1 Show result 150 To calculate constants for use with the instruction put the whole number portion in the upper byte then multiply the fractional part by 256 and put that in the lower byte For instance take Pi r 3 14159 The upper byte wo
88. 0 7 is required a 3 bit value and the number 12 is provided the Stamp will only use the lowest 3 bits which would correspond to a value of 4 HOW TO USE THIS APPENDIX This appendix should be used as a reference for converting specific commands or other PBASIC entities from one version of the Stamp to another While this document will help to convert most of the pro grams available for the Stamp I and Stamp Il some programs may require logic changes to achieve correct results The required logic changes are beyond the scope of this document In an effort to lessen the time spent in performing a code conversion the following routine should be followed in the order listed for each program 1 Review the entire code briefly to familiarize yourself with how it func tions and the types of commands and expressions which are used 2 Consult the RAM SPACE AND REGISTER ALLOCATION section in this manual and go through the entire program carefully converting symbols variables and expressions to the proper format 3 Go through the code instruction by instruction consulting the appropriate section in this document and convert each one to the appropriate form 4 Make any necessary circuit changes as required by the new stamp code Page 376 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C COMMAND AND DIRECTIVE DIFFERENCES Many enhancements to the Stamp I command structure were made in the Stamp II Commands have
89. 1 w2 Add the numbers debug sdec w1 Show the result 599 Subtracts variables and or constants returning a 16 bit result Works exactly as you would expect with unsigned integers from 0 to 65535 If the result is negative it will be correctly expressed as a signed 16 bit number For example w1 1000 w2 1999 wi wi w2 Subtract the numbers debug sdec w1 Show the result 999 Divides variables and or constants returning a 16 bit result Works exactly as you would expect with unsigned integers from 0 to 65535 Use only with positive values signed values do not provide correct results Here s an example of unsigned division w1 1000 w2 5 wi w1 w2 Divide w1 by w2 debug dec w1 Show the result 200 A workaround to the inability to divide signed numbers is to have your program divide absolute values then negate the result if one and only one of the operands was negative All values must lie within the range of 32767 to 32767 Here is an example sign var bit Bit to hold the sign w1 100 w2 3200 sign w1 bit15 w2 bit15 Sign w1 sign XOR w2 sign w2 abs w2 abs w1 Divide absolute values if sign 0 then skipO Negate result if one of the w2 w2 arguments was negative skipO debug sdec w2 Show the result 32 Page 240 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Il Returns the remainder left after dividing one value by anoth
90. 1 5V PO g 5 20 D P15 P1 6 19 P14 P2 q 7 18 D P13 P3 H 8 17 H P12 P4 9 16 P11 P5 g 10 15 A P10 P6 g 11 14 i P9 P7 t2 13 P8 Pin Name Description Comments 1 TX Serial output Connect to pin 2 of PC serial DB9 RX 2 RX Serial input Connect to pin 3 of PC serial DB9 TX 3 ATN Active high reset Connect to pin 4 of PC serial DB9 DTR 4 GND Serial ground Connect to pin 5 of PC serial DB9 GND 5 PO 1 0 pin 0 Each pin can source 20 ma and sink 25 ma 6 P1 1 0 pin 1 7 P2 1 0 pin 2 P0 P7 and P8 P15 as groups can each 8 P3 1 0 pin 3 source a total of 40 ma and sink 50 ma 9 P4 1 0 pin 4 10 P5 I O pin 5 11 P6 1 0 pin 6 12 P7 1 0 pin 7 13 P8 1 0 pin 8 14 P9 1 0 pin 9 15 P10 I O pin 10 16 P11 1 0 pin 11 17 P12 1 0 pin 12 18 P13 1 0 pin 13 19 P14 1 0 pin 14 20 P15 1 0 pin 15 21 5V 5V supply 5 volt input or regulated output 22 RES Active low reset Pull low to reset goes low during reset 23 GND System ground 24 PWR Regulator input Voltage regulator input takes 6 15 volts TX 24 Hl PWR Page 200 BASIC Stamp Programming Manual 1 9 Parallax Inc For automatic serial port selection by the BASIC Stamp II software there must also be aconnection from DSR DB9 pin 6 to RTS DB9 pin 7 This connection is made on the BASIC Stamp II carrier board If you are not using the carrier board then you must make this connection yourself or use the command line option to tell the software which serial port to use
91. 20 FOR Count 1 TO 8 DATA BITO PULSOUT CLK 1 BO B0 2 NEXT Count BASIC Stamp and Stamp II Conversions Value to be shifted out Clock pin is pin O Data pin is pin 1 Set Clock and Data pins as outputs Note that value is still intact after were done shifting Value to be shifted out Clock pin is pin O Data pin is pin 1 Set Clock and Data pins as outputs Note that value is still intact after were done shifting Counter variable Clock pin is pin O Data pin is pin 1 Set Clock and Data pins as outputs Value to be shifted out Send out LSB of BO Clock the data Shift the value left note that the value is lost after were done shifting Page 442 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C SLEEP BASIC Stamp SLEEP seconds e SECONDS is a constant or a bit byte or word variable in the range 1 65535 specifying the number of seconds to sleep BASIC Stamp Il SLEEP seconds e SECONDS is a constant expression or a bit nibble byte or word variable in the range 0 65535 specifying the number of seconds to sleep CONVERSION No conversion necessary Parallax Inc BASIC Stamp Programming Manual 1 9 Page 443 BASIC Stamp and Stamp II Conversions SOUND See FREQOUT Page 444 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C STOP BASIC Stamp NO EQUIVELANT COMMAND
92. 298 8s2 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 357 BASIC Stamp Il Application Notes Custom Shift Routines The key to successful use of the Shift instruc tions is obtaining reading and understanding the manufacturer s specification sheets In addition to providing the data required to fill in the parameters for the Shift instructions the data sheets document configuration bits operating modes internal register arrangements and lots of other valuable data Sources The components used in the example applications are avail able from Digi Key 710 Brooks Avenue South P O Box 677 Thief River Falls MN 56701 0677 phone 1 800 344 4539 Packages of components documentation and source code listings for the Stamp I Stamp Il and PIC microcontrollers are available from Scott Edwards Electronics phone 520 459 4802 fax 520 459 0623 These packages known as AppKits are available for the LTC1298 ADC DS1620 digital thermom eter Xicor X25640 8 kB EEPROM and others Program listings These programs may be downloaded from our Internet ftp site at ftp parallaxinc com The ftp site may be reached di rectly or through our web site at http www parallaxinc com LISTING 1 SHIFTOUT TO 74HC595 Program 74HC595 BS2 Demonstrate 74HC595 shift register with Shiftout This program demonstrates the use of the 74HC595 shift register as an 8 bit output port accessed via the Shiftout instruction The 595 requ
93. 46 STOP 338 445 Unary operators 236 238 TOGGLE 339 340 446 Unary operators table 236 WRITE 341 343 447 Woe XOUT 344 346 448 ce Interfacing to XOR logical 239 246 MAX 239 243 74HC595 355 356 358 359 ee AID converter 356 360 ae pulses 91 98 204 289 290 Buttons 205 159 165 249 250 387 388 Be ent z Accessing 224 225 Many switches with one pin 155 158 M 14 91 Multiple Stamps 327 329 ap 214 215 Parallel Latch 353 354 ee Phoneline 361 363 aee e i Pulsing signals 91 98 204 251 252 289 2 Modifiers symbols 222 224 Serial Toe aoe a enre Modifiers symbols figure 222 Servos 85 90 i Modifiers serial table 311 324 X 10 Devices 347 351 Monochrome mode editor 201 j MIN 239 242 243 Multiplication 239 241 Multiplication high 16 bits 239 241 242 L Multiply by 8 bit whole part 239 242 Sokan Musical notes 206 264 265 Math Addition 239 240 AND logical amp 239 245 DIG 239 244 Division 239 240 Division remainder 239 241 Expressions 225 227 399 400 MAX 239 243 MIN 239 242 243 Multiplication 239 241 Multiplication high 16 bits 239 241 242 Multiply by 8 bit whole part 239 242 Internet access ii Introduction 5 Loading programs 202 LOOKDOWN 204 278 281 412 413 LOOKUP 204 282 283 414 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 461 BASIC Stamp Il Index N NAP 20
94. 5 291 292 422 REVERSE 204 305 306 430 SHIFTIN 205 330 333 SHIFTOUT 205 334 335 TOGGLE 339 340 446 XOUT 344 346 Dim 349 Direction setting of I O pins 214 217 DIRS register 214 217 Components of table 216 DIRS figure 216 Division 239 240 Division remainder 239 241 DTMFOUT 206 257 259 396 E Editor 201 Command line options 201 Cut copy 4 paste 203 Data storage 228 230 302 303 341 343 Entering 4 editing programs 202 Function keys 202 203 Loading a program 202 Memory map 224 225 Memory map table 214 Monochrome mode 201 Running 201 Running a program 202 Saving a program 202 Serial port selection 201 EEPROM Chip 209 DATA 206 213 302 303 341 343 397 Lifetime rating 209 341 READ 206 302 303 429 Size 207 209 341 397 WRITE 341 343 447 END 206 260 398 Entering amp editing programs 202 Expressions math 225 227 399 400 F Flow control 317 318 326 327 FOR NEXT 204 261 263 401 402 FREQOUT 403 404 Function keys editor 202 203 JG Generating pulses 291 292 Generating random numbers 204 296 297 425 GOSUB 204 266 267 405 GOTO 204 268 406 H Hardware Detailed 207 212 General 199 200 HIGH 204 269 407 l 1 0 Pins Accessing 214 217 Directions 208 General 208 Impedence 208 Pin out 200 IF THEN 204 270 275 408 INPUT 204 276 277 409 INS register 214 217 Components of table 216 INS
95. 55 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 429 BASIC Stamp and Stamp II Conversions REVERSE BASIC Stamp REVERSE pin e PIN is a constant or a bit byte or word variable in the range 0 7 BASIC Stamp Il REVERSE pin e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 Conversion BS1 gt BS200 e PIN may be a constant expression or a bit nibble byte or word variable in the range 0 15 CO a emos e ata E data UA do E e PIN must be a constant or a bit byte or word variable in the range 0 7 Example BS2 REVERSE 15 BS1 REVERSE 7 Page 430 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C SERIN BASIC Stamp SERIN pin baudmode qualifier qualifier variable e PIN is a constant or a bit byte or word variable in the range 0 7 e BAUDMODE is a constant or a bit byte or word variable in the range 0 7 or a symbol with the following format T N 2400 1120016001300 e QUALIFIERs are optional constants or a bit byte or word vari ables which must be received in the designated order for execu tion to continue e VARIABLE is a bit byte or word variable e will convert ascii numbers to a binary equivalent BASIC Stamp Il SERIN rpin fpin baudmode plabel timeout tlabel inputdata e RPIN is a constant expression or a bit nibble byte or word vari able in the range 0 16 e FPIN i
96. 6 285 286 416 NCD 236 237 Negation 237 Networking Stamps 135 139 327 329 Networking Stamps figure 328 Numerics 204 LOOKDOWN 204 278 281 412 413 LOOKUP 204 282 283 414 RANDOM 204 296 297 425 Numeric Strings serial comm 310 313 322 325 O Open signaling serial comm 327 329 Operators table 239 Operators in constants table 227 OR logical 239 245 Order of evaluation 232 233 OUTPUT 204 287 417 OUTS register 214 217 Components of table 216 OUTS figure 216 P Packing list 198 Pacing 325 Parallel Latch Interfacing to a 353 359 Parity and parity errors 315 316 PAUSE 206 288 418 PBASIC Instruction speed 208 Interpreter chip 208 209 Phoneline interface 361 363 Pin out 200 Reset pin 200 1 0 pins 200 Power control 206 END 206 210 260 398 NAP 206 210 285 286 416 SLEEP 206 210 336 337 443 Power supply 198 200 210 END 206 210 260 398 NAP 206 210 285 286 416 Powering external circuits 200 SLEEP 206 210 336 337 443 Powerline Interface schematic 348 Predefined variables 217 Variables tables 214 Program Debugging 206 DEBUG 206 253 256 390 393 Programming Structures Constants 225 227 Symbols value labels 217 224 Programming connections 199 200 210 212 Pulse measurements Practical 91 98 Pulses Counting 205 251 252 Generating 291 292 Reading 206 251 252 289 290 PULSIN 204 289 290 420 421 PULSOUT 205 291 292
97. 99 The absolute value of 99 is also 99 ABS can be said to strip off the minus sign from a negative number leaving posi tive numbers unchanged ABS works on two s complement negative numbers Examples of ABS at work wi 99 Put 99 two s complement format into w1 debug sdec w1 Display it on the screen as a signed w1 ABS w1 Now take its absolute value debug sdec w1 Display it on the screen as a signed SQR Computes the integer square root of an unsigned 16 bit number The number must be unsigned when you think about it because the square root of a negative number is an imaginary number Remember that most square roots have a fractional part that the BS2 discards in doing its integer only math So it computes the square root of 100 as 10 cor rect but the square root of 99 as 9 the actual is close to 9 95 Example Page 236 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il debug SQR 100 Display square root of 100 10 debug SQR 99 Display of square root of 99 9 due to truncation DCD 2 power decoder of a four bit value DCD accepts a value from 0 to 15 and returns a 16 bit number with that bit number set to 1 For ex ample w1 DCD 12 Set bit 12 debug bin w1 Display result 0001000000000000 NCD Priority encoder of a 16 bit value NCD takes a 16 bit value finds the highest bit containing a 1 and returns the bit position plus one 1 through 16 If no
98. 9V zeners both DK 1N5228BCT ND Parts Sources Digi Key DK 1 800 344 4539 Jameco JC 1 800 831 4242 or 218 681 6674 or 415 592 8097 is marked by the nibble F since this is not a valid phone dialing digit EEloc var byte EEPROM address of stored number EEbyte var byte Byte containing two DTMF digits DTdigit var EEbyte highnib Digit to dial phone var nib Pick a phone hiLo var bit Bit to select upper and lower nibble Scott data 45 94 80 2F Phone 459 4802 Chip data 19 16 62 48 33 3F Phone 1 916 624 8333 Info data 15 20 55 51 21 2F Phone 1 520 555 1212 for phone 0 to 2 Dial each phone lookup phone Scott Chip Info EEloc Get location of in EEPROM dial read EEloc EEbyte Retrieve byte from EEPROM for hiLo 0 to 1 Dial upper and lower digits if DTdigit F then done Hex F is end of number flag DTMFout 0 DT digit Dial digit EEbyte EEbyte lt lt 4 Shift in next digit next EEloc EEloc 1 Next pair of digits goto dial Keep dialing until done F in DTdigit done This number is done pause 2000 Wait a couple of seconds next Dial next phone number stop Parallax Inc BASIC Stamp Programming Manual 1 9 Page 259 BASIC Stamp Il End END End the program placing the BS2 in a low power mode Explanation End puts the BS2 into its inactive low power mode In this mode the BS2 s current draw exclusive of loads drivenby the
99. ASE All command names will be shown is upper case let lower case tering within the command syntax line Argument names will be in upper case lettering outside of the command syntax line All arguments within the command syntax line will be in lower case lettering Parentheses may appear inside a command syntax line and indicate that an actual parenthesis character is re quired at that location Brackets may appear inside a command syntax line and indicate that an actual bracket character is required at that location Brackets with an internal separator may appear in the text following a command syntax line and indicate that one and only one of the items between the separa tors may be specified Wavy brackets may appear inside a command syntax line and indicate that the items they surround are op tional and may be left out of the command The wavy bracket characters themselves should not be used within the command however Parallax Inc BASIC Stamp Programming Manual 1 9 Page 375 BASIC Stamp and Stamp II Conversions H 4 Double periods between numbers indicate that a con tiguous range of numbers are allowed for the given argument Wherever a range of numbers are shown it usually indicates the valid range which a command expects to see If a number is given which is outside of this range the Stamp will only use the lowest bits of the value which correspond to the indicated range For example if the range
100. ATION BASIC Stamp The RAM space in the BASIC Stamp I consists of eight 16 bit words Each word has a unique predefined name as shown in the table below Each word consists of two 8 bit bytes which have unique predefined names Additionally the first two words PORT and WO can be ac cessed as individual bits The first word named PORT is reserved to allow access and control over the 8 I O pins on the Stamp I This word consists of two bytes PINS and DIRS which represent the status and the data direction of the pins The other seven words are general purpose registers for use by the PBASIC program They may be used via their direct name or by as signing symbols as aliases to specific registers To assign a symbol to a specific register use the following format SYMBOL symbolname registername Example SYMBOL LoopCounter WO e SYMBOLNAME is a series of characters letters numbers and un derscores but not starting with a number up to 32 characters in length e REGISTERNAME is a valid bit byte or word register name as shown in the table below You may assign a symbol to a constant value by using a similar format SYMBOL symbolname constantvalue Example SYMBOL MaxLoops 100 e SYMBOLNAME is a series of characters letters numbers and un derscores but not starting with a number up to 32 characters in length Page 378 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C e CONSTANTVALUE is
101. BASIC Stamp ld ii 406 BASIC Stamp lDisviiismrimcan caracas ion 406 AAA O 407 BASIC Stamp leinne ii naaa 407 BASIC Stamp ll inci aii aaen SiE 407 AO ARA ET 408 BASIC Stamp iocssccacstesecstocisas hasscsanbasansdsnesnneadeoadescassesetsnaassaocedene 408 BASIC Stamp ll w cntetncteeih cine Gate iene ainhice 408 A AR O TO 409 BASIC Stamp limi Retain a Rasa 409 BASIC Stamp Issie EE e eai EErEE 409 1 A RO 410 A cities n an eetan ie aaea Soa ains ei 410 BASIC Stamp Metos eiia ii eer EE i 410 LOOKDOWN ios se Succ seecevedeveeswedewereccevecusvexteccsesedacctecebeceseerneuee 412 BASIC Stamp l ccscccacicestesstocisasctasacteasraseadseceabieasaechateassesebaraesseoesiens 412 BASIC StamplL ona ii ati 412 LOOKUP csc os cerstessedcaceasscoecs cies tevesnsseccssncescttcccsadecsseusrescederess 414 BASIC Stamp lirica dsd Sele ooh 414 BASIC Samples 414 Page 370 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C BASIC Stamp BASIC Stamp II BASIC Stamp BASIC Stamp II Willian ina BASIC Stamp BASIC Stamp II PAUSE A senesancheueannesceustuntanasunsaauceutianestimesaieude BASIC Stamp BASIC Stamp II POT See RCTIME ceccesecceceeseceeseccecceceececceseeceseceasensenees e a lt BASIC Stamp BASIC Stamp II PULSOUT A BASIC Stamp BASIC Stamp II BASIC Stamp BASIC Stamp II BASIC Stamp BASIC Stamp II ACTES ona nnmnnn na BASIC Stamp BASIC Stamp II BASIC Stamp BASIC Stamp II REVERSE coc
102. BASICS tamp Programming Manual Version 1 9 PAALAX 7 Warranty Parallax warrants its products against defects in materials and workmanship for a period of 90 days If you discover a defect Parallax will at its option repair replace or refund the purchase price Simply return the product with a description of the problem and a copy of your invoice if you do not have your invoice please include your name and telephone number We will return your product or its replacement using the same shipping method used to ship the product to Parallax for instance if you ship your product via overnight express we will do the same This warranty does not apply if the product has been modified or damaged by accident abuse or misuse 14 Day Money Back Guarantee Tf within 14 days of having received your product you find that it does not suit your needs you may return it for a refund Parallax will refund the purchase price of the product excluding shipping handling costs This does not apply if the product has been altered or damaged Copyrights and Trademarks Copyright O 1998 by Parallax Inc All rights reserved PBASIC is a trademark and Parallax the Parallax logo and BASIC Stamp are registered trademarks of Parallax Inc PIC is a registered trademark of Microchip Technology Inc Other brand and product names are trademarks or registered trademarks of their respective holders Disclaimer of Liability Parallax Inc isnotrespons
103. Data directive like so greet data 32 Hello there The number following the at sign becomes the initial pointer value regardless of the pointer s previous value Data still automatically in crements the pointer value as in previous examples so Data directives that follow the example above will start at address 43 Another way to move the pointer is to tell Data to set aside space for a particular number of bytes For example Parallax Inc BASIC Stamp Programming Manual 1 9 Page 229 BASIC Stamp Il table1 data 13 26 117 0 19 56 Place bytes into EEPROM table2 data 20 Move pointer ahead by 20 The value in parentheses tells Data to move its pointer but not to store anything in those bytes The bytes at the addresses starting at table2 could therefore contain leftover data from previous programs If that s not acceptable you can tell Data to fill those bytes up with a particular value table2 data 0 20 Fill 20 bytes with Os The previous contents of those 20 EEPROM bytes will be overwritten with Os If you are writing programs that store data in EEPROM at runtime this is an important concept EEPROM is not overwritten during programming unless it is 1 needed for program storage or 2 filled by a Data directive specifying data to be written A directive like Data 20 does not change the data stored in the corresponding EEPROM locations Page 230 BASIC Stamp Programming Manual 1 9 Par
104. E is a constant or a bit byte or word variable in the range of 0 255 representing frequencies in the range 94 8 Hz to 10 550 Hz e DURATION is a constant or a bit byte or word variable in the range of 1 255 specifying the duration in 12 ms units BASIC Stamp Il FREQOUT pin milliseconds freq1 freq2 e PIN is a constant expression or a bit nibble byte or word variable in the range of 0 15 e MILLISECONDS is a constant expression or a bit nibble byte or word variable e FREQ and FREQ2 are constant expression or bit nibble byte or word variables in the range 0 32767 representing the correspond ing frequencies FREQ2 may be used to output 2 sine waves on the same pin simultaneously Conversion BSI gt BS2 000 1 Change command name SOUND to FREQOUT 2 Remove the parentheses and 3 Swap the orientation of DURATION with NOTE and multiply DU RATION by 12 4 MILLISECONDS DURATION 12 5 Calculate FREO1 using the formula FREQ1 1 95 x 10 127 NOTE 83 x 10 5 Place successive NOTE and DURATION pairs into separate FREQOUT commands Parallax Inc BASIC Stamp Programming Manual 1 9 Page 403 BASIC Stamp and Stamp II Conversions e PIN may be in the range 0 15 Example BS1 SOUND 1 92 128 75 25 BS2 FREQOUT 1 1536 333 FREQOUT 1 300 226 PN PST E Ba alia ten n a aaa ode 1 Change command name FREQOUT to SOUND 2 PIN must
105. IC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Controlling Data Flow When you design an application that requires serial communication between BS2s you have to work within these limitations e When the BS2 is sending or receiving data it can t execute other instructions e When the BS2is executing other instructions itcan tsend orreceive data e The BS2 executes 3000 to 4000 instructions per second and there is not serial buffer in the BS2 as there is in PCs At most serial rates the BS2 cannot receive data via Serin process it and execute another Serin in time to catch the next chunk of data unless there are significant pauses between data transmissions These limitations can be addressed by using flow control the fpin option for Serin and Serout at baud rates of up to 19200 Through fpin Serin can tell a BS2 sender when it is ready to receive data For that matter fpin flow control follows the rules of other serial handshaking schemes but most computers other than the BS2 cannot start and stop serial transmission on a byte by byte basis That s why this discussion is limited to BS2 to BS2 communication Here s an example of a flow control Serin data through pin 1 flow control through pin 0 9600 baud N8 noninverted serData var byte Serin 1 0 84 serData When Serin executes pin 1 rpin is made an input in preparation for incoming data and pin 0 fpin is made output low to signal
106. LE WO W6 WRITE ABS AND ASC BELL BKSP BIN BIN1 BIN4 BIT BITO BIT15 BRANCH BRIGHT BUTTON BYTE CLS CON COS COUNT CR DATA DCD DEBUG DEC DEC1 DEC5 DIG DIM DIRO DIR15 DIRA DIRB DIRC DIRD DIRH DIRL DIRS DTMFOUT END FOR FREQOUT GOSUB GOTO HEX HEX1 HEX4 HIGH HIGHBIT HIGHNIB HOME IHEX IHEX1 IHEX4 IF INO IN15 INA INB INC IND INH INL INPUT INS ISBIN ISBIN1 ISBIN16 ISHEX ISHEX1 ISHEX4 LIGHTSON LOOKDOWN LOOKUP LOW LOWBIT LOWNIB LSBFIRST LSBPOST LSBPRE MAX MIN MSBFIRST MSBPOST MSBPRE NAP NCD NEXT NIB NIBO NIB3 NOT OR OUTO OUT15 OUTA OUTB OUTC OUTD OUTH Appendix B OUTL OUTPUT OUTS PAUSE RCTIME REV PULSIN PULSOUT PWM RANDOM READ REP REVERSE SBIN SBIN1 SBIN16 SDEC SDEC1 SDEC5 SERIN SEROUT SHEX SHEX1 SHEX4 SHIFTIN SHIFTOUT SIN SKIP SLEEP STEP STOP STR SQR TAB THEN TO TOGGLE UNITOFF UNITON UNITSOFF VAR WAIT WAITSTR WORD WRITE XOR XOUT Parallax Inc BASIC Stamp Programming Manual 1 9 Page 367 Appendix B Page 368 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C BASIC Stamp and Stamp Il Conversions INTRODUCTION oomooncoccconconconncnnnconconnconconncnnronnnnanennrannenananos 373 TYPOGRAPHICALCONVENTIONS ccecceeeeecceeeeeeeeeeeeeeeneeeeeenens 373 HOW TO USE THISAPPENDIX ooccooccoococcconconccnncnnnnonnnnnronnnnnnano 376 COMMAND AND DIRECTIVE DIFFERENCES 00sce
107. ORD data size WORD data size e POINTER is an optional undefined constant name or a bit nibble byte or word variable which is assigned the value of the first memory location in which data is written e LOCATION is an optional constant expression or a bit nibble byte or word variable which designates the first memory location in which data is to be written e WORD is an optional switch which causes DATA to be stored as two separate bytes in memory e DATA is an optional constant or expression to be written to memory e SIZE is an optional constant or expression which designates the number of bytes of defined or undefined data to write reserve in memory If DATA is not specified then undefined data space is reserved and if DATA is specified then SIZE bytes of data equal to DATA are written to memory Conversion BS1 gt BS2 00 2 1 Replace the EEPROM directive with the DATA directive 2 If LOCATION is specified insert an at sign immediately before it 3 Remove the open and close parentheses and e The POINTER constant and WORD and SIZE directives may be used for added flexibility Page 394 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C Example BS1 EEPROM 100 255 128 64 92 BS2 DATA 100 255 128 64 92 Conversion BSI BS2 000 1 Ifa POINTER constant is specified remove it and set it equal to the value of the first location using a Stamp I assi
108. OSUB centennial In PBASIC IF NOT x 100 then noCent gosub centennial noCent IF x 100 THEN gosub centennial Program continues Parallax Inc BASIC Stamp Programming Manual 1 9 Page 273 BASIC Stamp Il Internal Workings and Potential Bugs Internally the BS2 defines false as 0 and true as any value other than 0 Consider the following instructions flag var bit flag 1 IF flag THEN isTrue debug false stop isTrue debug true stop Since flag is 1 If Then would evaluate it as true and print the message true on the screen Suppose you changed the If Then instruction to read IF NOT flag THEN isTrue That would also evaluate as true Whoa Isn t NOT 1 the same thing as 0 No at least not in the 16 bit world of the BS2 Internally the BS2 sees a bit variable containing 1 as the 16 bit number 0000000000000001 So it sees the NOT of that as 1111111111111110 Since any non zero number is regarded as true NOT 1 is true Strange but true The easiest way to avoid the kinds of problems this might cause is to always use a conditional operator with If Then Change the example above to read IF flag 1 THEN isTrue The result of the comparison will follow If Then rules And the logical operators will work as they should IF NOT flag 1 THEN isTrue will correctly evaluate to false when flag contains 1 This also means that you should only use the named logic operators N
109. OT AND OR and XOR with If Then These operators format their results correctly for If Then instructions The other logical operators represented by symbols and do not Demo Program The program below generates a series of 16 bit random numbers and tests each to determine whether they re divisible by 3 A number is di Page 274 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il visible by another if the remainder from division determined by the operator is 0 If a number is divisible by 3 then it is printed otherwise the program generates another random number The program counts how many numbers it prints and quits when this number reaches 10 sample var word Random number to be tested samps var nib Number of samples taken mul3 random sample Put a random number into sample IF NOT sample 3 0 THEN mul3 Not multiple of 3 Try again debug dec sample is divisible by 3 cr Print message samps samps 1 Count multiples of 3 IF samps 10 THEN done Quit with 10 samples goto mul3 done debug cr All done stop Parallax Inc BASIC Stamp Programming Manual 1 9 Page 275 BASIC Stamp Il Input INPUT pin Make the specified pin an input write a 0 to the corresponding bit of DIRS e Pinis a variable constant 0 15 that specifies the I O pin to use Explanation There are several ways to make a pin an input When a program begins all of the BS2 s
110. Play the 29 notes of the Lookup table lookup i E D C D E E E R D D D R E G G R E D C D E E E E D D E D C f FREQOUT 0 350 f f 8 max 32768 next stop Parallax Inc BASIC Stamp Programming Manual 1 9 Page 265 BASIC Stamp Il Gosub GOSUB addressLabel Store the address of the next instruction after Gosub then go to the point in the program specified by addressLabel e AddressLabelis a label that specifies where to go Explanation Gosub is a close relative of Goto After Gosub the program executes code beginning at the specified address label See the entry on Goto for more information on assigning address labels Unlike Goto Gosub also stores the address of the instruction immediately following itself When the program encounters a Return instruction it interprets it to mean go to the instruction that follows the most recent Gosub Up to 255 Gosubs are allowed per program but they may be nested only four deep In other words the subroutine that s the destination of a Gosub can contain a Gosub to another subroutine and so on to a maxi mum depth total number of Gosubs before the first Return of four Any deeper and the program will never find its way back to the starting point the instruction following the very first Gosub When Gosubs are nested each Return takes the program back to the instruction after the most recent Gosub If a series of instructions is used at more than one point in your progra
111. SION No conversion necessary Page 418 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C POT See RCTIME Parallax Inc BASIC Stamp Programming Manual 1 9 Page 419 BASIC Stamp and Stamp II Conversions PULSIN BASIC Stamp PULSIN pin state variable e PIN is a constant expression or a bit byte or word variable in the range 0 7 e STATE is a constant expression or a bit byte or word variable in the range 0 1 e VARIABLE is a bit byte or word variable e Measurements are in 10uS intervals and the instruction will time out in 0 65535 seconds BASIC Stamp Il PULSIN pin state variable e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 e STATE is a constant expression or a bit nibble byte or word vari able in the range 0 1 e VARIABLE is a bit nibble byte or word variable e Measurements are in 2uS intervals and the instruction will time out in 0 13107 seconds SONERION O aot le e pelo heen ote e Any or all arguments may be a nibble variable for efficiency e PIN may be in the range 0 15 e Returned value is 5 times less than in the Stamp I counterpart Page 420 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C O DOU NESE al of aves e ies e None of the arguments may be a nibble variable e PIN must be in the range 0 7 e Returned value is 5 times more than in the Stamp I counterpart Example BS2
112. Stamp I The Basic Stamp I does not have separate INS and OUTS registers both functions are rolled into the pin variables such as pin7 So in the Parallax Inc BASIC Stamp Programming Manual 1 9 Page 291 BASIC Stamp Il situation outlined above and shown in figure I 10 the BS1 would pro duce a single negative pulse and leave the pin output high when done To make the BS2 work the same way copy the state of the pin s INS bit to instruction executes PULSOUT 7 5 10s positive pulse WM Vv MN pin 7 in input mode pin 7 gt O scope DIR7 0 s OUT7 0 pin 7 connected to but held han by A A oscilloscope as resistor to 5V pin changes to pin remains shown output 6us output low DIR7 1 OUT7 0 Figure 1 10 its OUTS bit before Pulsout OUT7 IN7_ Copy input state to output driver PULSOUT 7 5 10 us pulse on pin 7 Now the instruction would pulse low briefly then return output high just like the BS1 Of course BS1 Pulsout works in units of 10ys so you would have to adjust the timing to make an exact match but you get the idea Demo Program This program blinks an LED on for 10ms at 1 second intervals Connect the LED to I O pin 0 45V as shown in figure I 11 Y high 0 Set the pin high LED off LED again pause 1000 Wait one second 2200 PULSOUT 0 5000 Flash the LED for 10 ms goto again Repeat endlessly YO pin Figure I 11 Page 292 BASIC Stamp Programming Manual
113. There are no registers on the Stamp I which are nibble addressable The best possible solution is to place one or two nibble variables within a byte regis ter and modify the code accordingly The only general purpose registers on the Stamp I which are bit addressable are BO and B1 BITO BIT7 correspond to the bits within BO and BIT8 BIT15 correspond to the bits within B1 If you have a set of bit registers in the Stamp II program you should reserve BO and B1 for this bit usage i e do not assign any other symbols to BO or B1 3 On all variable and constant declarations replace the variable or constant directive VAR or CON with an equal sign AssicNMENT Conversion BS1 BS2 000 1 Remove the LET command if it is specified 2 If PINS or PINO PIN7 appears to the left or to the left and right of the equal sign replace PINS with OUTS and PINO PIN7 with OUTO0 OUT 7 3 If PINS or PINO PIN7 appears to the right of the equal sign replace PINS with INS and PINO PIN7 with INO IN7 4 If PORT appears in an assignment determine which byte PINS or DIRS is affected and replace PORT with the corresponding Stamp II symbol INS OUTS or DIRS If both bytes are affected separate assignment statements may be needed to accomplish the equiva lent effect in the Stamp II Page 384 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C BRANCH BASIC Stamp BRANCH index la
114. a a No conversion possible Page 448 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix D This appendix contains electrical and physical details and schematics of the BASIC Stamp I and BASIC Stamp II modules BS1 IC and BS2 IC The schematics show interpreter chip connections for the SSOP package type only When duplicating the BASIC Stamp module circuit using DIP or SOIC packaged interpreter chips please consult the appropriate databook or call Parallax Technical Support for assis tance Parallax Inc BASIC Stamp Programming Manual 1 9 Page 449 BASIC Stamp Il circuit in SMT PBASIC2 Interpreter AV Brown Out Reset 2048 Byte EEPROM PC Serial Interface 20MHz Resonator 16 User I O Pins 5V Regulator 8mA Run 100uA Sleep No loads I O s VSS VDD PIN NAME FUNCTION DESCRIPTION After programming these pins may be 3 Am Attention Temporarily connects to PC s DTR left unconnected e vss Ground Temporarily connects to PCS GND __ User I O 0 User port pins that can be TES as inputs or outputs User I O 1 In output mode User I O 2 Pins will source from VDD or sink to VSS Pins User I O 3 should not be allowed to source more that 20mA or User I O 4 sink more than 25mAeach As groups PO P7 User I O 5 and P8 P15 should not be allowed to source more User I O 6 than 40mA or sink more that 50mA each User I O 7 In input mode User I O 8 Pins are floating less than 1uA lea
115. a monitoring PC It then waits to hear the word pong plus LF CR pauses 2 seconds then loops b_mode con 32852 Baudmode 9600 noninverted open 8N again serout 0 b_mode ping 10 13 serin 0 b_mode wait pong 10 13 pause 2000 goto again Figure l 24 CMOS Inverter or Serial Line Driver PC Receive Data RD PC Signal Ground SG Page 328 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Net 2 This BS2 waits for the word ping plus LF CR then pauses 2 seconds and sends the word pong LF CR and loops b_mode con 32852 Baudmode 9600 noninverted open 8N again serin 0 b_mode wait ping 10 13 pause 2000 serout 0 b_mode pong 10 13 goto again The result of the two programs is that a monitoring PC would see the words ping and pong appear on the screen at 2 second intervals showing that the pair of BS2s is sending and receiving on the same lines This arrangement could be expanded to dozens of BS2s with the right programming EN Demo Program See the examples above Parallax Inc BASIC Stamp Programming Manual 1 9 Page 329 BASIC Stamp Il Shiftin SHIFTIN dpin cpin mode result bits result bits Shift data in from a synchronous serial device e Dpinis a variable constant 0 15 that specifies the I O pin that will be connected to the synchronous serial device s data output This pin s I O direction wil
116. a shows Shiftin s timing For instance we can use Shiftin to acquire the bits generated by a toggle flip flop as shown in figure I 25b This makes a good example because we know exactly what data this will give us each bit will be the inverse of the previous one If the first bit Figure 1 25 Shiftin Timing Diagram Circuit for Shiftin Demo 14us Clock T cpin D46usD 5Vo Data f Q dpin L 7 8 10 pre modes post modes sample data before b clock pulse clock pulse IC 1 2 of a 4013 dual D flip flop wired as a toggle FF Parallax Inc BASIC Stamp Programming Manual 1 9 Page 331 BASIC Stamp Il is 1 the sequence will be 10101010101 Connect the flip flop as shown in figure I 25b and run the following program setup if INO 1 then continue Force FF to start pulsout 1 10 sequence with data 1 continue SHIFTIN 0 1 msbpre b1 Shiftin msb first pre clock debug Pre clock bin8 b1 cr Show the result in binary SHIFTIN 0 1 msbpost b1 Shiftin msb first post clock debug Post clock bin8 b1 cr Show the result in binary You can probably predict what this demonstration will show Both Shiftin instructions are set up for msb first operation so the first bit they acquire ends up in the msb leftmost bit of the variable Look at figure I 25a the first data bit acquired in the pre clock case is 1 so the pre clock Shiftin returns 10101010 The data line is left with a 1 on it
117. able 270 273 Compliment 237 Connecting to the PC Cable 199 200 210 212 Constants 225 227 Conversion document How to use 376 Converting code between Stamps 369 448 BRANCH 385 BSAVE 386 BUTTON 387 388 COUNT 389 DATA 394 395 DEBUG 390 393 DTMFOUT 396 EEPROM 397 END 398 Expressions 399 400 FOR NEXT 401 402 FREQOUT 403 404 GOSUB 405 GOTO 406 HIGH 407 IF THEN 408 INPUT 409 LET 410 411 LOOKDOWN 412 413 LOOKUR 414 LOW 415 NAP 416 OUTPUT 417 PAUSE 418 POT 419 PULSIN 420 421 PULSOUT 422 PWM 423 424 RANDOM 425 RCTIME 426 428 READ 429 REVERSE 430 SERIN 431 434 BASIC Stamp Il Index SEROUT 435 438 SHIFTIN 439 440 SHIFTOUT 441 442 SLEEP 443 SOUND 444 STOP 445 Symbols variables or constants 383 384 TOGGLE 446 WRITE 447 XOUT 448 COS 236 238 COUNT 205 251 252 389 Counting pulses 205 251 252 Current limit 200 209 Cut copy amp paste 203 D DATA 394 395 Data logger 342 343 Data storage 228 230 302 303 341 343 DCD 236 237 Debug formatters 254 256 390 393 DEBUG 206 253 256 390 393 Debugging table 26 30 390 393 Symbols table 254 256 Defining symbols variables 217 221 DIG 239 244 Digital 1 0 204 205 BUTTON 205 249 250 159 165 387 388 COUNT 205 251 252 HIGH 204 269 407 INPUT 204 276 277 409 LOW 204 284 415 OUTPUT 204 287 417 PULSIN 204 289 290 420 421 PULSOUT 20
118. al beeps used to dial the phone activate pagers and access repeaters in ham radio applications Commercial designs that interface electronic devices to the phone line normally require the approval of the Federal Communications Com mission FCC to ensure the quality and reliability of telephone service Manufacturers of phone accessories often take the shortcut of using an off the shelf interface known as a Data Access Arrangement DAA Since the DAA has already been checked out by the FCC it s generally much easier to get a DAA based design approved than a from scratch circuit Unfortunately DAAs tend to be somewhat expensive in small quantities 25 each and are sold primarily through high volume distributors geared toward serving manufacturers Where does this leave experimenters hobbyists and one off instru ment makers Pretty much on their own For them we present the circuit below It s not a full blown DAA suitable for production de signs but it is a good starting point for prototype DIMF transmit Interfacing to the Telephone Line connect switch or ees Ue Ba relay contacts JC 117760 AAV W O pin o so Ay i I phone line f 100 0 001uF red and green l both O o WAN 270V Sidactor DK P3000AA61 ND 3 9V zeners both AE P3000AA61 ND DK 1N5228BCT ND Parts Sources Digi Key DK 1 800 344 4539 Jameco JC 1 800 831 4242 or 218 681 6674 or 415 592 8097 Schematic of t
119. allax Inc BASIC Stamp Il BS2 Runtime Math and Logic The BS2 like any computer excels at math and logic However being designed for control applications the BS2 does math a little differently than a calculator or spreadsheet program This section will help you understand BS2 numbers math and logic Number Representations In your programs you may express a number in various ways de pending on how the number will be used and what makes sense to you By default the BS2 recognizes numbers like 0 99 or 62145 as be ing in our everyday decimal base 10 system However you may also use hexadecimal base 16 also called hex or binary base 2 Since the symbols used in decimal hex and binary numbers overlap e g 1 and 0 are used by all 0 through 9 apply to both decimal and hex the Stamp software needs prefixes to tell the numbering systems apart 99 Decimal no prefix 1A6 Hex 1101 Binary The Stamp also automatically converts quoted text into ASCII codes and allows you to apply names symbols to constants from any of the numbering systems Examples letterA con A ASCII code for A 65 cheers con 3 hex128 con 80 fewBits con 1101 For more information on constants see the section BS2 Constants and Compile Time Expressions When is Runtime Not all of the math or logic operations in a BS2 program are solved by the BS2 Operations that define constants are solved by the Stamp host software before the pr
120. alue in signed hexidecimal optionally limited or padded for 1 to 4 digits Value must not be less than a word variable Displays value in hexidecimal preceded by a and optionally limited or pad ded for 1 to 4 digits Displays value in signed hexidecimal preceded by a and optionally lim ited or padded for 1 to 4 digits Value must not be less than a word variable Displays value in binary optionally lim ited or padded for 1 to 16 digits Displays value insigned binary optionally limited or padded for 1 to 16 digits Value must not be less than a word variable Parallax Inc BASIC Stamp Programming Manual 1 9 Page 391 BASIC Stamp and Stamp II Conversions IBIN 1 16 value Displays value in binary preceded by a and optionally limited or padded for 1 to 16 digits ISBIN 1 16 value Displays value in signed binary pre ceded by a and optionally limited or padded for 1 to 16 digits Value must not be less than a word variable SPECIAL SYMBOLS The following symbols can be included in the output data BELL Causes the computer to beep BKSP Causes the cursor to backup one space CLS Causes the debug window to be cleared CR Causes a carriage return to occur in debug window HOME Causes the cursor in the debug window to return to home position TAB Causes the cursor to move to next tab position o A ose a Beak ees 1 Replace all formatters with DEC 2 Replace all
121. amming Manual 1 9 Page 435 BASIC Stamp and Stamp II Conversions e OUTPUTDATA is a set of constants expressions and variable names separated by commas and optionally proceeded by the formatters available in the DEBUG command CONVERSION BS TASA bso aa Sirk A aC ay yt 8 hey tes 1 BAUDMODE is a constant or a bit nibble byte or word variable equal to the bit period of the baud rate plus three control bits which specify 8 bit 7 bit True Inverted and Driven Open output The following table lists the Stamp I baudmodes and the correspond ing Stamp IT baudmode SEROUT Baudmode Conversion Stamp Baudmode Stamp Il Baudmode T2400 396 T1200 813 T600 1646 T300 3313 N2400 396 4000 N1200 813 4000 N600 1646 4000 N300 3313 4000 OT2400 396 8000 OT1200 813 8000 OT600 1646 8000 OT300 3313 8000 ON2400 396 C000 ON1200 813 C000 ON600 1646 C000 ON300 3313 C000 o 7 2 3 4 5 6 7 8 9 o a4 a k N _ o mb A 4 al 1 Replace the parentheses and with brackets and J 2 Replace any optional formatters with the equivalent DEC formatter Page 436 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C e TPIN PIN and may be in the range 0 16 e BAUDMODE may be any bit period in between 300 baud and 50000 baud and can be calculated using the
122. any size constants or expressions All comparisons are performed using unsigned 16 bit math An example aNumber var byte aNumber 99 IF aNumber lt 100 THEN isLess debug greater than or equal to 100 stop isLess debug less than 100 stop When you run that code Debug shows less than 100 If Then evalu ated the condition aNumber lt 100 and found it to be true so it Page 270 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il redirected the program to the label after Then isLess If you change aNumber 99 to aNumber 100 the other message greater than or equal to 100 will appear instead The condition aNumber lt 100 is false if aNumber contains 100 or more The values compared in the If Then condition can also be expressions Number1 var byte Number2 var byte Number1 99 Number2 30 IF Number1 Number2 4 20 THEN equal debug not equal stop equal debug equal stop Since Number 4 20 30 x 4 20 100 the message not equal appears on the screen Changing that expression to Number 4 21 would get the equal message Beware of mixing signed and unsigned numbers in If Then compari sons Watch what happens when we change our original example to include a signed number 99 IF 99 lt 100 THEN isLess debug greater than or equal to 100 stop isLess debug less than 100 stop Although 99
123. are LOWBYTE HIGHBYTE BYTEO 1 LOWNIB HIGHNIB NIBO 3 LOWBIT HIGHBIT and BITO 15 You may define a constant by using a similar format constantname CON constantexpression Example MaxLoops CON 100 defines MaxLoops as a constant equivalent to the number 100 MaxLoops2 CON 50 4 2 also defines MaxLoops as a constantequivalenttothe number 100 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 381 BASIC Stamp and Stamp II Conversions e CONSTANTNAME is a series of characters letters numbers and underscores but not starting with a number up to 32 characters in length e CONSTANTEXPRESSION is a numerical expression in decimal hexidecimal binary or ascii using only numbers and the amp lt lt or gt gt operators NOTE Parentheses are not allowed and expressions are always computed using 16 bits Stamp II 1 0 and Variable Space Word Name Byte Name Nibble Names Bit Names Special Notes INS INL INA INB INO IN7 Input pins word byte nibble INH INC IND IN8 IN15 and bit addressable OUTS OUTL OUTA OUTB OUTO OUT7 Output pins word byte OUTH OUTC OUTD OUTS8 OUT15 nibble and bit addressable DIRS DIRL DIRA DIRB DIRO DIR7 1 0 pin direction control word DIRH DIRC DIRD DIR8 DIR15 byte nibble and bit addressable WO BO General Purpose word byte B1 nibble and bit addressable Wi B2 General Purpose word byte B3 nibble and bit addressable W2
124. arging the capacitor makes the in put high but remember that a capacitor is charged when there is a volt age difference between its plates When both sides are at 5V the cap is considered discharged Here s a typical sequence of instructions for I 14a assuming I O pin 7 is used result var word Word variable to hold result high 7 Discharge the cap pause 1 for 1 ms RCTIME 7 1 result Measure RC charge time debug result Show value on screen Using RCtime is very straightforward except for one detail For a given Rand C what value will RCtime return It s easy to figure based on a value called the RC time constant or tau t for short Tau represents the time required for a given RC combination to charge or discharge by 63 percent of the total change in voltage that they will undergo More im portantly the value t is used in the generalized RC timing calculation Tau s formula is just R multiplied by C t RxC The general RC timing formula usest to tell us the time required for an RC circuit to change from one voltage to another Parallax Inc BASIC Stamp Programming Manual 1 9 Page 299 BASIC Stamp Il Viinal time T In Vinitial In this formula In is the natural logarithm it s a key on most scientific calculators Let s do some math Assume we re interested in a 10k resis tor and 0 1pF cap Calculate t t 10 x 10 x 0 1 x 10 1 x 10 The RC time constant is 1 x 10 o
125. at one action per button press Loop BUTTON 7 0 255 250 btnWk 0 noPress Go to noPress UNLESS debug P7 is 0 noPress goto loop Repeat endlessly Figure l 1 5VO 5Vo 1 gt to I O pin gt to I O pin 10 E active high active low downstate 1 downstate 0 Page 250 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Count COUNT pin period variable Count the number of cycles 0 1 0 or 1 0 1 on the specified pin during period number of milliseconds and store that number in variable e Pinis avariable constant 0 15 that specifies the I O pin to use This pin will be placed into input mode by writing a 0 to the corresponding bit of the DIRS register e Period is a variable constant 1 to 65535 specifying the time in milliseconds during which to count e Variableis a variable usually a word in which the count will be stored Explanation The Countinstruction makes a pin an input then for the specified number of milliseconds counts cycles on that pin and stores the total in a variable A cycle is a change in state from 1 to 0 to 1 or from 0 to 1 to 0 Count can respond to transitions as fast as 4 microseconds us A cycle consists of two transitions e g 0 to 1 then 1 to 0 so Count can respond to square waves with periods as short as 8 us up to 125 kilohertz kHz in frequency Fornon square waves those whose high time and low time are unequal the sho
126. be in the range 0 7 3 Insert an open parenthesis just before the MILLISECONDS argu ment 4 Swap the orientation of MILLISECONDS with FREQ1 and divide MILLISECONDS by 12 DURATION MILLISECONDS 12 5 Calculate NOTE using the formula NOTE 127 1 FREQ1 95 x 10 83 x 10 6 Successive FREQOUT commands may be combined into one SOUND command by separating NOTE and DURATION pairs with commas 7 Insert a close parenthesis y after the last DURATION argument e Notes can not be mixed as in the Stamp II Example BS2 FREQOUT 15 2000 400 FREQOUT 15 500 600 BS1 SOUND 7 98 167 108 42 Page 404 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C GOSUB BASIC Stamp GOSUB label e Up to 16 GOSUBs allowed per program Up to 4 nested GOSUBs allowed e Word W6 is modified with every occurrence of GOSUB BASIC Stamp Il GOSUB label e Up to 255 GOSUBs allowed per program e Up to 4 nested GOSUBs allowed PAV ERRON OS BBA enn e iat cate amp avin Batons tn that e Up to 255 GOSUBs can be used in the program e No general purpose variables are modified with the occurrence of GOSUB SONERION re ee lesa ene DE gh ee 1 Only 16 GOSUBs can be used in the program KN e Word W6 is modified with every occurrence of GOSUB Parallax Inc BASIC Stamp Programming Manual 1 9 Page 405 BASIC Stamp and Stamp II Conversions GOTO BASIC Stamp GOTO label BASIC Stam
127. bel0 label1 labeln e INDEX is a constant or a bit byte or word variable e LABELO LABELN are valid labels to jump to according to the value of INDEX BASIC Stamp Il BRANCH index label0 label1 labeln e INDEX is a constant expression or a bit nibble byte or word variable e LABELO LABELN are valid labels to jump to according to the value of INDEX CO AS leido dels lp dl 1 Change open and close parentheses and to open and close brackets and Example BS1 BRANCH BO Loop1 Loop2 Finish BS2 BRANCH Branchldx Loop1 Loop2 Finish E 1 Change open and close brackets and J to open and close parentheses and Example BS2 BRANCH Branchldx Loop1 Loop2 Finish BS1 BRANCH BO Loop1 Loop2 Finish Parallax Inc BASIC Stamp Programming Manual 1 9 Page 385 BASIC Stamp and Stamp II Conversions BSAVE BASIC Stamp BSAVE e This is a compiler directive which causes the Stamp I software to create a file containing the tokenized form or the associated source code BASIC Stamp Il NO EQUIVELANT COMMAND o Eo gaeran Hy af hh No conversion possible Page 386 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C BUTTON BASIC Stamp BUTTON pin downstate delay rate workspace targetstate label e PIN is a constant or a bit byte or word variable in the range 0 7 e DOWNSTATE is a constant
128. bers for addition subtrac tion and multiplication but not for division This subject is a bit too large to cover here If you understood the pre ceding paragraph great If you didn t but you understand that han dling negative numbers requires a bit more planning and probably should be avoided when possible good And if you didn t understand the preceding paragraph at all you might want to do some supple mental reading on computer oriented math Unary and Binary Operators In a previous section we discussed the operators you re already famil iar with and These operators all work on two values as in 1 3 or 26 144 The values that operators process are referred to as argu ments So we say that these operators take two arguments The minus sign can also be used with a single argument as in 4 Now we can fight about whether that s really shorthand for 0 4 and therefore does have two arguments or we can say that has two roles as a subtraction operator that takes two arguments and as a negation operator that takes one Operators that take one argument are called unary operators and those that take two are called binary operators Please note that the term binary operator has nothing to do with binary numbers it s just an inconvenient coincidence that the same word meaning involving two things is used in both cases In classifying the BS2 s math and logic operators we divide them into two
129. ble value value value e VARIABLE is a bit nibble byte or word variable e is SOR ABS DCD NCD COS SIN e VALUE is a constant or a bit nibble byte or word variable e is MIN MAX E DIG lt lt gt gt REV e Parentheses may be used to modify the order of expression evaluation E Po od Lies eee ke el 1 Remove the LET command This is not allowed in the Stamp II e VARIABLE and VALUE may be nibble variables for efficiency e The optional unary operator may now also include SQR ABS DCD NCD COS and SIN e The binary operators can now include DIG lt lt gt gt and REV Example BS1 LET b0 10 16 BS2 Result 10 16 CONVERSION BON DOS tad NN Nite Ea 1 Remove any unary operator other than minus and modify the equation as appropriate if possible Page 410 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C 2 The binary operator can not be DIG lt lt gt gt or REV 3 VARIABLE and VALUE must not be a nibble variable Example BS2 Result 0001 16 BS1 bO 1110 16 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 411 BASIC Stamp and Stamp II Conversions LOOKDOWN BASIC Stamp LOOKDOWN value value0 value1 valueN variable e VALUE is a constant or a bit byte or word variable e VALUEO VALUE etc are constants or a bit byte or word variables e VARIABLE is a bit byte or
130. ble To demonstrate the effect of mixing sine waves the first Page 264 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Figure l 4 Driving an Audio Amplifier 1k 1k I O pin gt PA AA Amplifier T ne e g Radio Shack 0 1uF 0 01uF 277 1008C Driving a Speaker 10uF both 2409 Speaker VO pin gt or 8Q in series C1 with 33Q resistor Notes C1 may be omitted for piezo speakers C2 is optional but reduces high frequency noise frequency is the musical note itself while the second is 8 Hz lower When sines mix sum and difference frequencies are generated The difference frequency imposes an 8 Hz quiver vibrato on each note Subtracting 8 from the note frequency poses a problem when the frequency is 0 because the BS2 s positive integer math wraps around to 65530 Freqout would ignore the highest bit of this value and generate a frequency of 32762 Hz rather than a truly silent pause Although humans can t hear 32762 Hz slight imperfections in filtering will cause an audible noise in the speaker To clean this up we use the expression f 8 max 32768 which changes 65530 to 32768 Freqout discards the highest bit of 32768 which results in 0 the desired silent pause i var byte Counter for position in tune f var word Frequency of note for Freqout C con 523 C note D con 587 D note E con 659 E note G con 784 G note R con 0 Silent pause rest for i 0 to 28
131. ble should be given the smallest size that will hold the largest value that might ever be stored in it If you need a variable to hold the on off status 1 or 0 of switch use a bit If you need a counter for a FOR NEXT loop that will count from 1 to 10 use a nibble And so on Page 218 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il If you assign a value to a variable that exceeds its size the excess bits will be lost For example suppose you use the nibble variable cat from the example above and write cat 91 1011011 binary what will cat contain It will hold only the lowest 4 bits of 91 1011 11 decimal You can also define multipart variables called arrays An array is a group of variables of the same size and sharing a single name but broken up into numbered cells You can define an array using the fol lowing syntax symbol VAR size n where symbol and size are the same as for normal variables The new element n tells PBASIC how many cells you want the array to have For example myList var byte 10 Create a 10 byte array Once an array is defined you can access its cells by number Number ing starts at 0 and ends at n 1 For example myList 3 57 debug myList 3 The debug instruction will display 57 The real power of arrays is that the index value can be a variable itself For example myBytes var byte 10 Define 10 byte array index var nib Define normal nibble var
132. cables The TW523 or PL513 powerline interface 5 BS2 10x pind g 3 pin 1 4 conductor phone base 4 not handset cable Schematic to accompany x10_DEMO BS2 Page 348 BASIC Stamp Programming Manual 1 9 Parallax Inc 1 X 10 Control 1 X 10 Control BASIC Stamp Il Application Notes color codes can vary in phone cables so be sure to follow the numbers imprinted next to the modular jack on the PL 513 or TW 523 unit The program listing shows how to send X 10 commands through this hookup The listing is self explanatory and the procedures are simple as long as you keep some ground rules in mind e House codes A through P are represented as values from 0 to 15 in the Xout command e Unit codes 1 through 16 are represented as values from 0 to 15 in the Xout command e Every X 10 transmission must include a house code e Except for Dim and Bright all codes are sent for a default of two cycles You don t have to specify the number of cycles for com mands other than Dim and Bright unless you are sending mul tiple codes in a single instruction See the listing for examples e It takes 19 cycles for a lamp to go from fully bright to fully dim and vice versa There s also a peculiar logic to the operation of the Dim and Bright commands see the table To set a specific level of brightness you should first reset the dimmer module by turning it off then back on e In some homes X 10
133. chip hits the snooze bar and goes back to sleep To ensure accuracy of Sleep intervals PBASIC2 periodically compares the watchdog timer to the more accurate resonator timebase It calcu lates a correction factor that it uses during Sleep As a result longer Sleep intervals are accurate to approximately 1 percent If your application is driving loads sourcing or sinking current through output high or output low pins during Sleep current will be interrupted for about 18 ms when the BS2 wakes up every 2 3 seconds The reason is that the watchdog timer reset that awakens the BS2 also causes all of the pins to switch to input mode for approximately 18 ms When the PBASIC2 interpreter firmware regains control of the processor it restores the I O Page 336 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il directions dictated by your program If you plan to use End Nap or Sleep in your programs make sure that your loads can tolerate these periodic power outages The simplest solu tion is often to connect resistors high or low to 5V or ground as appro priate to ensure a continuing supply of current during the reset glitch Demo Program This program demonstrates both Sleep s timing characteristics and the periodic glitch discussed above Connect an LED to pin 0 as shown in figure I 27 and run the program The LED will blink then the BS2 will go to Sleep During Sleep the LED will remain on but will wink
134. d catch the first byte at most by the timeit got back from the first 1 second Pause the rest of the data would be long gone With flow control communication is flawless since the sender waits for the receiver to catch up Page 326 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il In figure I 20 pin 0 fpin is pulled to ground through a 10k resistor This is to ensure that the sender sees a stop signal 0 for inverted comms when the receiver is being programmed Flow control Timeout Flow control solves one problem but can create another if the receiver isn t connected Serout may never get permission to send The program will be stuck in Serout indefinitely To prevent this Serout allows you to specify how long it should wait for permission from 0 to 65535 ms If the specified time passes without permission to send Serout aborts allow ing the program to continue at tlabel Here s the previous example just the Sender code with a 2 5 second timeout Serout 1 0 16468 2500 noFlow HELLO instructions executed after a successful Serout stop noFlow If Serout times out waiting for flow control permission It jumps to this label in the program Networking with Open Baudmodes The open baudmodes can be used to connect multiple BS2s to a single pair of wires to create a party line network Open baudmodes only ac tively drive the Serout pin in one state in the other state they disconnect the pin
135. d generate an error message The CON directive works only at compile time so vari ables are not allowed Order of Operations Let s talk about the basic four operations of arithmetic addition subtraction multiplication and division You may recall that the order in which you do a series of additions and subtractions doesn t affect the result The expression 12 7 3 22 works out the same as 22 3 12 7 Howver when multiplication or division are involved it s a different story 12 3 2 4 is not the same as 2 12 4 3 In fact you may have the urge to put parentheses around por tions of those equations to clear things up Good Page 232 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il The BS2 solves math problems in the order they are written from left to right The result of each operation is fed into the next operation So to compute 12 3 2 4 the BS2 goes through a sequence like this 12 3 5 5 2 10 10 4 2 the answer is 2 Note that because the BS2 performs integer math whole numbers only that 10 4 results in 2 not 2 5 We ll talk more about integers in the next section Some other dialects of BASIC would compute that same expression based on their precedence of operators which requires that multipli cation and division be done before addition So the result would be 3 2 6 6 4 1 12 1 13 the answer is 13 Once again because of integer math the fractional portion of 6
136. ddi a 319 SHIFTIN Desa 330 SHIFTOUT vi lessened Qe 334 SLEEP Matic iaa 336 STOP iii ai irme odes ena a aaa etai 338 POG GLE ito EAT TA 339 WRITE 3300020 A AA ee 341 ROUT cuina ea aaea ae a aeae E ta ae T 344 Stamp Il Application Notes cscssccessseeeeeseeeeeeeseeeeseeees 347 Note 1 Controlling lights with X 10 XOUT 347 Note 2 UsingSHIFTIN and SHIFTOUT cococinicicacicicinnos 353 Note 3 Connecting to the telephone line 361 APPEDICES o aiarra a aaaea a aadatan anamannan aeaaaee oaaae aieia 365 E O NN 365 B Reserved Words croiiolcsn tecno sarcito ina E ENANA Ea eiia 367 C BS1 to BS2 ConversiON cococnccoccccnnnnnnnnncnnnncnnnnnnnnnncncnnnncnannons 369 D BSI and BS2 Schematics occoccccoconcnononononncnnononanononononnononnnnos 450 AAA 455 Page 4 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il The following section deals with the BASIC Stamp II In the following pages you ll find installation instructions programming procedures PBASIC2 command definitions and several application notes Parallax Inc BASIC Stamp Programming Manual 1 9 Page 197 BASIC Stamp Il System Requirements To program the BASIC Stamp II you ll need the following system IBM PC orcompatible computer 3 5 inch disk drive Parallel port 128K of RAM MS DOS 2 0 or greater If you have the BASIC Stamp II carrier board you can use a 9 volt battery as a convenient mean
137. de of the transformer a pair of zener diodes clips any voltage over approximately 4 6 volts The remaining resistors and capacitors couple the DTMF tones from the BS2 into the trans former They also work together to smooth the ragged edges of the DTMF tones which are generated using fast pulse width modulation PWM Before filtering these tones contain high frequency compo nents that can make them sound distorted or fuzzy With the circuit shown the tones come through crystal clear Programming You ll be amazed at how easy itis to dial the phone with the DTMFout instruction Suppose you want to dial 624 8333 one line will do the trick DTMFout 0 6 2 4 8 3 3 3 where 0 is the pin number 0 15 connected to the interface and the Page 362 BASIC Stamp Programming Manual 1 9 Parallax Inc 3 Phoneline Interface 3 Phoneline Interface BASIC Stamp Il Application Notes numbers inside the square brackets are the numbers to dial Values of 0 9 represent those same buttons on the phone keypad 10 is the star key 11 is the pound sign and 12 through 15 are additional tones that aren t meant for phone subscriber use They re included primarily for non phone DTMF applications like remote controls and ham radio purposes You may specify values as literal numbers as we did above or as variables Nibble sized variables are perfect for holding DTMF digits For each digit in square brackets DTMFout sends the corresponding
138. e outputData For example to send a byte through pin 1 at 9600 bps 8N inverted Serout 1 16468 65 Send byte value 65 A through pin 1 When that Serout executes it changes pin 1 to output and transmits the byte value 65 01000001 binary If a PC terminal program was the receiver the letter A would appear on the screen since 65 is the ASCII code for A See the ASCII character chart in the appendix To send a number as text requires a modifier as in this example Serout 1 16468 DEC 65 Send text 65 through pin 1 Page 322 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il The modifier DEC tells Serout to convert the value to its decimal text equivalent before transmitting Table I 7 lists the numeric conversion modifiers that Serout understands You can try these modifiers using Debug which is actually just a special case of Serout configured specifi cally to send data to the STAMP2 host program Literal Text and Compound OutputData Serout sends quoted text exactly as it appears in the outputData list Serout 1 16468 A Send byte value 65 A Serout 1 16468 HELLO Send series of bytes HELLO Since outputData is a list you may combine modifiers values text strings and so on separated by commas temp var byte temp 96 Serout 1 16468 Temperature is dec temp degrees F Serout would send Temperature is 96 degrees F Sending Variable Strings A string is
139. e I O pin that will be connected to the synchronous serial device s data input This pin sI O direction will be changed to output and will remain in that sate after the instruction is completed Cpinis a variable constant 0 15 that specifies the I O pin that will be connected to the synchronous serial device s clock input This pin s I O direction will be changed to outputand will remain in that sate after the instruction is completed Modeis a value 0 or 1 or a predefined symbol that tells Shiftout the orderin which databits areto be arranged Herearethesymbols values and their meanings Symbol Value Meaning LSBFIRST 0 Data shifted out Isb first MSBFIRST 1 Data shifted out msb first Msb is most significant bit the highest or leftmost bit of a nibble byte or word Lsb is the least significant bit the lowest or rightmost bit of a nibble byte or word e Datais a variable or constant containing the data to be sent e Bitsis an optional entry specifying how many bits 1 16 are to be ouput If nobits entry is given Shiftout defaults to 8 bits Explanation Shiftout provides an easy method of transferring data to synchronous serial devices Synchronous serial differs from asynchronous serial like Serin and Serout in that the timing of data bits is specified in relation ship to pulses on a clock line Data bits may be valid after the rising or falling edge of the clock line This kind of serial protocol is commonly
140. e Measurements Practical 91 98 PWM for Analog Output Using 141 144 Servos Controlling and Testing 85 90 Shiftin and Shiftout 353 360 X 10 Control 347 351 Arrays 219 221 ASCII chart 365 B BASIC Stamp II schematic Components DIP SOIC 207 Module SSOP 452 Baud mode conversion 432 436 Baud mode table 310 312 321 322 Binary operators 239 246 Addition 239 240 AND logical amp 239 245 DIG 239 244 Division 239 240 Division remainder 239 241 MAX 239 243 MIN 239 242 243 Multiplication 239 241 Multiplication high 16 bits 239 241 242 Multiply by 8 bit whole part 239 242 Operators table 239 OR logical 239 245 Order of evaluation 232 233 REV 239 245 Shift left lt lt 239 244 Shift right gt gt 239 244 Subtraction 239 240 XOR logical 239 246 Binary radian 238 Brad 238 BRANCH 204 247 248 385 Branching 204 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 459 BASIC Stamp Il Index BRANCH 204 247 248 385 GOSUB 204 266 267 405 GOTO 204 268 406 IF THEN 204 270 275 408 RETURN 204 304 BS2 IC schematic 452 Bright 349 Button debouncing 159 165 205 BUTTON 159 165 205 249 250 387 388 Button Using instruction effectively 159 165 Es Cable connection to the PC 199 200 210 212 Carrier board 199 Command and directive differences 377 Command line options 201 Comparison operators t
141. e in the range 0 7 e SCALE is a constant or a bit byte or word variable in the range 0 255 e BYTEVARIABLE is a byte variable BASIC Stamp Il RCTIME pin state variable e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 e STATE is a constant expression or a bit nibble byte or word vari able in the range 0 1 e VARIABLE is a bit nibble byte or word variable GONVERSION BS TE BSE aai i s ee ee ee eee 1 Modify the circuit connected to PIN to look similar to the follow ing diagram Note your values for the resistors and capacitor may be different in 220 0 1uF PIN 10 K Pot 2 Insert two lines before the POT command as follows HIGH pin where PIN is the same PIN in the POT command Page 426 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C PAUSE delay where DELAY is an appropriate time in millisec onds to allow the capacitor to fully discharge You may have to try different DELAY values to find an optimal value 3 Change the command s name from POT to RCTIME 4 Replace the SCALE argument with a STATE argument our example requires a 1 e PIN may be a nibble variable in the range 0 15 CONVENCION BST E BDE Bh eae ai ia 1 Modify the circuit connected to PIN to look similar to the follow ing diagram Note your values for the resistor and capacitor may be different 10 K Pot AN 0 1uF L 2 Delete
142. e many lifetimes to write and download 10 mil lion PBASIC2 programs However when you use the PBASIC2 Write instruction to store data in EEPROM space be sure to bear these limita tions in mind Reset Circuit U3 When you first power up the BS2 it takes a fraction of a second for the supply to reach operating voltage During operation weak batteries varying input voltages or heavy loads may cause the supply voltage to wander out of acceptable operating range When this happens nor mally infallible processor and memory chips U1 and U2 can make mistakes or lock up To prevent this U1 must be stopped and reset until the supply stabilizes That is the job of U3 the S 8045HN reset circuit When the supply voltage is below 4V U3 puts a logic low on Ul s master clear reset MCLR input This stops U1 and causes all of its I O lines to electrically disconnect In reset U1 is dormant alive but inert Parallax Inc BASIC Stamp Programming Manual 1 9 Page 209 BASIC Stamp Il When the supply voltage is above 4V U3 allows its output to be pulled high by a 4 7k resistor to 5V which also puts a high on U1 s MCLR input U1 starts its internal program at the beginning which in turn starts your PBASIC2 program from the beginning Power Supply U4 The previous discussion of the reset circuit should give you some idea of how important a stable power supply is to correct operation of the BS2 The first line of defense against power
143. e until overwritten even with the power off Put ASCII characters into EEPROM followed by 0 which will serve as the end of message marker Message data BS2 EEPROM Storage 0 strAddr var word char var byte strAddr Message Set address to start of Message stringOut READ StrAddr char Get a byte from EEPROM if char lt gt 0 then cont Not end Continue Stop Stop here when done Page 302 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il cont debug char Show character on screen strAddr strAddr 1 Point to next character goto stringOut Get next character Parallax Inc BASIC Stamp Programming Manual 1 9 Page 303 BASIC Stamp Il Return RETURN Return from a subroutine Explanation Return sends the program back to the address instruction immediately following the most recent Gosub If Return is executed without a prior Gosub to set the return address a bug will result For more thorough coverage of Gosub Return see the Gosub writeup Demo Program This program demonstrates how Gosub and Return work using Debug messages to trace the program s execution For an illustration of the bug caused by accidentally wandering into a subroutine remove the Stop instruction Instead of executing once the program will get stuck in an infinite loop debug Executing Gosub cr gosub demoSub debug Returned stop demoSub debug Executing subroutine cr RETURN
144. ecceseeeeeeeeeeneees 377 RAM SPACE AND REGISTER ALLOCATION 0sscscssscnseeeseeeueeeeeees 378 BASIC Stamp Diesre erer aE eanet ee EEEE Ea Eae deca 378 Stamp II O and Variable Space onocincocinininininnnnnanicinaninacinnanicnanes 378 BASIC Stamp lic a oa a a 379 Stamp II I O and Variable Space oncocociononnnionininicinnnacianinanacicnnnns 379 BS1 to BS2 Register Allocation Conversion omoononionnririricninoss 383 BS2 to BS1 Register Allocation Conversion ocococicioninncnricnaninans 383 BASIC Stamp I BASIC Stamp II BSAVE a BASIC Stamp I BASIC Stamp II BUTTON corria BASIC Stamp I BASIC Stamp II COUNT ae E a T BASIC Stamp I BASIC Stamp II DEBUG isis ais BASIC Stamp BASIC Stamp II BASIC Stamp BASIC Stamp II DTM Tc ii cd e nnne BASIC Stamp BASIC Stamp II EEPROM See DATA Parallax Inc BASIC Stamp Programming Manual 1 9 Page 369 BASIC Stamp and Stamp II Conversions END coacalco ind 398 BASIC Stamp sucia dit died 398 BASIC Stamp llista ES AEEA Escenas 398 EXPRESSIONS ococioncinn cc 399 BASIC Mampara itda 399 BASIC Stamp ll viii 399 A A O 401 BASIC Stamp ino rota tds 401 BASIC Stamp liviana aan sanas tin 401 FREQUUT oana haana n aar aa paraan aae pana as aan aeaea akkaa EEN aana 403 BASIC Stamp latina aiee E E e E 403 AAA d eeter a nenea EOE EEEN TEESE 403 GOSUB iii aaa a aa A araa ees Bae 405 BASIC Stamp Drina ttiie asan are at ia 405 BASIC Stamp ll coco ta 405 A O 406
145. ed in the form of a new BASIC Stamp If you have any questions about what you may need please contact Parallax Contents BASIC Stamp II Programming esineen nosiniai nnana aaa aa 198 System requirements and Packing list 198 Connecting to the PC aait iaria aies 199 Carrier Board Features 0 cecccecceeeeeceesseeeeeeeeeseeeeeeseeneens 199 BS2 1C Pinout 2 2 c2cceeceeceeceecece eee eceeeeeeeeseeeeeeeeeeseeeeees 200 Using the Editor ooncoccoconconcancnnoncnnncanonconrancnncanonrannnanos 201 Starting th editor circos cta ica ais 201 Entering and editing Programs cocicicicononininnononnanincnnanoninnininnes 202 Editor function Key Simi ad ias 202 PBASIC Instruction Summary oocococccnoconconnnnonononnannnnarannnnnns 204 BS2 Hardware ooncoonconnonnnenncannnnncnnronnnnncnnnnnnnnnncanrnnnnnnens 207 CHEM AUG rta E 207 PBASIC2 Interpreter Chip 0 ceceneseseseeteseeeeneneneees 208 Erasable Memory Chip oocononocccncncnnannnnnnnnnennnocananonnanarnrarnnnnnnnnnoss 209 Reset Circuit cc eearri etaeta At 209 Power SUPPLY enemman paee Ee Eise n 210 Serial Interface sssessseseseessesseeesesesrtsesestsrtessesterstssstterstsesrresse 210 PC TO BS2 Connector Hookup cocenoccoconincncononenennrnrnnnonncnnnnnnnass 212 Writing programs for the BASIC Stamp Il oo oococccconoconcncnononoos 213 BS2 Memory Organization moccncocononenennnnnnnnnnennnnrornnenarararanoanass 213 Defining variables VAR onooococicicicinononnono
146. ee the writeup in the Serin listing for suggestions Figure H 2 BS2 Pin Page 212 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il BS2 Memory Organization The BS2 has two kinds of memory RAM for variables used by your program and EEPROM for storing the program itself EEPROM may also be used to store long term data in much the same way that desk top computers use a hard drive to hold both programs and files An important distinction between RAM and EEPROM is this e RAM loses its contents when the BS2 loses power when power returns all RAM locations are cleared to Os e EEPROM retains the contents of memory with or without power until it is overwritten such as during the program download ing process or with a Write instruction In this section we ll look at both kinds of BS2 memory how it s orga nized and how to use it effectively Let s start with RAM BS2 Data Memory RAM The BS2 has 32 bytes of RAM Of these 6 bytes are reserved for input output and direction control of the 16 input output I O pins The remaining 26 bytes are available for use as variables The table below is a map of the BS2 s RAM showing the built in PBASIC names Parallax Inc BASIC Stamp Programming Manual 1 9 Page 213 BASIC Stamp Il Word Name Table M 1 BS2 Memory Map Stamp II I O and Variable Space Byte Name Nibble Names Bit Names Special Notes INS INL INH
147. ences of mixing fixed and variable length string operations Matching a Sequence Serin can compare incoming data with a predefined sequence of bytes using the Wait modifiers The simplest form waits for a sequence of up to six bytes specified as part of the inputData list like so SERIN 1 16780 WAIT SESAME Wait for word SESAME debug Password accepted Serin will wait for that word and the program will not continue until it is received Since Wait is looking for an exact match for a sequence of bytes it is case sensitive sesame or SESAmE or any other varia tion from SESAME would be ignored Parallax Inc BASIC Stamp Programming Manual 1 9 Page 313 BASIC Stamp Il There are also Waitstr modifiers which wait fora sequence that matches a string stored in an array variable In the example below we ll capture a string with STR then have Waitstr look for an exact match serString var byte 10 Make a 10 byte array serString 9 0 Put 0 in last byte debug Enter password ending in cr serin 1 16780 str serString 9 Get the string debug Waiting for str serString cr SERIN 1 16780 WAITSTR serString Wait for a match debug Password accepted cr You can also use WAITSTR with fixed length strings as in the following example serString var byte 4 Make a 4 byte array debug Enter 4 character password cr serin 1 16780 str serString 4 Get a 4 byte string debug
148. er Some division problems don t have a whole number result they return a whole number and a fraction For example 1000 6 166 667 Integer math doesn t allow the fractional portion of the result so 1000 6 166 However 166 is an approximate answer because 166 6 996 The di vision operation left a remainder of 4 The double slash returns the remainder of a given division operation Naturally numbers that divide evenly such as 1000 5 produce a remainder of 0 Example w1 1000 w2 6 wi wt w2 Get remainder of w1 w2 debug dec w1 Show the result 4 Multiplies variables and or constants returning the low 16 bits of the result Works exactly as you would expect with unsigned integers from 0 to 65535 If the result of multiplication is larger than 65535 the excess bits will be lost Multiplication of signed variables will be correct in both number and sign provided that the result is in the range 32767 to 32767 w1 1000 w2 19 wi wi w2 Multiply w1 by w2 debug sdec w1 Show the result 19000 k Multiplies variables and or constants returning the high 16 bits of the result When you multiply two 16 bit values the result can be as large as 32 bits Since the largest variable supported by PBASIC2 is 16 bits the highest 16 bits of a 32 bit multiplication result are normally lost The double star instruction gives you these upper 16 bits For example suppose you multiply 6500
149. erin aborts and goes to Parallax Inc BASIC Stamp Programming Manual 1 9 Page 315 BASIC Stamp Il the plabel routine Setting a Serial Timeout In the examples above the only way to end the Serin instruction other than RESET or power off is to give Serin the serial data it wants If no serial data arrives the program is stuck However you can tell the BS2 to abort Serin if it doesn t receive data within a specified number of milli seconds For instance to receive a decimal number through pin 1 at 2400 baud 8N inverted and abort Serin after 2 seconds 2000 ms if no data arrives serin 1 16780 2000 noData DEC w1 debug cls w1 stop noData debug cls timed out If no data arrives within 2 seconds the program aborts Serin and contin ues at the label noData This timeout feature is not picky about the kind of data Serin receives any serial data stops the timeout In the example above Serin wants a decimal number But even if Serin received letters ABCD at intervals of less than two seconds it would not abort Combining Parity and Timeout You can combine parity and serial timeouts Here is an example de signed to receive a decimal number through pin 1 at 2400 baud 7E inverted with a 10 second timeout again serin 1 24972 badData 10000 noData DEC w1 debug cls w1 goto again noData debug cls timed out goto again badData debug cls parity error goto again Page 316 BAS
150. es A through D Explanation DTMF tonesare used to dial the phone or remotely control certain radio equipment The BS2 can generate these tones digitally using the DTMFout instruction Figure I 2 shows howto connecta speaker or audio amplifier to hear these tones figure 1 3 shows how to connectthe BS2tothe phone line A typical DTMFout instruction to dial a phone through pin 0 with the interface circuit of figure 1 3 would look like this DTMFOUT 0 6 2 4 8 3 3 3 Call Parallax That instruction would be equivalent to dialing 624 8333 from a phone keypad If you wanted to slow the pace of the dialing to accommodate a Parallax Inc BASIC Stamp Programming Manual 1 9 Page 257 BASIC Stamp Il noisy phone line or radio link you could use the optional ontime and offtime values DTMFOUT 0 500 100 6 2 4 8 3 3 3 Call Parallax slowly In that instruction ontime is set to 500 ms 1 2 second and offtime to 100 ms 1 10th second Technical Background The BS2 s controller is a purely digital device DTMF tones are analog waveforms consisting of a mixture of two sine waves at different audio frequencies So how does a digital device generate analog output The BS2 creates and mixes the sine waves mathematically then uses the resulting stream of numbers to control the duty cycle of a very fast pulse width modulation PWM routine So what s actually coming out of the BS2 pin is a rapid stream of pulses The purpose of the filter
151. exactly the same effect as complementing the corresponding bit of the OUTS register That is Toggle 7 is the same as OUT7 OUT7 where is the logical NOT operator When a pin is initially in the input mode Toggle has two effects it inverts the output driver OUTS bit and changes the pin to output mode by writing a 1 to the pin s input output direction bit the corresponding bit of the DIRS register In some situations Toggle may appear to have no effect on a pin s state For example suppose pin 2 is in input mode and pulled to 5V by a 10k resistor Then the following code executes DIR2 0 Pin 2 in input mode OUT2 0 Pin 2 output driver low debug IN2 Show state of pin 2 1 due to pullup TOGGLE 2 Toggle pin 2 invert OUT2 put 1 in DIR2 debug IN2 Show state of pin 2 1 again The state of pin 2 doesn t change it s high due to the resistor before Toggle and it s high due to the pin being output high afterward The point of presenting this puzzle is to emphasize that Toggle works on the OUTS register which may not match the pin s state when the pin is initially an input If you want to guarantee that the state of the pin actually changes re gardless of whether that pin starts as an input or output just do this Parallax Inc BASIC Stamp Programming Manual 1 9 Page 339 BASIC Stamp Il OUT2 IN2 Make output driver match pin state TOGGLE 2 Then toggle If you change the prev
152. following formula INT 1 000 000 Baud Rate 20 e The optional formatter may include any valid formatter for the DEBUG command Example BS1 SEROUT 3 T2400 Start B0 B1 BS2 SEROUT 3 396 Start DEC FirstByte SecondByte CO ee eer pA ESE adds dey hod amp Boe eS 1 PIN TPIN and must be in the range 0 7 2 Remove the FPIN argument Mfpin if it is specified No flow con trol pin is available on the Stamp I 3 BAUDMODE is a constant or a symbol or a bit byte or word vari able representing one of the predefined baudmodes Refer to the BAUDMODE Conversion table above for Stamp II baudmodes and their corresponding Stamp I baudmodes While the Stamp II baudmode is quite flexible the Stamp I can only emulate specific baud rates 4 Remove the PACE argument if it is specified No pace value is allowed on the Stamp I 5 Remove the TIMEOUT and TLABEL arguments if they are speci fied No timeout function is available on the Stamp I the program will transmit data regardless of the status of the receiver 6 Replace the brackets and with parentheses and 7 If a variable is preceded with a DEC formatter replace the word DEC with 8 Any formatter other than DEC has no direct equivalent in the Stamp I and must be removed Additional variables or constants will have to be used to achieve the same results in the Stamp I as with the Stamp II Parallax I
153. formula duty 255 5V For example if duty is 100 100 255 5V 1 96V PWM outputs a train of pulses whose average voltage is 1 96V In order to convert PWM into an analog voltage we have to filter out the pulses and store the average voltage The resistor capacitor combina tion in figure I 12 will do the job The capacitor will hold the voltage set by PWM even after the instruction has finished How long it will hold the voltage depends on how much current is drawn from it by external circuitry and the internal leakage of the capacitor In order to hold the voltage relatively steady a program must periodically Parallax Inc BASIC Stamp Programming Manual 1 9 Page 293 BASIC Stamp Il repeat the PWM instruction to give the capacitor a fresh charge Just as it takes time to discharge a capacitor it also takes time to charge it in the first place The PWM instruction lets you specify the charging time in terms of PWM cycles Each cycle is a period of approximately 1ms So to charge a capacitor for 5ms you would specify 5 cycles in the PWM instruction How do you determine how long to charge a capacitor Use this rule of thumb formula Charge time 4 R C For instance figure I 12 uses a 10k 10 x 10 ohm resistor and a 1pF 1 x 10 F capacitor Charge time 4 10x 10 1 x 10 40 x 10 seconds or 40ms Since each cycle is approximately a millisecond it would take at least 40 cycles to charge the capacitor A
154. ge of the clock line This kind of serial protocol is commonly used by controller peripherals like ADCs DACs clocks memory Page 330 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il devices etc Trade names for synchronous serial protocols include SPI and Microwire At their heart synchronous serial devices are essentially shift registers trains of flip flops that pass data bits along in a bucket brigade fashion to a single data output pin Another bit is output each time the appropri ate edge rising or falling depending on the device appears on the clock line BS2 application note 2 explains shift register operation in detail A single Shiftin instruction causes the following sequence of events Makes the clock pin cpin output low Makes the data pin dpin an input Copies the state of the data bit into the msb Isb modes or Isb msb modes either before pre modes or after post modes the clock pulse Pulses the clock pin high for 14ps Shifts the bits of the resu tleft msb modes or right Isb modes Repeats the appropriate sequence of getting data bits pulsing the clock pin and shifting theresultuntil the specified number of bits is shifted into the variable Making Shiftin work with a particular device is a matter of matching the mode and number of bits to that device s protocol Most manufacturers use a timing diagram to illustrate the relationship of clock and data Figure I 25
155. generation DTMFOUT 206 257 259 396 FREQOUT 206 264 265 403 404 U Unary operators 236 238 ABS 236 COS 236 238 DCD 236 237 NCD 236 237 SIN 236 238 SOR 236 237 V Variables Aliases 221 224 Arrays 219 221 Defining 217 221 Modifiers 222 224 Modifiers figure 222 Predefined 217 Size 218 Versions ii Warranty ii WRITE 341 343 447 X 10 Devices interfacing to 347 351 XOR logical 239 246 XOUT 344 346 448 Symbol table 345
156. gical OR lt gt Parallax Inc BASIC Stamp Programming Manual 1 9 Page 227 BASIC Stamp Il BS2 EEPROM Data Storage When you press ALT R run your program is loaded into the BS2 s EEPROM starting at the highest address 2047 and working down ward Most programs don t use the entire EEPROM so PBASIC2 lets you store data in the unused lower portion of the EEPROM Since programs are stored from the top of memory downward your data is stored in the bottom of memory working upward If there s an overlap the Stamp host software will detect it and display an error message Data directives are used to store data in EEPROM or to assign a name to an unused stretch of EEPROM more on that later For example table data 72 69 76 76 79 That data directive places a series of numbers into EEPROM memory starting at address 0 like so Address 0 1 2 3 4 Contents 72 69 76 76 79 Data uses a counter called a pointer to keep track of available EEPROM addresses The value of the pointer is initially 0 When PBASIC2 en counters a Data directive it stores a byte at the current pointer ad dress then increments adds 1 to the pointer The name that Data as signs table in the example above becomes a constant that is equal to the first value of the pointer the address of the first of the series of bytes stored by that Data directive Since the data above starts at 0 the constant table equals 0 If your prog
157. gn statement 2 Replace the DATA directive with the EEPROM directive 3 If LOCATION is specified remove the at sign immediately before it 4 If the WORD directive is given remove it and convert the data element immediately following it if one exists into two bytes of low byte high byte format If no data element exists immediately following the WORD directive the SIZE directive must exist insert zero data element pairs 0 0 for the number of elements given in SIZE 5 Add an open parenthesis just before the first data element and a close parenthesis after the last data element 6 If the SIZE directive is given remove it and copy the preceding data element if available into the number of SIZE data elements If data was not given insert SIZE data elements of zero 0 sepa rated by commas Example BS2 MyDataPtr DATA 100 255 128 2 64 WORD 920 10 BS1 SYMBOL MyDataPtr 100 EEPROM MyDataPtr 255 128 128 64 152 3 0 0 0 0 0 O O 0 O 0 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 395 BASIC Stamp and Stamp II Conversions DTMFOUT BASIC Stamp NO EQUILEVANT COMMAND BASIC Stamp Il DTMFOUT pin ontime offtime key key e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 e ONTIME and OFFTIME are constants expressions or bit nibble byte or word variables in the range 0 65535
158. gramming Manual 1 9 Page 415 BASIC Stamp and Stamp II Conversions NAP BASIC Stamp NAP period e PERIOD is a constant or a bit byte or word variable in the range 0 7 representing 18ms intervals e Current is reduced to 20uA assuming no loads BASIC Stamp Il NAP period e PERIOD is a constant expression or a bit nibble byte or word variable in the range 0 7 representing 18ms intervals e Current is reduced to 50uA assuming no loads CONVERSION No conversion necessary Page 416 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C OUTPUT BASIC Stamp OUTPUT pin e PIN is a constant or a bit byte or word variable in the range 0 7 BASIC Stamp Il OUTPUT pin e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 Conversion BS1 gt BS2000 222 PIN may bea constant or a bit nibble byte or word variable in the range 0 15 o A A ht Oe bd 1 PIN must be a constant or a bit byte or word variable in the range 0 7 Example e BS2 OUTPUT 15 BS1 INPUT 7 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 417 BASIC Stamp and Stamp II Conversions PAUSE BASIC Stamp PAUSE milliseconds e MILLISECONDS is a constant or a bit byte or word variable in the range 0 65535 BASIC Stamp Il PAUSE milliseconds e MILLISECONDS is a constant expression or a bit nibble byte or word variable in the range 0 65535 CONVER
159. he phone line interface Parallax Inc BASIC Stamp Programming Manual 1 9 Page 361 BASIC Stamp Il Application Notes applications using the BS2 It s based on a circuit presented in Encyclo pedia of Electronic Circuits Volume 5 by Graf and Sheets TAB McGraw Hill 1995 ISBN 0 07 011077 8 We ve filled in specific component values and sources added parts for coupling the BS2 and tested the circuit s ability to dial the phone How it works Starting at the phone line end of the circuit a double pole single throw DPST switch or set of relay contacts isolates the circuit from the phone line when the circuit is not in use Closing the switch puts the phone into the off hook condition which causes the phone company to generate a dialtone Although a single setof contacts would be sufficient to break the circuit a tradition of robust design in phone circuits makes it normal for a hook switch to break both sides of the circuit After the switch a Sidactor surge protection device clips large voltage spikes that might result from nearby lightning strikes Its voltage rating is selected to let it do its surge protection job without interfering with relatively high ringing voltages or phone company test voltages Note that nothing can provide 100 percent lightning immunity but the Sidactor is cheap insurance against most routine surges A 600 to 600 ohm transformer isolates the BS2 from the line s DC voltages On the other si
160. her Parallax Inc BASIC Stamp Programming Manual 1 9 Page 321 Figure l 22 Calculating Baudmode for BS2 Serout Step 1 Calculate the Bit Period bits 0N12 Bits 0 through 12 of the baudmode are the bit period expressed in microseconds us SeroutOs actual bit period is always 20us longer than specified Use the following formula to calculate the baudmode bit period for a given baud rate INT ae baud rate 920 INT means convert to integer drop the numbers to the right of the decimal point Step 2 Set Data Bits and Parity bit 13 Bit 13 lets you select one of two combinations of data bits and parity 0 8 bits no parity 8192 7 bits even parity Step 3 Select the Polarity of Serial Output bit 14 Bit 14 tells Serout whether the data should be inverted as when sent directly to a standard COM port or noninverted to pass through a line driver 0 noninverted 16384 inverted Serout through pin 16 SOUT is always inverted regardless of the polarity setting However polarity will still affect fpin if used Step 4 Set Driven or Open Output bit 15 Bit 15 tells Serout whether to drive the output in both states 0 and 1 or drive to one state and leave open in the other If you select open the state that is driven is determined by polarity with inverted polarity open modes drive to 5V only noninverted open modes drive to ground OV only Bit settings 0 driven 32768
161. high CS Deactivate 0831 debug ADres Show us the conversion result pause 1000 Wait a second goto again Do it again Parallax Inc BASIC Stamp Programming Manual 1 9 Page 359 BASIC Stamp Il Application Notes LISTING 3 BIDIRECTIONAL COMMUNICATION WITH LTC1298 Program LTC1298 BS2 LTC 1298 analog to digital converter This program demonstrates use of the Shiftout and Shiftin instructions to communicate with an LTC1298 serial ADC Shiftout is used to send setup data to the ADC Shiftin to capture the results of the conversion The comments in this program concentrate on explaining the operation of the Shift instructions for more information on the ADC see Stamp app note 22 or the Linear Tech spec sheets CS con 0 Chip select 0 active CLK con 1 Clock to ADC out on rising in on falling edge DIO_n con 2 Data I O pin _number_ config var nib Configuration bits for ADC AD var word Variable to hold 12 bit AD result startB var config bitO Start bit for comm with ADC sglDif var config bit1 Single ended or differential mode oddSign var config bit2 Channel selection msbf var config bit3 Output Os after data xfer complete This program demonstrates the LTC1298 by alternately sampling the two input channels and presenting the results on the PC screen using Debug high CS Deactivate ADC to begin high DIO_n Set data pin for first start bit again Main loop for
162. iable For index 0 to 9 Repeat with index 0 1 2 9 myBytes index index 13 Write index 13 to each cell of array Next For index 0 to 9 Repeat with index 0 1 2 9 debug myBytes index Show contents of each cell Next stop If you run this program Debug will display each of the 10 values stored in the cells of the array myBytes 0 0 13 0 myBytes 0 1 13 13 myBytes 2 2 13 26 myBytes 9 9 13 117 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 219 BASIC Stamp Il A word of caution about arrays If you re familiar with other BASICs and have used their arrays you have probably run into the subscript out of range error Subscript is another term for the index value It s out of range when it exceeds the maximum value for the size of the array For instance in the example above myBytes is a 10 cell array Allowable index numbers are 0 through 9 If your program exceeds this range PBASIC2 will not respond with an error message Instead it will access the next RAM location past the end of the array This can cause all sorts of bugs If accessing an out of range location is bad why does PBASIC2 allow it Unlike a desktop computer the BS2 doesn t always have a display device connected to it for displaying error messages So it just contin ues the best way it knows how It s up to the programmer you to prevent bugs Another unique property of PBASIC2 arrays is thi
163. ible for special incidental or consequential damages resulting from any breach of warranty or under any legal theory including lost profits downtime goodwill damage to or replacement of equipment or property and any costs or recovering reprogramming or reproducing any data stored in or used with Parallax products Internet Access We maintain Internet systems for your convenience These may be used to obtain software communicate with members of Parallax and communicate with other customers Access information is shown below E mail info parallaxine com Ftp ftp parallaxinc com Web http www parallaxinc com Internet BASIC Stamp Discussion List We maintain an email discussion list for people interested in BASIC Stamps The list works like this lots of people subscribe to the list and then all questions and answers to the list are distributed to all subscribers It s a fun fast and free way to discuss issues To subscribe to the Stamp list send email to MajordomoOparallaxinc comand write subscribe stamps in the body of the message This manual is valid with the following software and firmware versions BASIC Stamp I STAMP EXE software version 2 1 Firmware version 1 4 BASIC Stamp II STAMP2 EXE software version 1 1 Firmware version 1 0 Newer versions will usually work but older versions may not New software can be obtained for free on our Internet web and ftp site New firmware however must usually be purchas
164. in Command constant e Cyclesis an optional number of times to transmit a given key or command Ifnocyclesentry is used Xout defaults to two The cycles entry should be used only with the DIM and BRIGHT command codes Explanation Xout lets you control appliances via signals sent through household AC wiring to X 10 modules The appliances plugged into these modules can be switched on or off lights may also be dimmed Each module is as signed a house code and unit code by setting dials or switches on the module To talk to a particular module Xout sends the appropriate house code and unit code key The module with the corresponding codes then listens for its house code again and a command on off dim or bright Xout interfaces to the AC powerline through an approved interface de vice such as a PL 513 or TW 523 available from Parallax or X 10 deal ers The hookup requires a length of four conductor phone cable and a Page 344 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il standard modular phone base connector 6P4C type Connections are as follows PL 513 or TW 523 BS2 1 zPin 2 GND 3 GND 4 mPin This pin should also be connected to 5V through a 10k resistor Here are the Xout command codes and their functions Command Code Function unitOn 10010 Turnonthe currently selected unit unitOff 11010 Turn off the currently selected unit unitsOff 11100 Turn offall modules w this
165. in the figure are rounded hl previous state of pin unknown to the nearest microsecond Shiftout Timing Diagram cpin Demo Program See listing 1 of BS2 application note 2 Using Shiftin and Shiftout Parallax Inc BASIC Stamp Programming Manual 1 9 Page 335 BASIC Stamp Il Sleep SLEEP seconds Put the BS2 into low power sleep mode for a specified number of sec onds e Seconds is a variable constant 1 65535 that specifies the duration of sleep in seconds Explanation Sleep allows the BS2 to turn itself off then turn back on after a pro grammed period of time The length of Sleep can range from 2 3 seconds to slightly over 18 hours Power consumption is reduced to about 50 pA assuming no loads are being driven The resolution of the Sleep instruc tion is 2 304 seconds Sleep rounds the specified number of seconds up to the nearest multiple of 2 304 For example Sleep 1 causes 2 3 seconds of sleep while Sleep 10 causes 11 52 seconds 5 x 2 304 of sleep Pins retain their previous I O directions during Sleep However out puts are interrupted every 2 3 seconds during Sleep due to the way the chip keeps time The alarm clock that wakes the BS2 up is called the watchdog timer The watchdog is a resistor capacitor oscillator built into the PBASIC2 inter preter chip During Sleep the chip periodically wakes up and adjusts a counter to determine how long it has been asleep If it isn t time to wake up the
166. ing arrangements shown in the schematics of figures I 2 and I 3 is to smooth out the high frequency PWM leaving only the lower frequency audio behind Keep this in mind if you want to interface BS2 DTMF output toradios and other equipment that could be adversely affected by the presence of high frequency noise on the input Make sure to filter the DTMF output thoroughly The circuits shown here are only a starting point you may want to use an active low pass filter with a roll off point around 2 kHz Demo Program This demo program is a rudimentary memory dialer Since DTMF digits fit within a nibble four bits the program below packs two DTMF digits into each byte of three EEPROM data tables The end of a phone number Figure 1 2 Driving an Audio Amplifier 1k 1k 1 O pin gt hy T hy T Amplifier e g Radio Shack a eae 277 1008C Driving a Speaker 10uF both gt 40Q Speaker VO pin gt or 8Q in series C1 dE c2 with 33Q resistor Notes C1 may be omitted for piezo speakers C2 is optional but reduces high frequency noise Page 258 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Figure l 3 Interfacing to the Telephone Line 600 6000 ik 0 1uF connect switch or transformer relay contacts JC 117760 i Ay 1 O pin o S o vy i phone line 1 Ef 10Q 0 001uF red and green 1 i both o o AN 270V Sidactor DK P3000AA61 ND P3000AA61 ND 3
167. inisavariable constant 0 15 that specifies the I O pin to use Explanation In order for the BS2 to actively output a 0 a 0 volt level on one of its pins two conditions must be satisfied 1 Thecorresponding bit of the DIRS variable must contain a 1 in order to connect the pin s output driver 2 The corresponding bit of the OUTS variable must contain a 0 Low performs both of these actions with a single fast instruction Demo Program This program shows the bitwise state of the 5V DIRS and OUTS variables before and after the instruction Low 4 You may also connect an LED A to pin P4 as shown in figure I 6 to see it light an when the Low instruction executes pa Q Dirs 10000 Initialize P4 to high 1 0 pi debug Before cr pin debug bin16 dirs bin16 outs cr cr Figure 1 6 pause 1000 LOW 4 debug After cr debug bin16 dirs bin16 outs Page 284 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Nap NAP period Enter sleep mode for a short period Power consumption is reduced to about 50 pA assuming no loads are being driven e Periodisa variable constant that determines the duration of the reduced power nap The duration is 2period 18 ms Read that as 2 raised to the power period times 18 ms Period can range from 0 to 7 resulting in the following nap lengths Period 2period Length of Nap 0 1 18 ms 1 2 36 ms 2 4 72 ms 3 8 144 ms 4 16 288 ms 5 32
168. interpreted as the bit period minus 20us Bit 13 2000 hex is a flag that controls the number of data bits and parity 0 8 bits and no parity 1 7 bits and even parity Bit 14 4000 hex controls polarity 0 noninverted 1 inverted Bit 15 8000 hex isnotused by Serin Plabelis an optional label indicating where the program should gointhe event ofa parity error This argument may only be provided if baudmode indicates 7 bits and even parity Timeout is an optional variable constant 0 65535 that tells Serin how long in milliseconds to wait for incoming data If data does not arrive in time the program will jump to the address specified by tlable Tlabel is an optional label which must be provided along with timeout indicating where the program should go in the eventthat data does not arrive within the period specified by timeout InputDatais a list of variables and modifiers that tells Serin what todo with incoming data Serin can store dataina variable or array interpret numeric text decimal binary or hex and store the corresponding value in a variable wait for a fixed or variable sequence of bytes or ignore a specified number of bytes These actions can be combined in any order in the inputData list Parallax Inc BASIC Stamp Programming Manual 1 9 Page 307 BASIC Stamp Il Explanation The BS2 can send and receive asynchronous serial data at speeds up to 50 000 bits per second Serin the serial input instruction
169. into a 24 pin DIP socket located in the center of the carrier When plugged onto the board the interpreter chip the largest chip on the BS2 IC should be furthest from the reset button 2 In the BASIC Stamp Programming Package you received a serial cable to connect the BASIC Stamp II to your PC Plug the female end into an available serial port on your PC 3 Plug the male end of the serial cable into the carrier board s serial port 4 Supply power to the carrier board either by connecting a 9 volt battery or by providing an external power source BASIC Stamp il lt 2222222232 Rng 0000000000 p Area 00000000000000 oo 0000000000000000000 0000000000000000000 9 volt 2700000000000000000 n oo0o0000000000000000 Battery 0000000 1 0 Clips ooooooo __ alolo alololo olalo u alo ceo 0 Header J Sog gt zvsonuro ooooooo AMI e aG6ece aaaeaacaaRtRQoo00000 R NENA EB O00 0000 eset 3 0000000 110 2 0000000 BS2 IC Button 2 gt Ee a oo00000 Socket O lemmrnnananajooooooo E RESOrRerr reno ooo o oo A 0000000 RS 232 SO COOOOOOOOG ooo 1 0 E 0000000 Serial 3 0000000 Header Port B0000000000000000000 0000000000000000000 0000000000000000000 0000000000000000000 o0000000000000000000 PAALAX 7 Sis 00000000000 A A REV A 0000000000 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 199 BASIC Stamp Il RX 2 23 GND ATN q 3 22 i RES GND 4 2
170. ious example to copy IN2 to OUT2 before Tog gling you ll see that the state of the pin does change Demo Program Connect LEDs to pins 0 through 3 as shown in figure I 28 and run the program below The Toggle instruction will treat you to a light show You may also run the demo without LEDs The debug window will show you the states of pins 0 through 3 thePin var nib Variable to count 0 3 again for thePin 0 to 3 Pins 0 to 3 driving LEDs TOGGLE thePin Toggle each pin debug cls bin4 INA No LEDs Watch debug screen pause 200 Brief delay next Next pin goto again Repeat endlessly Figure 1 28 Pins 3 gt 2 gt y 0 Y Y Z Y LED LED LED y LED 2200 2200 2200 2000 Page 340 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Write WRITE address byte Write a byte of data to the EEPROM e Addressis a variable constant specifying the EEPROM address 0O 2047 to write to e Byteis a data byte to be written into EEPROM Explanation The EEPROM is used for both program storage which builds down ward from address 2047 and data storage which may use any EEPROM byte not used for program storage Data may either be downloaded to the BS2 along with the program via the Data directive or a running program may store data in EEPROM using the Write instruction EEPROM differs from RAM the memory in which variables are stored in several respects 1 Writing to EEPROM takes
171. ires a minimum of three inputs data shift clock and latch clock Shiftout automatically handles the data and shift clock presenting data bits one at a time on the data pin then pulsing the clock to shift them into the 595 s shift register An additional step pulsing the latch clock input is required to move the shifted bits in parallel onto the output pins of the 595 Note that this application does not control the output enable or reset lines of the 595 This means that before the Stamp first sends data to the 595 the 595 s output latches are turned on and may contain random data In critical applications you may want to hold output enable high disabled until the Stamp can take control DataP con 0 Data pin to 74HC595 Clock con 1 Shift clock to 595 Latch con 2 Moves data from shift register to output latch counter var byte Counter for demo program The loop below moves the 8 bit value of counter onto the output Page 358 BASIC Stamp Programming Manual 1 9 Parallax Inc 2 Using Shiftin amp Shiftout 2 Using Shiftin 8 Shiftout BASIC Stamp Il Application Notes lines of the 595 pauses then increments counter and repeats The data is shifted msb first so that the most significant bit is shifted to the end of the shift register pin QH and the least significant bit is shifted to QA Changing msbfirst to Isbfirst causes the data to appear backwards on the
172. is obviously less than 100 the program says it is greater The problem is that 99 is internally represented as the two s comple ment value 65437 which using unsigned math is greater than 100 Don t mix signed and unsigned values in If Then comparisons Logic Operators If Then supports the logical operators NOT AND OR and XOR NOT inverts the outcome of a condition changing false to true and true to Parallax Inc BASIC Stamp Programming Manual 1 9 Page 271 BASIC Stamp Il false The following If Thens are equivalent IF x lt gt 100 THEN notEqual Goto notEqual if x is not 100 IF NOT x 100 THEN notEqual Goto notEqual if x is not 100 The operators AND OR and XOR join the results of two conditions to produce a single true false result AND and OR work the same as they do in everyday speech Run the example below once with AND as shown and again substituting OR for AND b1 5 b2 9 IF b1 5 AND b2 10 THEN True Change AND to OR and see debug Statement was not true what happens stop True debug Statement was true stop The condition b1 5 AND b2 10 is not true Although b1 is 5 b2 is not 10 AND works just as it does in English both conditions must be true for the statement to be true OR also works in a familiar way if one or the other or both conditions are true then the statement is true XOR short for exclusive OR may not be familiar but it does have an English cou
173. kage The User I O 9 0 1 logic threshold is approximately 1 4V User I O 10 User I O 11 To realize low power during sleep make sure that User I O 12 no pins are floating causing erratic power drain User I O 13 Either drive them to VSS or VDD or program User I O 14 them as outputs that don t have to source User I O 15 current Regulator Out Output from 5V regulator VIN powered Should not be allowed to source more than 50mA including PO P15 loads Power In Power input VIN not powered Accepts 4 5V 5 5V Current consumption is dependent upon run sleep mode and I O s Reset I O When low all I O s are inputs and program execution is suspended When high program executes from start Goes low when VDD is less that 4V or ATN is greater than 1 4V Pulled to VDD by a 4 7K resistor May be monitored as a brown out reset indicator Can be pulled low externally i e button to VSS to force a reset Do not drive na za ves Ground Ground Located adjacent to VIN for easy battery hookup Located adjacent to VIN for easy battery hookup VIN Regulator In Input to 5V regulator Accepts 5 5V to 15V Ifpower is applied directly to VDD pin may be left unconnected Page 452 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix D Dual NPN Trans Pack Quad Res Pack Single PNP Trans Pack 4V Brown out Det 10K Res 2n3904 4 7K Res 10K Res amp 2N3906 2N3906 SOUT VIN SIN 2 VSS
174. l be changed to input and will remain in that state after the instruction is completed Cpinis a variable constant 0 15 that specifies the I O pin that will be connected to the synchronous serial device s clock input This pin s I O direction will be changed to output Modeisa value 0 3 or 4 predefined symbols that tells Shiftin the order in which data bits are to be arranged and the relationship of clock pulses to valid data Here are the symbols values and their meanings Symbol Value Meaning MSBPRE 0 Data msb first sample bits before clock pulse LSBPRE 1 Data Isb first sample bits before clock pulse MSBPOST 2 Data msb first sample bits after clock pulse LSBPOST 3 Data Isb first sample bits after clock pulse Msb is most significant bit the highest or leftmost bit of a nibble byte or word Lsbis the least significantbit the lowest or rightmost bit of anibble byte or word e Resultis a bit nibble byte or word variable in which incoming data bits will be stored e Bitsis an optional entry specifying how many bits 1 16 are to beinputby Shiftin Ifnobitsentry is given Shiftin defaults to 8 bits Explanation Shiftin provides an easy method of acquiring data from synchronous serial devices Synchronous serial differs from asynchronous serial like Serin and Serout in that the timing of data bits is specified in relation ship to pulses on a clock line Data bits may be valid after the rising or falling ed
175. l purpose variables Just like the I O variables the user variables have predefined names WO through W12 and BO through B25 BO is the low byte of WO B1 is the high byte of WO and so on through W12 B24 low byte B25 high byte Unlike I O variables there s no reason that your program variables have to be stuck in a specific position in the Stamp s physical memory A byte is a byte regardless of its location And if a program uses a mix ture of variables of different sizes it can be a pain in the neck to logi cally dole them out or allocate storage More importantly mixing fixed variables with automatically allocated variables discussed in the next section is an invitation to bugs A fixed variable can overlap an allocated variable causing data meant for one variable to show up in another We recommend that you avoid using the fixed variables in most situa tions Instead let PBASIC2 allocate variables as described in the next section The host software will organize your storage requirements to make optimal use of the available memory Why have fixed variables at all First for a measure of compatibility with the BS1 which has only fixed variables Second for power users who may dream up some clever hack that requires the use of fixed variables You never know Defining and Using Variables Before you can use a variable in a PBASIC2 program you must declare it Declare is jargon for letting the Stamp know that yo
176. le flash low 0 PAUSE 100 high 0 PAUSE 100 goto flash This code causes pin 0 to go low for 100 ms then high for 100 ms The delays produced by Pause are as accurate as the ceramic resonator timebase 1 percent When you use Pause in timing critical applica tions keep in mind the relatively low speed of the PBASIC interpreter about 3000 instructions per second This is the time required for the BS2 to read and interpret an instruction stored in the EEPROM Since the chip takes 0 3 milliseconds to read in the Pause instruction and 0 3 milliseconds to read in the instruction following it you can count on loops involving Pause taking almost 1 millisecond longer than the Pause period itself If you re programming timing loops of fairly long duration keep this and the 1 percent tolerance of the timebase in mind Demo Program This program demonstrates the Pause instruction s time delays Once a second the program will put the debug message paused on the screen again PAUSE 1000 debug paused cr goto again Page 288 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Pulsin PULSIN pin state resultVariable Measure the width of a pulse in 2ps units e Pinis avariable constant 0 15 that specifies the I O pin to use This pin will be placed into input mode during pulse measurement and left in that state after the instruction finishes e State is a variable or constant 0 or 1 that specifie
177. le or constant by which the variable increases or decreases with each trip through the For Next loop If start is larger than end PBASIC2 understands stepVal to be negative even though no minus sign is used Explanation For Next loops let your program execute a series of instructions for a specified number of repetitions In simplest form reps var nib Counter for the FOR NEXT loop FOR reps 1 to 3 Repeat with reps 1 2 3 debug Each rep put one on the screen NEXT Each time the For Next loop above executes the value ofreps is updated See for yourself reps var nib Counter for the FOR NEXT loop FOR reps 1 to 10 Repeat with reps 1 2 10 debug dec reps Each rep show values of reps NEXT For Next can also handle cases in which the start value is greater than the end value It makes the commonsense assumption that you want to count down fromstart toend like so reps var nib Counter for the FOR NEXT loop FOR reps 10 to 1 Repeat with reps 10 9 1 debug dec reps Each rep show values of reps NEXT Parallax Inc BASIC Stamp Programming Manual 1 9 Page 261 BASIC Stamp Il If you want For Next to count by some amount other than 1 you can specify a stepVal For example change the previous example to count down by 3 reps var nib Counter for the FOR NEXT loop FOR reps 10 to 1 STEP 3 Repeat with reps 10 7 1 debug dec reps Each rep show values of
178. lose to 5V or ground as possible They should not be allowed to float Unused pins that are not connected to circuitry should be set to output Page 208 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il When a pin is an output it is internally connected to ground or 5V through a very efficient CMOS switch If it is lightly loaded lt 1mA the output voltage will be within a few millivolts of the power supply rail ground for 0 5V for 1 Pins can sink as much as 25mA output ting 0 and source up to 20 mA outputting 1 Each of the two eight pin ports should not carry more than a total of 50mA sink or 40mA source Pins PO through P7 make up one port P8 through P15 the other 2048 byte Erasable Memory Chip U2 U1 is permanently programmed at the factory and cannot be repro grammed so your PBASIC2 programs must be stored elsewhere That s the purpose of U2 the 24LC16B electrically erasable programmable read only memory EEPROM EEPROM is a good medium for pro gram storage because it retains data without power but can be repro grammed easily EEPROMs have two limitations 1 They take a relatively long time as much as several milliseconds to write data into memory and 2 There is a limit to the number of writes approximately 10 million they will accept before wearing out Because the primary purpose of the BS2 s EEPROM is program storage neither of these is normally a problem It would tak
179. m you can conserve program memory by turning those instructions into a subroutine Then wherever you would have had to insert that code you can simply write Gosub label where label is the name of your subrou tine Writing subroutines is like adding new commands to PBASIC You can avoid a potential bug in using subroutines by making sure that your program cannot wander into them without executing a Gosub In the demo program what would happen if the stop instruction were removed After the loop finished execution would continue in pickAnumber When it reached Return the program would jump back into the middle of the For Next loop because this was the last return address assigned The For Next loop would execute indefinitely Page 266 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Demo Program This program is a guessing game that generates a random number ina subroutine called pickAnumber It is written to stop after three guesses To see a common bug associated with Gosub delete or comment out the line beginning with Stop after the For Next loop This means that after the loop is finished the program will wander into the pickAnumber subroutine When the Return at the end executes the program will go back to the last known return address in the middle of the For Next loop This will cause the program to execute endlessly Make sure that your programs can t accidentally execute subroutines rounds var
180. mbers they rep resent For example cheers con 3 Number of cheers FOR count 1 to cheers GOSUB makeCheers NEXT That code would work exactly the same as the previous FOR NEXT loops The Stamp host software would substitute the number 3 for the constant name cheers throughout your program Note that it would not mess with the label makeCheers which is not an exact match for cheers Like variable names labels and instructions constant names are not case sensitive CHEERS and ChEErs would all be processed as identical to cheers Using named constants does not increase the amount of code down loaded to the BS2 and it often improves the clarity of the program Weeks after a program is written you may not remember what a par ticular number was supposed to represent using a name may jog your memory or simplify the detective work needed to figure it out Named constants have another benefit Suppose the Three Cheers program had to be upgraded to Five Cheers In the original example you would have to change all of the 3s to 5s Search and replace would help but you might accidentally change some 3s that weren t num bers of cheers too A debugging mess However if you made smart use of a named constant all you would have to do is change 3 to 5 in one place the CON directive cheers con 5 Number of cheers Page 226 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Now assuming that
181. mming P1 P1 BS2 BS2 e ES Page 318 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Serout SEROUT tpin baudmode pace JJoutputData SEROUT tpin fpin baudmode ftimeout tlabel J outputData Transmit asynchronous e g RS 232 data Tpin is a variable constant 0 16 that specifies the I O pin through which the serial data will be sent This pin will switch to output mode and will remain in that state after the instruction is completed If Tpin is set to 16 the Stamp uses the dedicated serial output pin SOUT normally used by the STAMP2 host program Baudmode is a 16 bit variable constant that specifies serial timing and configuration The lower 13 bits are interpreted as the bit period minus 20ps Bit 13 2000 hex is a flag that controls the number of data bits and parity 0 8 bits and no parity 1 7 bits and even parity Bit 14 4000 hex controls the bit polarity 0O noninverted 1 inverted Bit 15 8000 hex determines whether the pin is driven to both states 0 1 or to one state and open in the other 0 both driven 1 open Pace is an optional variable constant 0 65535 that tells Serout how long in milliseconds it should pause between transmitting bytes OutputDatais alist of variables constants and modifiers that tells Serout how to format outgoing data Seroutcan transmitindividual or repeating bytes convert values into decimal hex or binary text representations or transmit string
182. mming Manual 1 9 Page 347 BASIC Stamp Il Application Notes From a more technical standpoint X 10 signals are digital codes im posed on a 120 kHz carrier that is transmitted during zero crossings of the AC line To send X 10 commands a controller must synchronize to the AC line frequency with 50 microsecond precision and transmit an 11 bit code sequence representing the button pressed A company named X 10 owns a patent on this system To encourage others to use their technology without infringing their patent X 10 sells a pair of modules that provide a relatively simple safe UL and CSA approved interface with the AC power line These interfaces are the PL 513 and TW 523 The PL 513 is a transmit only unit the TW 523 can be used to transmit and receive X 10 codes The Stamp II presently supports only transmission of X 10 codes but either of the interfaces may be used The figure shows how they connect to the Stamp II A word of caution The PL 513 or TW 523 provide a safe opto isolated interface through their four pin modular connector However they derive power directly from the AC power line Never open the cases of these devices to make connections or measurements You ll be exposing yourself to a severe even deadly shock hazard That said connecting to the PL 513 or TW 523 is easy They use a standard four conductor modular phone base not handset connector Cutting a 12 foot phone cord in half yields two 6 foot X 10
183. n is to interpret single letter instructions cmd var byte cmd M LOOKDOWN cmd SLMH cmd Branch cmd stop_ low_ medium high_ debug Command not in list stop stop_ debug stop stop low_ debug low stop medium debug medium stop high_ debug high stop In that example the variable cmd contains M ASCII 77 Lookdown finds that this is item 2 of a list of one character commands and stores 2 into cmd Branch then goes to item 2 of its list which is the program label medium at which point the program continues Debug prints me dium on the PC screen This is a powerful method for interpreting user input and a lot neater than the alternative If Then instructions Parallax Inc BASIC Stamp Programming Manual 1 9 Page 279 BASIC Stamp Il Lookdown with Variables and Comparison Operators The examples above show Lookdown working with lists of constants but it also works with variables Check out this example that searches the cells of an array value var byte result var nib a var byte 7 value 17 result 15 a 0 26 a 1 177 a 2 13 a 3 1 a 4 0 a 5 17 a 6 99 LOOKDOWN value a 0 a 1 a 2 a 3 a 4 a 5 a 6 result debug Value matches item dec result in the list Debug prints Value matches item 5 in list because a 5 is 17 All ofthe examples above use Lookdown s default comparison operator of that searches for an exact match But Lookdown also supports other
184. n parity the mode the BS2 supports it counts the number of 1s in an outgoing byte and uses the parity bit to make that number even For instance if it is sending the seven bits 0011010 it sets the parity bit to 1 in order to make an even number of 1s four The receiver also counts up the data bits to calculate what the parity bit should be If it matches the parity bit received the serial receiver as sumes that the data was received correctly Of course this is not neces sarily true since two incorrectly received bits could make parity seem correct when the data was wrong or the parity bit itself could be bad when the rest of the data was OK Many systems that work exclusively with text use or can be set for 7 bit even parity mode Table I 3 shows appropriate baudmode settings For example to receive one data byte through pin 1 at 2400 baud 7E inverted serData var byte Serin 1 24972 serData That instruction will work but it doesn t tell the BS2 what to do in the event of a parity error Here s an improved version that uses the optional plabel serData var byte serin 1 24972 badData serData debug serData Stop badData debug parity error If the parity matches the program continues at the Debug instruction after Serin If the parity doesn t match the program goes to the label badData Note that a parity error takes precedence over other inputData specifications as soon as an error is detected S
185. n serial out and attention respectively RS 232 uses two signaling voltages to represent the logic states 0 and 1 12V is 0 and 12V is 1 When an RS 232 sender has nothing to say it Page 210 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il leaves its output in the 1 state 12V To begin a transmission it out puts a 0 12V for one bit time the baud rate divided into 1 second e g bit time for 2400 baud 1 2400 416 618 You can see how the BS2 takes advantage of these characteristics in the design of its serial interface NPN transistor Q1 serves as a serial line receiver When SIN is negative Q1 is switched off so the 4 7k resistor on its collector puts a high on pin RA2 of U1 the PBASIC2 interpreter chip When SIN goes high Q1 switches on putting a 0 on RA2 U1 SOUT transmits data from U1 to the PC When SOUT outputs a 1 it borrows the negative resting state voltage of SIN and reflects it back to SOUT through a 4 7k resistor When SOUT transmits a 0 it turns on PNP transistor Q3 to put a 5V level on SOUT In this way the BS2 outputs 5 12V RS 232 Of course this method works only with the cooperation of the PC soft ware which must not transmit serial data at the same time the BS2 is transmitting The ATN line interfaces with the data terminal ready DTR handshak ing line of the PC COM port Electrically it works like the SIN line receiver with a 12V signal at ATN turning on the Q2
186. n searches for a value in a list and stores the item number of the first match in a variable For ex ample value var byte result var nib value 17 result 15 LOOKDOWN value 26 177 13 1 0 17 99 result debug Value matches item dec result in list Page 278 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Debug prints Value matches item 5 in list because the value 17 matches item 5 of 26 177 13 1 0 17 99 Note that index numbers count up from 0 not 1 that is in the list 26 177 13 1 0 17 99 26 is item 0 What happens if the value doesn t match any of the items in the list Try changing value 17 to value 2 Since 2 is not on the list Look down does nothing Since result contained 15 before Lookdown executed Debug prints Value matches item 15 in list Since there is no item 15 the program should look upon this number as a no match indication Don t forget that text phrases are just lists of byte values so they too are eligible for Lookdown searches as in this example value var byte result var byte value f result 255 EN LOOKDOWN value The quick brown fox result debug Value matches item dec result in list Debug prints Value matches item 16 in list because the phrase The quick brown fox is a list of 19 bytes representing the ASCII values of each letter A common application for Lookdown in conjunction with the Branch instructio
187. nation Random generates pseudo random numbers ranging from 0 to 65535 They re called pseudo random because they appear random but are generated by a logic operation that always produces the same result for a given input For example wil 0 Clear word variable w1 to 0 RANDOM w1 Generate random number debug dec w1 Show the result on screen In applications requiring more apparent randomness it s a good idea to seed Random s wordvariable with a different value each time For in stance in the demo program below Random is executed continuously while the program waits for the user to press a button Since the user can t control the timing of button presses to the nearest millisecond the results approach true randomness Demo Program Connect a button to pin 7 as shown in figure I 13 and run the program below The program uses Random to simulate a coin toss After 100 trials it reports the total number of heads and tails thrown flip var word The random number coin var flip bitO A single bit of the random number trials var byte Number of flips heads var byte Number of throws that came up heads tails var byte Number of throws that came up tails btn var byte Workspace for Button instruc tion start debug cls Press button to start Page 296 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il for trials 1 to 100 100 tosses of the coin hold RANDOM flip
188. nc BASIC Stamp Programming Manual 1 9 Page 373 BASIC Stamp and Stamp II Conversions 1 First do this 2 Next do this The most important steps in conversion will be listed in a numeric se quence within the conversion section The order of the numbered steps may be important in some situations and unimportant in others it is best to follow the order as closely as possible Tips which are not vital to the conversion are listed within the conver sion section and are preceded by bullets as shown above These tips include additional information on valid argument types properties of the command etc and may be used for further optimization of the code if desired As an example using the above conventions a typical section within this document will look like this SAMPLE COMMAND BASIC Stamp Command syntax line shown here e Argument one is e Argument two is BASIC Stawe Il Command syntax line shown here e Argument one is e Argument two is Conversion BS1 gt BS 2 00 1 First do this 2 Next do this e You might like to know this e You might want to try this Page 374 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C CONVERSION BS1 amp BS 2 1 First do this 2 Next do this e You might like to know this e You might want to try this The following symbols appear within command syntax listings or within the text describing them UPPER C
189. nc BASIC Stamp Programming Manual 1 9 Page 437 BASIC Stamp and Stamp II Conversions Example BS2 SEROUT 15 3313 1000 TimedOut Start DEC FirstByte SecondByte BS1 SEROUT 7 T300 Start B0 B1 Page 438 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C SHIFTIN BASIC Stamp NO EQUIVELANT COMMAND BASIC Stamp Il SHIFTIN dpin cpin mode result bits result bits e DPIN is a constant expression or a bit nibble byte or word vari able in the range 0 15 specifying the data pin e CPIN is a constant expression or a bit nibble byte or word vari able in the range 0 15 specifying the clock pin e MODE is a constant symbol expression or a bit nibble byte or word variable in the range 0 4 specifying the bit order and clock mode 0 or MSBPRE msb first pre clock 1 or LSBPRE lsb first pre clock 2 or MSBPOST msb first post clock 3 or LSBPOST Isb first post clock e RESULT is a bit nibble byte or word variable where the received data is stored e BITS is a constant expression or a bit nibble byte or word vari able in the range 1 16 specifying the number of bits to receive in RESULT The default is 8 CONVERSION BSAS ais e Code such as the following SYMBOL Value BO Result of shifted data SYMBOL Count B1 Counter variable SYMBOL CLK 0 Clock pin is pin 0 SYMBOL DATA PIN1 Data pin is pin 1 DIRS 00000001 Set Clock pin as o
190. nd other logic The Stamp Hs built in Shiftout and Shiftin instructions pro vided general purpose tools for working with this kind of hardware Let s look at some ex amples Shift Register Output with Shiftout The most basic use for Shiftoutis to add an output only port based on a shift register latch combination like the 74HC595 shown in figure 4 Listing 1 demonstrates how simple it is to send data to a device like this Latch Clock Serial Data In Shift Clock D Q D FFO FFO gt CLK gt CLK D Q D Q FF1 FF1 gt CLK gt CLK D Q D Q FF2 FF2 gt CLK gt CLK D Q D Q FF3 FF3 gt CLK gt CLK Parallel Data Out Figure 3 A shift register plus a latch makes a serial to parallel converter Figure 4 Schematic to accompany 74Hc595 882 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 355 BS2 pin 0 BS2 pin 2 BS2 pin 1 BASIC Stamp Il Application Notes Shiftout requires just five pieces of information to do its job e The pin number of the data connection e The pin number of the shift clock connection e The order in which the bits should be sent least significant bit lsb first or most significant bit msb first For the 595 we chose msb first since the msb of the output is farthest down the shift register from the data input For other devices the order of bits is prescribed by the manufacturer s spec sheet e The variable co
191. nd the correspond ing Stamp IT baudmode SERIN Baudmode Conversion Stamp Baudmode Stamp Il Baudmode 396 813 1646 3313 396 4000 813 4000 1646 4000 3313 4000 N o On A OIN O 2 INPUTDATA includes QUALIFIERS and VARIABLES and must Page 432 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C be encased in brackets and If QUALIFIERS are present insert the modifier WAIT immediately before the open paren thesis before the first QUALIFIER 3 Replace any optional formatters with the equivalent DEC formatter RPIN PIN and may be in the range 0 16 e BAUDMODE may be any bit period in between 300 baud and 50000 baud and can be calculated using the following formula INT 1 000 000 Baud Rate 20 e The optional formatter may include any formatter listed for INPUTDATA above Example BS1 SERIN 0 1 ABCD BO B1 BS2 SERIN 0 813 WAIT ABCD DEC FirstByte SecondByte TN kant op Aaa sate 1 PIN RPIN and must be in the range 0 7 2 Remove the FPIN argument Mfpin if it is specified No flow con trol pin is available on the Stamp I 3 BAUDMODE is a constant or a symbol or a bit byte or word vari able representing one of the predefined baudmodes Refer to the BAUDMODE Conversion table above for Stamp II baudmodes and their corresponding Stamp I baudmodes While the Stamp II baudmode is
192. nib Number of reps numGen var word Random number generator must be 16 bits myNum var nib Random number 1 10 for rounds 1 to 3 Go three rounds debug cls Pick a number from 1 to 10 cr GOSUB pickAnumber Get a random number 1 10 pause 2000 Dramatic pause debug My number was dec myNum Show the number pause 2000 Another pause next stop When done stop execution here Random number subroutine A subroutine is just a piece of code with the Return instruction at the end The proper way to use a subroutine is to enter it through a Gosub instruction If you don t the Return instruction won t have the correct return address and your program will have a bug pickAnumber random numGen Stir up the bits of numGen myNum numGen 6550 min 1 Scale to fit 1 10 range Go back to the 1st instruction return after the GOSUB that got us here Parallax Inc BASIC Stamp Programming Manual 1 9 Page 267 BASIC Stamp Il Goto GOTO addressLabel Go to the point in the program specified by addressLabel e AddressLabelis a label that specifies where to go Explanation Programs execute from the top of the page or screen toward the bottom and from left to right on individual lines just the same way we read and write English Goto is one of the instructions that can change the order in which a program executes by forcing it to go to a labeled point in the program A common use for Goto i
193. nib 1 give you the low nibble of byte 1 of the array rather than the high nibble of byte 0 Well it doesn t The modifier changes the meaning of the index value to match its own size In the example above when myBytes is addressed as a byte array it has 10 cells numbered 0 through 9 When it is addressed as a nibble array using myBytes lownib it has 20 cells numbered 0 through 19 You could also address it as individual bits using myBytes lowbit in which case it would have 80 cells numbered 0 through 79 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 223 BASIC Stamp Il What if you use something other than a low modifier say myBytes highnib That will work but its only effect will be to start the nibble array with the high nibble of myBytes 0 The nibbles you address with this nib array will all be contiguous one right after the other as in the previous example myBytes var byte 10 Define 10 byte array myBytes 0 AB Hex AB into Oth byte myBytes 1 CD Hex CD into next byte debug hex myBytes highnib 0 Show high nib of cell 0 A debug hex myBytes highnib 1 Show next nib D This property of modified arrays makes the names a little confusing If you prefer you can use the less descriptive versions of the modifier names bit0 instead of lowbit nib0 instead of low nib and byte0 in stead of low byte These have exactly the same effect but may be less likely to be mi
194. nonarananoncnonanananonononoso 217 Aliases amp Modifiers ccccesesceseeseeseseeeseecceeceeeaecaceeeeseeaeeees 221 Viewing the Memory Map oonecencnoncnnononnennnornnnonnnrnrnonennnirananonoa 224 Defining constants CON ocicociccncnnnoninnnnonnnnninnorononnncronoranannnos 225 Defining data DATA oo ccc cs csseeseececseensnseeesees 228 Run time Math and Logic ooconeccncncnconenenennnininnnnnnnrorenennnnnananoos 231 Una ry Operator ienris eni ee e e ES ENER ET 236 Binary Operators easiness ieroe esip eia 239 PBASIC Instructions cccccceeeeeeeeeeeeeeeeeeuseeeeeeseeneeeeeenens 247 BRANCH cai E 247 BUTTON Sotano ace ortia ais 249 COUNT cta inici 251 DEBUG st ia ao 253 DT MBOUN ii caste ont 257 END Museus odas 260 FOR NEXT iia 261 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 3 Contents FREQOUT doriai aa 264 GOSUB EEE E E 266 CUA AN NR 268 O die eae Alito a dene 269 TBs TEIN viii ia 270 INPUT Munar necce a ai aie eee as ese 276 TOOKDOWN dd Sai steele sae tet 278 LOOKUP 4 5 eta de ean as eile ned deen adie 282 POW cia pito 284 NA Perse ictericia hiv alli eno dolo cali caia dae 285 QUTPUT is Cae a 287 PAUSE viscs toi iit Aa A 288 PUESIN uno e 289 PUESOU Todo ioiariada brocas lia aseo 291 PAM ES At idos 293 RANDOM isin aiaiaaeo a ei a E eiieeii 296 RETIME csi pias 298 READ 3 562 0351 E ores tdci iia ile A 302 RETURN usa sti 304 REVERSE ccoo 305 SER IN aieas ae tbonsrtie ne Eerie ieh 307 SEROUT aienea t
195. ntaining the data to output e The number of bits to be sent If this entry is omitted Shiftout will send eight bits Note that once the data is shifted into shift register an additional program step pulsing the Latch line is required to move the data to the output lines That s because the 74HC595 is internally similar to the schematic in figure 3 The two step transfer process prevents the outputs from rippling as the data is shifted The 74HC595 also has two control lines that are not used in our demonstration but may prove useful in real world applications The Reset line activated by writing a 0 to it simultaneously clears all of the shift register flip flops to 0 without affecting the output latch The Output enable OE line can effectively disconnect the output latch allowing other devices to drive the same lines A 0 on OE con 45 nects the outputs a 1 discon nects them Serial ADC with Shiftin Fig ure 5 and listing 2 demonstrate how to use Shiftin to obtain data from an 8 bit serial ana log to digital converter the ADC0831 ODSV in BS2 pin 1 BS2 pin 2 Figure 5 Schematic for Shiftin requires the same five apc0831 Bs2 pieces of information as Page 356 BASIC Stamp Programming Manual 1 9 Parallax Inc 2 Using Shiftin amp Shiftout 2 Using Shiftin amp Shiftout BASIC Stamp Il Application Notes Shiftout plus one more the relationship of valid data to clock pul
196. nterpart If one condition or the other but not both is true then the statement is true Table I 2 below summarizes the effects of the logical operators As with math you can alter the order in which comparisons and logical opera tions are performed by using parentheses Operations are normally evalu ated left to right Putting parentheses around an operation forces PBASIC2 to evaluate it before operations not in parentheses Page 272 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Table 1 2 Effects of the Logical Operators Used by If Then Condition A OTA false true ConditionA Condition B false false true true ConditionA false true false true Condition B false false true true Condition A false true false true Condition B AXORB false false true true false true true false false true false true Unlike some versions of the If Then instruction PBASIC s If Then can only go to a label as the result of a decision It cannot conditionally perform some instruction as in IF x lt 20 THEN y y 1 The PBASIC version requires you to invert the logic using NOT and skip over the conditional instruction unless the condition is met IF NOT x lt 20 THEN nolnc Don t increment y unless x lt 20 y y 1 nolnc Increment y if x lt 20 Program continues You can also code a conditional Gosub as in IF x 100 THEN G
197. o 16 bits in size e ResultVariableis a variable in which the retrieved value will be stored iffound Explanation Lookup retrieves an item from a list based on the item s position index in the list For example index var nib result var byte index 3 result 255 LOOKUP index 26 177 13 1 0 17 99 result debug Item dec index is dec result Debug prints Item 3 is 1 Note that Lookup lists are numbered from 0 in the list above item 0 is 26 item 1 is 177 etc If the index provided to Lookup is beyond the end of the list the result variable is unchanged In the example above ifindex were greater than 6 the debug message would have reported the result as 255 because that s what result contained before Lookup executed Demo Program This program uses Lookup to create a debug window animation of a spinning propeller The animation consists of the four ASCII characters which when printed rapidly in order at a fixed location appear to spin A little imagination helps a lot here Page 282 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il i var nib frame var byte rotate fori 0to3 LOOKUP i frame debug cls frame pause 50 next goto rotate Parallax Inc BASIC Stamp Programming Manual 1 9 Page 283 BASIC Stamp Il Low LOW pin Make the specified pin output low write 1 to the corresponding bit of DIRS and 0 to the corresponding bit of OUTS e P
198. oa is BASIC Stamp BASIC Stamp II Parallax Inc BASIC Stamp Programming Manual 1 9 Page 371 BASIC Stamp and Stamp II Conversions O 431 BASIC Stamp eiei pisini a inea are ci celeste os 431 BASIC Stamp lina eco teh oia 431 SERIN Baudmode Conversion cccccccccccccscsscccssscssessesesssseesssseees 432 SO AE se E E E E TT O TT O A E S 435 BASIC Stamp rores en ae renee EE E Taaie 435 BASIC Sample 435 SEROUT Baudmode Conversion wiiccccccccccscssccecsscesessesecsssessesseees 436 SHIFUIN a E E A 439 BASIG Stamp rriei anii tata 439 BASIC Stamp Ul coco iiae tia 439 SHIFTOUT ccoo aio 441 BASIC Stap Pernoite ee i siie eiiie E E E eei 441 BASIC Stamp lince 441 A O 443 BASIC Stamp ias 443 BASIC Stamp liviana caras rca lan 443 SOUND See FREQOUT 2 220ceceeeeeeeeeeeeeceeeeeeeeeeeeeeeeneees 444 STOP iat ee i a TT 445 BASIC Stamp Diseret esia nE eTa Rean tarda incas 445 BASIC Stamp Micase oaeiae a 445 TOGGLE cio een 446 BASIC Stamp Insist nti Gerad dike naa ias 446 BASIC Stamp M iinei aii pa adenine 446 WRITE E A E E 447 BASIC Stamp Derri a a E a E a aA ESA 447 BASIC Stamp UW reisos aran caos talon 448 NOUT ee eee ieee aa a a eee ea TT 448 A uessacrateterceenebbericeetlecesscaar tales hake 448 BASIC Stamp ll cinc ii ri dd 448 XETOCOMMANAS att A idas aiii 448 Page 372 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C INTRODUCTION The BASIC Stamp I and BASIC Stamp II have many differences
199. ogram is downloaded to the BS2 This prepro cessing before the program is downloaded is referred to as compile time See the section BS2 Constants and Compile Time Expressions Parallax Inc BASIC Stamp Programming Manual 1 9 Page 231 BASIC Stamp Il After the download is complete and the BS2 starts executing your pro gram this is referred to as runtime At runtime the BS2 processes math and logic operations involving variables or any combination of variables and constants Because compile time and runtime expressions appear similar it can be hard to tell them apart A few examples will help cheers con 3 glasses con cheers 2 1 Compile time oneNinety con 100 90 Compile time noWorkee con 3 b2 ERROR no variables allowed b1 glasses Same as b1 5 b0 99 b1 Run time wi oneNinety 100 90 solved at compile time wi 100 90 100 90 solved at runtime Notice that the last example is solved at runtime even though the math performed could have been solved at compile time since it involves two constants If you find something like this in your own programs you can save some EEPROM space by converting the run time expres sion 100 90 into a compile time expression like oneNinety con 100 90 To sum up compile time expressions are those that involve only con stants once a variable is involved the expression must be solved at runtime That s why the line noWorkee con 3 b2 woul
200. ome other program open the switch ATN 2 gt 882 pin 3 close to program DTR y DB9 pin 4 Page 308 BASIC Stamp Programming Manual 1 9 Parallax Inc motely resetthe BS2 for programming so it may have to be modified before it BASIC Stamp Il Figure 1 18 Pinouts for Standard PC COM Port Connectors with Serin Hookup can be used with other software see figure I 17 Boorn ibe eee The BS2 can also receive RS 232 data too L through any of its other 16 general purpose I O pins rpin 0 through 15 Roen E SIDE a VO pin The I O pins don t need a line receiver An A ae ERAR A s 00000 00000 AO rr porta just a series resistor we suggest 22k SERRATE The resistor limits current into the I O Function DBs ses Protective Ground Transmit Data TD Receive Data Request to Send RTS Clear to Send CTS Data Set Ready DSR Signal Ground SG Data Carrier Detect DCD Data Terminal Ready DTR Ring Indicator RI pins built in clamp diodes which keep input voltages within a safe range Figure 1 18 shows the pinouts of the two styles of PC COM ports and how to connect them to the Stamp The fig ure also shows loopback connections that defeat hardware handshaking used by some PC software NOTE In the connector drawings above several handshaking lines are shown connected together DTR DSR DCD and RTS CTS This for the benefit of terminal programs that expect hardware handshaking Y
201. onnector with PC Terminal Programs Option 1 Custom Software Write custom software that uses the serial port with the DTR line low Under DOS DTR is bit 0 of port 03FC or 02FC com 1 or 2 respectively In QBASIC or QuickBASIC port locations are accessed using the INP and OUT instructions HereOs a QBASIC code fragment that clears the DTR bit on com 1 temp INP amp H3FC OUT amp H3FC temp AND 254 However even if this instruction is issued immediately after the com port is OPENed DTR goes high for almost 100ms more on a slow PC This will cause the BS2 to reset unless the code runs before the BS2 is connected to the com port Do not consider the software approach unless you are an expert programmer able to go it alone as there are no canned examples available Option 2 Capacitive Coupling of ATN Insert the circuit below between the PCOs DTR output and the BS2Os ATN input The series capacitor blocks DTROs steady state as set by a terminal program or other software but passes the attention programming pulse sent by the STAMP2 host software The parallel cap soaks up noise that might be coupled into the line DTR ATN DB9 pin 4 gt Y gt 882 pin 3 0 1pF both Option 3 Switch in ATN The simplest solution is to break the ATN line and insert a switch to let you conveniently connect and disconnect DTR ATN When you want to program the BS2 close the switch when you want to communicate with s
202. optional constant expression or a bit nibble byte or word variable and must be positive o ae Mild ab th inari hea he PE 1 Remove the minus sign from the step value if given The Stamp II dynamically determines the direction at run time depending on the order of START and END This allows for great flexibility in programming Parallax Inc BASIC Stamp Programming Manual 1 9 Page 401 BASIC Stamp and Stamp II Conversions 2 Remove the VARIABLE name after the NEXT statement if given The variable is always assumed to be from the most recent FOR statement and is not allowed in the Stamp II e VARIABLE START END and STEPVAL may be a nibble variable for efficiency e Up to 16 nested FOR NEXT statements may be used Example BS1 FOR B0 10 TO 1 STEP 1 code inside loop NEXT BO BS2 FOR LoopCount 10 TO 1 STEP 1 code inside loop NEXT O thai publ qe 1 VARIABLE START END and STEPVAL must not be a nibble 2 If negative stepping is to be done a negative STEPVAL must be specified 3 Must have no more than 8 nested FOR NEXT loops Example BS2 FOR LoopCount 100 TO 10 STEP 2 code inside loop NEXT BS1 FOR BO 100 TO 10 STEP 2 code inside loop NEXT Page 402 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C FREQOUT BASIC Stamp SOUND pin note duration note duration e PIN is a constant or a bit byte or word variable in the range of 0 7 e NOT
203. or a bit byte or word variable in the range 0 1 e DELAY is a constant or a bit byte or word variable in the range 0 255 e RATE is a constant or a bit byte or word variable in the range 0 255 e WORKSPACE is a byte or word variable e TARGETSTATE is a constant or a bit byte or word variable in the range 0 1 e LABEL is a valid label to jump to in the event of a button press BASIC Stamp Il BUTTON pin downstate delay rate workspace targetstate label e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 e DOWNSTATE is a constant expression or a bit nibble byte or word variable in the range 0 1 e DELAY is a constant expression or a bit nibble byte or word vari able in the range 0 255 e RATE is a constant expression or a bit nibble byte or word vari able in the range 0 255 e WORKSPACE is a byte or word variable e TARGETSTATE is a constant expression or a bit nibble byte or word variable in the range 0 1 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 387 BASIC Stamp and Stamp II Conversions e LABEL is a valid label to jump to in the event of a button press Conversion BS1 gt BS2 00 0 1 PIN may be a constant or a bit nibble byte or word variable in the range 0 15 2 Any or all arguments other than LABEL may be nibble variables for efficiency Example BS1 BUTTON 0 1 255 0 BO 1 ButtonWasPressed BS2 BUTTON 0 1
204. ou may omit these connections if you re using software that doesn t expect handshaking or if you re writing your own software without handshaking Serial Timing and Mode Baudmode Asynchronous serial communication relies on precise timing Both the sender and receiver must be set for identical timing usually expressed in bits per second bps and called baud Serin accepts a 16 bit value called baudmode that tells it the important characteristics of the incoming serial data the bit period data and par ity bits and polarity Figure I 19 shows how baudmode is calculated and table I 3 shows common baudmodes for standard serial baud rates If you re communicating with existing software its speed s and mode s will determine your choice of baud rate and mode In general 7 bit even parity 7E mode is used for text and 8 bit no parity 8N for byte oriented data Parity can detect some communication errors but to use it you lose one data bit This means that incoming data bytes transferred in 7E mode can only represent values from 0 to 127 rather than the 0 to 255 of 8N mode Parallax Inc BASIC Stamp Programming Manual 1 9 Page 309 BASIC Stamp Il Table l 3 Common Data Rates and Corresponding Baudmode Values Direct Connection Through Line Driver Inverted Noninverted 8 data bits 7 data bits 8 data bits 7 data bits no parity even parity no parity even parity Data Speed Baud Rate 300 19697 27889
205. outputs of the 595 Note that the number of bits is _not_ specified after the variable in the instruction since it s eight the default Again Shiftout DataP Clock msbfirst counter Send the bits pulsout Latch 1 Transfer to outputs pause 50 Wait briefly counter counter 1 Increment counter goto Again Do it again LISTING 2 SHIFTIN FROM ADCO831 Program ADC0831 BS2 This program demonstrates the use of the BS2 s new Shiftin instruction for interfacing with the Microwire interface of the Nat l Semiconductor ADCO831 8 bit analog to digital converter It uses the same connections shown in the BS1 app note ADres var byte A to D result one byte CS con 0 Chip select is pin 0 AData con 1 ADC data output is pin 1 CLK con 2 Clock is pin 2 high CS Deselect ADC to start In the loop below just three lines of code are required to read the ADC0831 The Shiftin instruction does most of the work Shiftin requires you to specify a data pin and clock pin AData CLK a mode msbpost a variable ADres and a number of bits 9 The mode specifies msb or Isb first and whether to sample data before or after the clock In this case we chose msb first post clock The ADCO831 precedes its data output with a dummy bit which we take care of by specifying 9 bits of data instead of 8 again low CS Activate the ADC0831 shiftin AData CLK msbpost ADres 9 Shift in the data
206. p II GOTO label CONVERSIONI dad No conversion necessary Page 406 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C BASIC Stamp HIGH pin e PIN is a constant expression or a bit byte or word variable in the range 0 7 BASIC Stamp Il HIGH pin e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 CONVEN ION eed 2 Anne so ota 6 oe aresa ef alee e PIN may be a constant expression or a bit nibble byte or word variable in the range 0 15 A BE eke he hot Be e PIN must be a constant or a bit byte or word variable in the range 0 7 Example BS2 HIGH 15 BS1 HIGH 7 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 407 BASIC Stamp and Stamp II Conversions IF THEN BASIC Stamp IF variable value AND OR variable value THEN label e VARIABLE is a bit byte or word variable No constants are al lowed e is lt gt gt lt gt lt e VALUE is a constant or a bit byte or word variable e LABEL is a location to branch to if the result is true BASIC Stamp Il IF conditionalexpression THEN label e CONDITIONALEXPRESSION is any valid Boolean expression us ing the lt gt gt lt gt lt conditional operators and the AND OR NOT and XOR logical operators e LABEL is a location to branch to if the result is true CONVERSION BST ro fn cta ete 1 If VARIABLE is PINS or PINO PIN7 then replace in with
207. p Programming Manual 1 9 Page 289 BASIC Stamp Il Figure 1 8 wv PULSIN pin 0 variable v PULSIN pin 1 variable v triggered by 1 to 0 v triggered by 0 to 1 Y stopped by 0 to 1 wv stopped by 1 to 0 a IS Lt measured in 2us units measured in 2us units and stored in variable and stored in variable Demo Program This program uses Pulsin to measure a pulse generated by discharging a 0 1uF capacitor through a 1k resistor as shown in figure 1 9 Pressing the switch generates the pulse which should ideally be approximately 120us 60 Pulsin units of 2us long Variations in component values may produce results that are up to 10 units off from this value For more information on calculating resistor capacitor timing see the RCtime in struction time var word again PULSIN 7 1 time Measure positive pulse if time 0 then again If 0 try again debug cls dec time Otherwise display result goto again Do it again 5V 100k L gt 1 0 pin 1k Figure l 9 0 1 pF Page 290 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Pulsout PULSOUT pin time Output a pulse of 2ps to 131 ms in duration e Pinis a variable constant 0 15 that specifies the I O pin to use This pin will be placed into output mode immediately before the pulse and left in that state after the instruction finishes e Time is a variable constant 0 65535 that specifies the duration of the pulse in
208. pect hardware handehanina Yo handshaking or if you re writing your own software without handshaking SOUT to work at the proper voltage Page 320 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il levels there must be an RS 232 output signal connected to SIN and that signal must be quiet not transmitting data when data is being sent through SOUT For more information on using the carrier board DB9 connector for se rial communication see the Serin listing and figure I 17 Serial Timing and Mode Baudmode Asynchronous serial communi cation relies on precise timing Both the sender and receiver must be set for identical timing usually expressed in bits per second bps and called baud Seroutacceptsasingle 16 bitvalue calledbaudmode that specifies im portant characteristics of the se rial transmission the bit time data and parity bits polarity and drive Figure I 22 shows how Serout baudmode is calculated and table I 6 shows common baudmodes for standard serial baud rates If you re communicating with ex isting software its speed s and mode s will determine your choice of baud rate and mode In general 7 bit even parity 7E mode is used for text and 8 bit no parity 8N for byte oriented data Parity can detect some com munication errors but to use it you lose one data bit This means that incoming data bytes trans ferred in 7E mode can only repre sent values from 0 to 127 rat
209. perienced programmers Counted strings normally store the count value in their Oth cell This kind of string won t work with the STR prefix of Debug and Serout STR cannot be made to start read ing at cell 1 debug str myText 1 causes a syntax error Since arrays have a fixed length anyway it does no real harm to put the count in the last cell Aliases and Variable Modifiers An alias variable is an alternative name for an existing variable For example cat var nib Assign a 4 bit variable tabby var cat Another name for the same 4 bits In that example tabby is an alias to the variable cat Anything stored in cat shows up in tabby and vice versa Both names refer to the same physical piece of RAM This kind of alias can be useful when you want to reuse a temporary variable in different places in your program but also want the variable s name to reflect its function in each place Use caution because it is easy to forget about the aliases During debug ging you ll end up asking how did that value get here The answer is that it was stored in the variable s alias An alias can also serve as a window into a portion of another variable Here the alias is assigned with a modifier that specifies what part rhino var word A 16 bit variable head var rhino highbyte Highest 8 bits of rhino tail var rhino lowbyte Lowest 8 bits of rhino Given that example if you write the value 1011000011111101 to rhino then head
210. pins are inputs Input instructions Pulsin Serin auto matically change the specified pin to input and leave it in that state Writing 0s to particular bits of the variable DIRS makes the correspond ing pins inputs And then there s the Input instruction When a pin is an input your program can check its state by reading the corresponding INS variable For example INPUT 4 Hold if IN4 0 then Hold Stay here until P4 is 1 The program is reading the state of P4 as set by external circuitry If nothing is connected to P4 it could be in either state 1 or 0 and could change states apparently at random What happens if your program writes to the OUTS bit of a pin that is set up as an input The state is stored in OUTS but has no effect on the outside world If the pin is changed to output the last value written to the corresponding OUTS bit will appear on the pin The demo program shows how this works Demo Program This program demonstrates how the input output direction of a pin is determined by the corresponding bit of DIRS It also shows that the state of the pin itself as reflected by the corresponding bit of INS is deter mined by the outside world when the pin is an input and by the corre sponding bit of OUTS when it s an output To set up the demo connect a 10k resistor from 5V to P7 on the BS2 The resistor to 5V puts a high 1 on the pin when it s an input The BS2 can override this state by writing Page 276
211. power outages The simplest solution is often to connect resistors high or low to 5V or ground as appropriate to ensure a continu ing supply of current during the reset glitch The demo program can be used to demonstrate Figure l 7 5V LED 2202 the effects of the Nap glitch with an LED and VO pin resistor as shown in figure I 7 Demo Program The program below lights an LED by placing a low on pin 0 This com pletes the circuit from 5V through the LED and resistor to ground During the Nap interval the LED stays lit but blinks off for a fraction of asecond This blink is caused by the Nap wakeup mechanism described above During wakeup all pins briefly slip into input mode effectively disconnecting them from loads low 0 Turn LED on snooze NAP 4 Nap for 288 ms goto snooze Page 286 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Output OUTPUT pin Make the specified pin an output write a 1 to the corresponding bit of DIRS e Pinis avariable constant 0 15 that specifies the I O pin to use Explanation There are several ways to make a pin an output When a program begins all of the BS2 s pins are inputs Output instructions Pulsout High Low Serout etc automatically change the specified pin to output and leave it in that state Writing 1s to particular bits of the variable DIRS makes the corresponding pins outputs And then there s the Output instruction
212. r 1 millisecond Now calculate the time required for this RC circuit to go from 5V to 1 5V as in figure I 14a In RCtime units of 2ps that time 1 204 x 10 works out to 602 units With a 10k resistor and 0 1uF cap RCtime would return a value of approxi mately 600 Since Vinitial and Vfinal don t change we can use a simpli fied rule of thumb to estimate RCtime results for circuits like I 14a RCtime units 600 x R in KQ x C in uF Another handy rule of thumb can help you calculate how long to charge discharge the capacitor before RCtime In the example above that s the purpose of the High and Pause instructions A given RC charges or discharges 98 percent of the way in 4 time constants 4x Rx C In figure I 14a b the charge discharge current passes through the 220Q series resistor and the capacitor So if the capacitor were 0 11F the minimum charge discharge time should be Charge time 4 x 220 x 0 1 x 10 88 x 10 So it takes only 881s for the cap to charge discharge meaning that the 1 ms charge discharge time of the example is plenty A final note about figure I 14 You may be wondering why the 2200 resistor is necessary at all Consider what would happen if resistor R in I 14a were a pot and were adjusted to 0 When the I O pin went high to discharge the cap it would see a short direct to ground The 2200 series resistor would limit the short circuit current to 5V 220Q 23 milliamperes mA and protect the BS2
213. r instance 100 lt lt 3 shift the bits of the decimal number 100 left three places is equivalent to 100 2 Example wi 1111111111111111 for bO 1 to 16 Repeat with b0 1 to 16 debug BIN w1 lt lt bO Shift w1 left bO places next gt gt Shifts the bits of a variable to the right a specified number of places Bits shifted off the right end of a number are lost bits shifted into the left end of the number are Os Shifting the bits of a value right n number of times also has the effect of dividing that number by two to the nth power For instance 100 gt gt 3 shift the bits of the decimal number 100 right three places is equivalent to 100 2 Example wi 1111111111111111 for bO 1 to 16 Repeat with b0 1 to 16 debug BIN w1 gt gt bO Shift w1 right bO places next Page 244 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il REV Returns a reversed mirrored copy of a specified number of bits of a value starting with the rightmost bit Isb For instance 10101101 REV 4 would return 1011 a mirror image of the first four bits of the value Example debug bin 11001011 REV 4 Mirror 1st 4 bits 1101 8 Returns the bitwise AND of two values Each bit of the values is sub ject to the following logic OANDO 0 0AND1 0 1ANDO 0 1AND1 1 The result returned by amp will contain 1s in only those bit positions in which both input values contain 1s Example
214. rallax Inc Appendix C SEROUT BASIC Stamp SEROUT pin baudmode data data e PIN is a constant or a bit byte or word variable in the range 0 7 e BAUDMODE is a constant or a bit byte or word variable in the range 0 15 or a symbol with the following format O T N 2400 1120016001300 e DATA is a constant or a bit byte or word variable e will convert binary numbers to ascii text equivalents up to 5 dig its in length BASIC Stamp Il SEROUT tpin fpin baudmode pace timeout tlabel outputdata e TPIN is a constant expression or a bit nibble byte or word vari able in the range 0 16 e FPIN is a constant expression or a bit nibble byte or word vari able in the range 0 15 BAUDMODE is a constant expression or a bit nibble byte or word variable in the range 0 60657 PACE is a constant expression or a bit nibble byte or word vari able in the range 0 65535 specifying a time in milliseconds to delay between transmitted bytes This value can only be specified if the FPIN is not specified TIMEOUT is a constant expression or a bit nibble byte or word variable in the range 0 65535 representing the number of millisec onds to wait for the signal to transmit the message This value can only be specified if the FPIN is specified TLABEL is a label to jump to in case of a timeout This can only be specified if the FPIN is specified Parallax Inc BASIC Stamp Progr
215. ram contains more than one Data directive subsequent Datas start with the pointer value left by the previous Data For ex ample if your program contains table1 data 72 69 76 76 79 table2 data 104 101 108 108 111 Page 228 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il The first Data directive will start at 0 and increment the pointer 1 2 3 4 5 The second Data directive will pick up the pointer value of 5 and work upward from there As a result the first 10 bytes of EEPROM will contain Address 0 1 2 3 4 5 6 7 8 9 Contents 72 69 76 76 79 104 101 108 108 111 and the constants tablel and table2 will be equal to 0 and 5 respec tively A common use for Data is to store strings sequences of bytes repre senting text As we saw earlier PBASIC2 converts quoted text like A into the corresponding ASCII character code 65 in this case You can place quotes around a whole chunk of text used in a Data directive and PBASIC2 will understand it to mean a series of bytes The follow ing three Data directives are equivalent table1 data 72 69 76 76 79 table data HPE PL PL PO table3 data HELLO Data can also break word sized 16 bit variables into bytes for storage in the EEPROM Just precede the 16 bit value with the prefix word as follows twoPiece data word F562 Put 62 in low byte F5 in high Moving the Data Pointer You can specify a pointer address in your
216. rd Move to beginning of line Move down one screen Move to beginning of file BASIC Stamp Il The following list is a summary of the PBASIC instructions used by the BASIC Stamp II This symbol indicates new or greatly improved instructions compared to the BASIC Stamp I BRANCHING IF THEN Compare and conditionally branch BRANCH Branch to address specified by offset GOTO Branch to address GOSUB Branch to subroutine at address GOSUBs may be nested up to four levels deep and you may have up to 255 GOSUBs in your program RETURN Return from subroutine LOOPING FOR NEXT Establish a FOR NEXT loop NUMERICS LOOKUP Lookup data specified by offset and store in vari able This instruction provides a means to make a lookup table LOOKDOWN Find target s match number 0 N and store in variable RANDOM Generate a pseudo random number DIGITAL 1 0 INPUT Make pin an input OUTPUT Make pin an output REVERSE If pin is an output make it an input If pin is an input make it an output LOW Make pin output low HIGH Make pin output high TOGGLE Make pin an output and toggle state PULSIN Measure an input pulse resolution of 2 ps Page 204 BASIC Stamp Programming Manual 1 9 Parallax Inc PULSOUT BUTTON SHIFTIN SHIFTOUT COUNT XOUT SERIAL 1 0 SERIN SEROUT ANALOG 1 0 PWM RCTIME BASIC Stamp Il Output a timed pulse by inverting a pin for some time resolution of 2 us Debounce b
217. reps NEXT Note that even though you are counting down stepVal is still positive For Next takes its cue from the relationship betweenstartandend not the sign of stepVal In fact although PBASIC2 won t squawk if you use a negative entry forstep Val its positive integer math treats these values as large positivenumbers For example 1intwo s complementis 65535 So the following code executes only once reps var word Counter for the FOR NEXT loop FOR reps 1 to 10 STEP 1 Actually FOR reps 1 to 10 step 65535 debug dec reps Executes only once NEXT This brings up a good point the instructions inside a For Next loop always execute once no matter what start end and stepVal values are assigned There is a potential bug that you should be careful to avoid PBASIC uses unsigned 16 bitinteger math to increment decrement the counter vari ableand compare it to the stop value Themaximum value a 16 bit variable can hold is 65535 If you add 1 to 65535 you get Oas the 16 bit register rolls over like a car s odometer does when you exceed the maximum mileage it can display If youwritea For Next loop whose step value is larger than the difference between the stop value and 65535 this rollover will cause the loop to execute more times than you expect Try the following example reps var word Counter for the loop FOR reps 0 to 65500 STEP 3000 Each loop add 3000 debug dec reps Show reps in debug window
218. resent then you must tell the software which port to use as shown above Parallax Inc BASIC Stamp Programming Manual 1 9 Page 201 BASIC Stamp Il Entering amp Editing Programs We ve tried to make the editor as intuitive as possible to move up press the up arrow to highlight one character to the right press shift right arrow etc Most functions of the editor are easy to use Using single keystrokes you can perform the following common functions e Load save and run programs e Move the cursor in increments of one character one word one line one screen or to the beginning or end of a file e Highlight text in blocks of one character one word one line one screen or to the beginning or end of a file e Cut copy and paste highlighted text e Search for and or replace text e See how the BASIC Stamp II memory is being allocated e Identify the version of the PBASIC interpreter Editor Function Keys The following list shows the keys that are used to perform various functions Fl Display editor help screen Alt R Run program in BASIC Stamp II download the program on the screen then run it Alt L Load program from disk Alt S Save program on disk Alt M Show memory usage maps Alt I Show version number of PBASIC interpreter Alt Q Quit editor and return to DOS Enter Enter information and move down one line Tab Same as Enter Page 202 BASIC Stamp Programming Manual 1 9 Parallax Inc Left
219. rriage return where character is an ascii character SPECIAL SYMBOLS The following symbols can be included in the output data CLS causes the debug window to be cleared CR causes a carriage return in the debug window BASIC Stamp Il DEBUG outputdata outputdata e OUTPUTDATA is a text string constant or a bit nibble byte or word variable e If no formatters are specified DEBUG defaults to ascii character display without spaces or carriage returns following the value FORMATTERS The following formatting tokens may precede the data elements as indicated below Page 390 BASIC Stamp Programming Manual 1 9 Parallax Inc ASC STR STR REP DEC 1 5 SDEC 1 5 HEX 1 4 SHEX 1 4 THEX 1 4 ISHEX 1 4 BIN 1 16 SBIN 1 16 value bytearray bytearray n value n value value value value value value value value Appendix C Displays variablename character carriage return where character is an ascii character Displays values as an ascii string until a value of 0 is reached Displays values as an ascii string for n bytes Displays value n times Displays value in decimal optionally limited or padded for 1 to 5 digits Displays value in signed decimal op tionally limited or padded for 1 to 5 dig its Value must not be less than a word variable Displays value in hexidecimal option ally limited or padded for 1 to 4 digits Displays v
220. rter of the high and low times must be greater than 4 us If youuse Countonslowly changing analog waveforms like sine waves you may find that the count value returned is higher than expected This is because the waveform may pass through the BS2 s 1 5 volt logic threshold slowly enough that noise causes false counts You can fix this by passing the signal through a Schmitt trigger like one of the inverters of a 74HCT14 Demo Program Connect the active low circuit shown in figure I 1 Button instruction to pin P7 of the BS2 The Debug screen will prompt you to press the button as quickly as possible for a 1 second count When the count is done the screen will display your score the total number of cycles registered by count Note that this score will almost always be greater than the actual number of presses because of switch bounce Parallax Inc BASIC Stamp Programming Manual 1 9 Page 251 BASIC Stamp Il cycles var word Variable to store counted cycles loop debug cls How many times can you press the button in 1 second cr pause 1000 debug Ready set pause 500 debug GO cr count 7 1000 cycles debug cr Your score DEC cycles cr pause 3000 debug Press button to go again hold if IN7 1 then hold goto loop Page 252 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Debug DEBUG outputData outputData Display variables and messages on the PC screen within the STAMP2 host
221. s You can refer to the Oth cell of the array by using just the array s name without an in dex value For example myBytes var byte 10 Define 10 byte array myBytes 0 17 Store 17 to Oth cell debug myBytes 0 Display contents of Oth cell debug myBytes Also displays contents of Oth cell This works with the string capabilities of the Debug and Serout instructions A string is a byte array used to store text A string must include some indicator to show where the text ends The indicator can be either the number of bytes of text or a marker usually a byte con taining 0 also known as a null located just after the end of the text Here are a couple of examples Example 1 counted string myText var byte 10 An array to hold the string myText 0 H myText 1 E Store HELLO in first 5 cells myText 2 L myText 3 L myText 4 O myText 9 5 Put length 5 in last cell debug str myText myText 9 Show HELLO on the PC screen Page 220 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Example 2 null terminated string myText var byte 10 An array to hold the string myText 0 H myText 1 E Store HELLO in first 5 cells myText 2 L myText 3 L myText 4 O myText 5 0 Put null 0 after last character debug str myText Show HELLO on the PC screen Note to ex
222. s a constant expression or a bit nibble byte or word vari able in the range 0 15 BAUDMODE is a constant expression or a bit nibble byte or word variable in the range 0 65535 e PLABEL is a label to jump to in case of a parity error e TIMEOUT is a constant expression or a bit nibble byte or word variable in the range 0 65535 representing the number of millisec onds to wait for an incoming message e TLABEL is a label to jump to in case of a timeout e INPUTDATA is a set of constants expressions and variable names separated by commas and optionally proceeded by the formatters available in the DEBUG command except the ASC and REP Parallax Inc BASIC Stamp Programming Manual 1 9 Page 431 BASIC Stamp and Stamp II Conversions formatters Additionally the following formatters are available STR bytearray L E input a string into bytearray of length L with optional end character of E 0 s will fill remaining bytes SKIP L input and ignore L bytes WAITSTR bytearray L Wait for bytearray string of L length or terminated by 0 if parameter is not specified and is 6 bytes maximum WAIT value value Wait for up to a six byte se quence E E AN 1 BAUDMOLE is a constant or a bit nibble byte or word variable equal to the bit period of the baud rate plus three control bits which specify 8 bit 7 bit True Inverted and Driven Open output The following table lists the Stamp I baudmodes a
223. s and parity 0 8 bits no parity 8192 7 bits even parity Step 3 Select the Polarity of Serial Input bit 14 Bit 14 tells Serin whether the data is inverted as when it comes directly from a standard COM port or noninverted after passing through a line receiver 0 noninverted 16384 inverted Add your choice to the sum of steps 1 and 2 The result is the correct serial baudmode for use by Serin Serin through pin 16 SIN is always inverted regardless of the polarity setting However polarity will still affect fpin if used FYI Bit Map of Serin Baudmode If youOre more comfortable thinking in terms of bits hereOs a bit map of SerinOs baudmode Not used by Serin Data bits parity 0 8 bits no parity 1 7 bits even parity Polarity 0 noninverted 1 inverted Bit period 0 to 8191s 2018 x Pdp gt B BBBBBBBBBBBB 15 14 13 12 1110 9 8 7 6 5 4 3 2 1 0 Make a 10 byte array Put 0 in last byte Get 9 byte string Display the string Why store only 9 bytes in a 10 byte array We want to reserve space for the 0 byte that many BS2 string handling routines regard as an end of string marker This becomes important when dealing with variable length arrays For example the STR modifier can accept a second parameter telling it to end the string when a particular byte is received or when the specified length is reached whichever comes first An example Page 312 BASIC Stamp
224. s of bytes from variable arrays Fpin is an optional variable constant 0 15 that specifies the I Opintobe used for flow control byte by byte handshaking This pin will switch to input mode and remain in that state after the instruction is completed Timeout is an optional variable constant 0 65535 used in conjunction withfpinflow control Timeout tells Serout how long in milliseconds to wait forfpin permission to send If permission does not arrive in time the program will continue attlabel Tlabelis an optional label used withfpinflow control andtimeout Tlabel indicates where the program should go in the event that Parallax Inc BASIC Stamp Programming Manual 1 9 Page 319 BASIC Stamp Il permission to transmit data is not granted within the period specified bytimeout Explanation The BS2 can send and receive asynchronous serial data at speeds up to 50 000 bits per second Serout the serial output instruction can convert and format outgoing data in powerful ways With all this power inevita bly comes some complexity which we ll overcome by walking you through the process of setting up Serout and understanding its options For more information on serial communication fundamentals see the Serin listing Physical Electrical Interface The BS2 can transmit data serially through any of its I O pins tpin 0 15 or through the SOUT pin tpin 16 that goes to the DB9 pro gramming connector on BS2 carrier boards Most
225. s or a bit byte or word variables e VARIABLE is a bit byte or word variable BASIC Stamp Il LOOKUP index value0 value1 valueN variable e INDEX is a constant expression or a bit nibble byte or word variable e VALUEO VALUE1 etc are constants expressions or bit nibble byte or word variables e VARIABLE is a bit nibble byte or word variable Conversion BS1 gt BS52 0 1 Change all parentheses and to brackets and e Any or all arguments may be nibble variables for efficiency Example BS1 LOOKUP bo 1 2 3 4 b1 BS2 LOOKUP ByteValue 1 2 3 4 Result Conversion BS1 amp BS2 0000 1 Change all brackets and to parentheses and e None of the arguments may nibble variables Example BS2 LOOKUP ByteValue 1 2 3 4 Result BS1 LOOKUP bo 1 2 3 4 b1 Page 414 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C LOW BASIC Stamp LOW pin e PIN is a constant or a bit byte or word variable in the range 0 7 BASIC Stamp Il LOW pin e PIN is a constant expression or a bit nibble byte or word variable in the range 0 15 Conversion BS1 gt BS2 0 0 PIN may bea constant or a bit nibble byte or word variable in the range 0 15 Conversion BSI BS2 000 PIN must be a constant or a bit byte or word variable in the range 0 7 Example BS2 LOW 15 BS1 LOW 7 Parallax Inc BASIC Stamp Pro
226. s to create endless loops programs that repeat a group of instructions over and over Goto requires an address label for a destination A label is a word start ing with a letter containing letters numbers or underscore _ charac ters and ending with a colon Labels may be up to 32 characters long Labels must not duplicate names of PBASIC2 instructions or variables constants or Data labels refer to Appendix B for a list of reserved words Labels are not case sensitive so doltAgain doitagain and DOitAGAIN all mean the same thing to PBASIC Don t worry too much about the rules for devising labels PBASIC will complain with an error message at download time if it doesn t like your labels Demo Program This program is an endless loop that sends a Debug message to your computer screen Although you can clear the screen by pressing a key the BS2 program itself won t stop unless you shut it off doltAgain debug Looping cr GOTO doltAgain Page 268 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il High HIGH pin Make the specified pin output high write 1s to the corresponding bits of both DIRS and OUTS e Pinis a variable constant 0 15 that specifies the I O pin to use Explanation In order for the BS2 to actively output a 1 a 5 volt level on one of its pins two conditions must be satisfied 1 The corresponding bit of the DIRS variable must contain a 1 in order to connect the pin
227. s to power the BASIC Stamp You can also use a 5 15 5 40 volts on BS2 IC rev d volt power supply but you should be careful to connect the supply to the appropriate part of the BASIC Stamp A 5 volt supply should be connected directly to the 5V pin but a higher voltage should be connected to the PWR pin Connecting a high voltage supply greater than 6 volts to the 5 volt pin can permanently damage the BASIC Stamp Packing List If you purchased the BASIC Stamp Programming Package you should havereceived the following items e BASIC Stamp manual this manual e BASICStamp I programming cable parallel port DB25 to 3 pin e BASICStamp II programming cable serial port DB9 to DB9 e 3 5 inch diskette If you purchased the BASIC Stamp I Starter Kit you should have received the following items e BASIC Stamp Manual this manual e BASICStamp II programming cable serial port DB9 to DB9 e 3 5 inch diskette e BS2 IC module e BASIC Stamp 2 Carrier Board If any items are missing please let us know Page 198 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Connecting to the PC To program a BASIC Stamp II you ll need to connect it to your PC and then run the editor software In this section it s assumed that you have a BS2 IC and its corresponding carrier board shown below To connect the BASIC Stamp II to your PC follow these steps 1 Plug the BS2 IC onto the carrier board The BS2 IC plugs
228. s whether the pulse to be measured begins with a 0 to 1 transition 1 ora 1 to 0 transition 0 e ResultVariable is a variable in which the pulse duration in 2us units will be stored Explanation You can think of Pulsin as a fast stopwatch that is triggered by a change in state 0 or 1 on the specified pin When the state on the pin changes to the state specified in Pulsin the stopwatch starts When the state on the pin changes again the stopwatch stops If the state of the pin doesn t change even if it is already in the state specified in the Pulsin instruction the stopwatch won t trigger Pulsin waits a maximum of 0 131 seconds for a trigger then returns with 0 in result Variable If the pulse is longer than 0 131 seconds Pulsin returns a O in result Variable If the variable is a word the value returned by Pulsin can range from 1 to 65535 units of 2 us If the variable is a byte the value returned can range from 1 to 255 units of 2 us Regardless of the size of the variable Pulsin internally uses a 16 bit timer When your program specifies a byte vari able Pulsin stores the lower 8 bits of the internal counter into it This means that pulse widths longer than 510 ys will give false low readings with a byte variable For example a 512 1s pulse would return a Pulsin reading of 256 with a word variable and 0 with a byte variable Figure I 8 shows how the state bit controls triggering of Pulsin Parallax Inc BASIC Stam
229. sconstrued You may also use modifiers with the Oth cell of an array by referring to just the array name without the index value in parentheses It s fair game for aliases and modifiers both in VAR directives and in instruc tions myBytes var byte 10 Define 10 byte array zipBit var myBytes lowbit Bit O of myBytes 0 debug myBytes lownib Show low nib of Oth byte Memory Map If you re working on a program and wondering how much variable space you have left you can view a memory map by pressing ALI M The Stamp host software will check your program for syntax errors and if the program s syntax is OK will present you with a color coded map of the available RAM You ll be able to tell at a glance how much memory you have used and how much remains You may also press the space bar to cycle through similar maps of EEPROM program memory Two important points to remember about this map are Page 224 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il 1 Itdoes not correlate the names of your variables to their locations The Stamp software arranges variables in descending order of size starting with words and working downward to bits But there s no way to tell from the memory map exactly which variable is located where 2 Fixed variables like B3 and W1 and any aliases you give them do not show up on the memory map as memory used The Stamp software ignores fixed variables when it arranges au
230. se of the register allocation methods within a single Stamp II program TheByte VAR BO TheByte VAR BYTE TheByte 25 TheByte 34 TheBy dx 20 B4 15 TheByte 10 7 Using only method 1 within a Using only method 2 within a Using both methods within a program is safe program is safe program leads to erratic execution Page 380 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C To define a variable of a specific type use the following format variablename VAR type arraysize previousvariable modifier modifier Example LoopCounter VAR WORD defines LoopCounter as a word LoopCounter2 VAR BYTE 2 defines LoopCounter2 as an array of two bytes FirstBit VAR LoopCounter LOWBIT defines FirstBit as the lowest bit within the variable LoopCounter e VARIABLENAME is a series of characters letters numbers and underscores but not starting with a number up to 32 characters in length e TYPE is a valid variable type of BIT NIB BYTE or WORD e ARRAYSIZE is an optional constant value in parentheses speci fying the number of elements of TYPE to define for the variable VARIABLENAME e PREVIOUSVARIABLE is the name of a previously defined vari able This can be used to assign alias names to the same variable space e MODIFIER is an optional offset preceded by a period which indicates which part of a previously defined variable to set VARIABLENAME to Valid modifiers
231. ses Some devices latch bits onto the serial data output on the rising edge of the clock line Output bits remain valid until the next rising edge In these cases your program must specify post clock input for the Shiftin mode When bits are latched on the falling edge of the clock specify pre clock input With pre clock input we sometimes encounter a chicken and egg problem How can the first bit be clocked outbeforethe first clock pulse It can t of course The simple solution is to specify one additional bitin the Shiftin instruction However most serial peripherals require thatsome instructions be sent to them before they return any data In this case the falling edge of the last Shiftout clock cycle clocks the first bit of the following pre clock Shiftin instruction Serial ADC with Shiftout and Shiftin The third example figure 6 listing 3 uses Shiftout and Shiftin to hold a two way conversation with an LTC1298 ADC An initial Shiftout sends configuration bits to the LTC1298 to select channel and mode then a Shiftin gets the 12 bit result of the conversion The program listing concentrates on the mechanics of the Shift instructions for more detailed information on the ADC itself see Stamp Application Note 22 or the manufacturer s spec sheet Variable Voltage Source for Demo 5 Me oa t 10uF an tantalum 0D5V in 5k pot lt 5k 1k pot BS2 BS2 BS2 pin 0 pin2 pin1 Figure 6 Schematic for LTc1
232. ssuming the circuit is connected to pin 0 here s the com plete PWM instruction PWM 0 100 40 Put a 1 96V charge on capacitor After outputting the PWM pulses the BS2 leaves the pin in input mode 0 in the corresponding bit of DIRS In input mode the pin s output driver is effectively disconnected If it were not the steady output state of the pin would change the voltage on the capacitor and undo the voltage setting established by PWM PWM charges the capacitor the load presented by your circuit discharges it How long the charge lasts and therefore how often your program should repeat the PWM instruction to refresh the charge depends on how much current the circuit draws and how stable the voltage must be You may need to buffer PWM output with a simple op amp follower if your load or stability requirements are more than the passive circuit of figure I 12 can handle Figure l 12 10k 1 O pin gt y JE Analog voltage 1uF gt ia ON5Vdc Page 294 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il How PWM is Generated The term PWM applies only loosely to the action of the BS2 s PWM instruction Most systems that output PWM do so by splitting a fixed period of time into an on time 1 and an off time 0 Suppose the interval is 1 ms and the duty cycle is 100 255 Conventional PWM would turn the output on for 0 39 ms and off for 0 61 ms repeating this process each millisecond The main ad
233. te 353 360 SHIFTIN 205 330 333 353 360 SHIFTOUT 205 334 335 353 360 Serial 1 0 205 210 212 SERIN 205 307 318 431 434 SEROUT 205 319 329 435 438 Serial port selection editor 201 Serial shift register Interfacing to a 354 355 SERIN 205 307 318 431 434 Serin baudmode conversion 432 SEROUT 205 319 329 435 438 Serout baudmode conversion 436 Servos Controlling and testing 85 90 74HC595 Interfacing to 355 356 358 359 SLEEP 206 210 336 337 443 Shift left lt lt 239 244 Shift right gt gt 239 244 SHIFTIN 205 330 333 353 360 439 440 SHIFTOUT 205 334 335 353 360 441 442 SIN 236 238 Sine wave generation DTMFOUT 206 257 259 396 FREQOUT 206 264 265 403 404 Sound 444 DTMFOUT 206 257 259 396 FREQOUT 206 264 265 403 404 SQR 236 237 Stamp list ii STOP 338 445 Stopping halting execution END 206 210 260 398 NAP 206 210 285 286 416 PAUSE 206 288 418 SLEEP 206 210 336 337 443 Storing data 206 213 302 303 341 343 Subtraction 239 240 Symbols Aliases 221 224 Arrays 219 221 Defining 217 221 Modifiers 221 224 Modifiers figure 222 Size 218 Symbols variables or constants 383 384 System requirements 198 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 463 BASIC Stamp Il Index Te Tables creating LOOKDOWN 204 278 281 412 413 LOOKUP 204 282 283 414 Time 206 PAUSE 206 288 418 Timeout 316 327 TOGGLE 339 340 446 Tone
234. tell them apart Just add a question mark as follows x var byte x 65 DEBUG dec x Show decimal value of x with label x Now Debug displays x 65 Debug works with expressions too Parallax Inc BASIC Stamp Programming Manual 1 9 Page 253 BASIC Stamp Il x var byte x 65 DEBUG dec 2 x 1 Show decimal result with 2 x 1 The Debug window would display 2 x 1 128 If you omit the the display would bejust 128 If you tell Debug to display a value without formatting it as a number you get the ASCII character equivalent of the value x var byte x 65 DEBUG x Show x as ASCII Since x 65 and 65 is the ASCII character code for the letter A see appendix the Debug window would show A Up to now we veshown Debug with just one argument but you can display additional items by adding them to the Debug list separated by commas x var byte x 65 DEBUG The ASCII code for A is dec x Show phrase x Since individual Debug instructions can grow to be fairly complicated and since a program can contain many Debugs you ll probably want to control the formatting of the Debug screen Debug supports six formatting characters Symbol Value Effect CLS 0 clear Debug screen HOME 1 home cursor to top left corner of screen BELL 7 beep the PC speaker BKSP 8 back up one space TAB 9 tab to the next multiple of 8 text column CR 13 carriage return to the beginning of the next line
235. tentiometers Parallax Inc BASIC Stamp Programming Manual 1 9 Page 205 BASIC Stamp Il SOUND FREQOUT Generate one or two sinewaves of specified fre quencies each from 0 32767 hz DTMFOUT Generate DTMF telephone tones EEPROM ACCESS DATA Store data in EEPROM before downloading PBASIC program READ Read EEPROM byte into variable WRITE Write byte into EEPROM TIME PAUSE Pause execution for 0 65535 milliseconds POWER CONTROL NAP Nap for a short period Power consumption is reduced SLEEP Sleep for 1 65535 seconds Power consumption is reduced to approximately 50 pA END Sleep until the power cycles or the PC connects Power consumption is reduced to approximately 50 A PROGRAM DEBUGGING DEBUG Send variables to PC for viewing Page 206 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il BS2 Hardware Figure H 1 is a schematic diagram of the BASIC Stamp II BS2 In this section we ll describe each of the major components and explain its function in the circuit Figure H 1 Schematic Diagram of the BASIC Stamp II BS2 IC rev A o 5V 5V 5V Power source for all VoD UA 5V Reg BS2 components U3 av Reset f VIN S 81350HG vad 5 sosamn OVT R sour Vss de D i 10V a Th yS U1 PBasic2 7 Pa ie Also called ground Ceramic throughout this de 112 04H document 24LC16B
236. ter has been split into three registers INS OUTS and DIRS on the Stamp II There is no predefined name representing all registers as a group as in the Stamp I Additional symbol and or program structure and logic changes are necessary to access all three registers properly The Stamp I PINS register has been split into two registers INS and OUTS in the Stamp IL Each register now has a specific task input or output rather than a dual task both input and output as in the Stamp I If the Stamp I program used the symbol assigned to PINS for both input and output an additional symbol is neces sary to access both functions This may also require further changes in program structure and logic 1 On all variable declarations replace the equal sign with VAR 2 On all constant declarations replace the equal sign with CON 1 Insert the SYMBOL directive before the variable s name or constant s name in the declaration 2 On all variable declarations replace the variable type or register name to the right of the with the corresponding predefined register name according to the following table Parallax Inc BASIC Stamp Programming Manual 1 9 Page 383 BASIC Stamp and Stamp II Conversions BS2 to BS1 Register Allocation Conversion Stamp II Variable Type Register Name Stamp Register Name PINS PINS DIRS WO W6 BO B13 BO B13 BITO BIT15
237. the code before the RCTIME command which discharges the capacitor This code usually consists of two lines as follows HIGH pin Where PIN is the same PIN in the RCTIME command PAUSE delay where DELAY is an appropriate time in millisec onds to allow the capacitor to fully discharge 3 Change the command s name from RCTIME to POT 4 Use the ALT P key combination to determine the appropriate scale factor for the POT you are using as described in the BASIC Stamp I manual Parallax Inc BASIC Stamp Programming Manual 1 9 Page 427 BASIC Stamp and Stamp II Conversions 5 Replace the STATE argument with a SCALE argument 6 Make VARIABLE a byte variable e PIN must be in the range 0 7 and must not be a nibble variable Page 428 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C READ BASIC Stamp READ location variable e LOCATION is a constant or a bit byte or word variable in the range 0 255 e VARIABLE is a bit byte or word variable BASIC Stamp Il READ location variable e LOCATION is a constant expression or a bit nibble byte or word variable in the range 0 2047 e VARIABLE is a bit nibble byte or word variable Oe OA eek ts ena duda be e LOCATION and VARIABLE may be a nibble variable for efficiency e LOCATION may be in the range 0 2047 e eB meet Aah ee One eA ES e LOCATION and VARIABLE must not be a nibble variable e LOCATION must be in the range 0 2
238. the logic level on the Clock input rises changes from 0 to 1 the flip flop stores a D Q snapshot of the logic level Lateh q Oe at the Data input to the Q Clock output It holds that bit on Q until the power is D_a turned off or until the A di 1 opposite state is present Parallel na D Data In Data Out on Data when Clock re gt CL ceives another 0 to 1 Q change For the sake of F 2 gt conversation we call a 0 Q to 1 transition a rising edge and 1 to 0 a fall pb ing edge g fe The action of a D type flip Figure 1 Parallel latch Parallax Inc BASIC Stamp Programming Manual 1 9 Page 353 BASIC Stamp Il Application Notes 2 Using Shiftin amp Shiftout flopis described as latching Data Serial onto O Parallel latches like the D ary one shown in figure 1 allow sev Shift b CLK eral bits to be simultaneously lock latched onto a set of outputs This is one of the ways that a computer addresses multiple devices on a Pa single parallel data bus it puts Data Out the data on the bus then triggers one device s Clock The data is Dee f SA FF2 latched into the destination de gt cLk vice only other devices ignore the data untiltheirClock lines are trig gered E Fra gt CLK With different wiring the parallel latch becomesaserialone known Figure 2 Serial shift register as a shift register figure 2 See how this works
239. their direct name or by defining sym bols as aliases OR 2 They may be referenced by defining variables of specific types byte word etc The software will automatically assign variables to registers in an efficient manner The first method is used in the Stamp I and supported in the Stamp II as a means of directly allocating register space The second method was introduced with the Stamp II as a means of indirectly allocating register space and is the recommended method It is important to note that defining variables of specific types in the Stamp II is not directly equivalent to assigning symbols to registers in the Stamp I Defining variables of specific types on the Stamp II al lows the software to efficiently and automatically organize variable space within the general purpose registers while assigning symbols to registers allows you to organize variable space yourself While both methods of register allocation are legal in the Stamp II care should be taken to implement only one method of register use within each pro gram Each PBASIC program should either reference all registers by their predefined names or symbols assigned to them or reference all registers by defining variables of specific types and let the software do the organization for you If you use both methods within the same program it is likely that variables will overlap and your program will behave erratically The following diagram may serve to clarify the u
240. ting AC wiring The BASIC Stamp II has the built in ability to generate X 10 control signals with the new Xout instruction How it works From the user s standpoint an X 10 system consists of a control box plugged into a wall outlet and a bunch of modules plugged into outlets around the house The appliances and lights to be controlled are plugged into the modules During the installation of the system the user assigns two codes to each of the modules a house code and a unit code As the name suggests the house code is usually common to all modules in a particular house There are 16 house codes assigned letters A through P The idea of the house code is to avoid interference between adjacent homes equipped with X 10 by allowing the owners to assign different codes to their modules The control box must be assigned the same house codes as the modules it will control There are also 16 unit codes numbered 1 through 16 that identify the modules within a particular house If your needs expand beyond 16 modules it s generally safe to use another house code for the next group of 16 since few if any neighborhoods are so infested with X 10 control lers that all available house codes are taken X 10 signals don t propa gate beyond the nearest utility transformer Once this simple setup is complete the user controls the modules by pressing keys on the control box Pressing 1 ON turns module 1 on Parallax Inc BASIC Stamp Progra
241. to 10000 but less than 65535 the largest number we can represent in 16 bit math have five There are two loopholes that we have to plug 1 The number 0 does not have zero digits and 2 The number 65535 has five digits To ensure that 0 is accorded one digit status we just put 0 at the begin ning of the Lookdown list Since 0 is not less than 0 an input of 0 results in 1 as it should At the other end of the scale 65535 is not less than 65535 so Lookdown will end without writing to the result variable numDig To ensure that an input of 65535 returns 5 in numDig we just put 5 into numDig beforehand i var word Variable 0 65535 numDig var nib Variable 0 15 to hold of digits for i 0 to 1000 step 8 numDig 5 If no true in list must be 65535 LOOKDOWN i lt 0 10 100 1000 10000 65535 numDig debug i rep 5 numdig dec i tab digits dec numdig cr pause 200 next Parallax Inc BASIC Stamp Programming Manual 1 9 Page 281 BASIC Stamp Il Lookup LOOKUP index value0 value valueN resultVariable Look up the value specified by the index and store it in a variable If the index exceeds the highest index value of the items in the list variable is unaffected A maximum of 256 values can be included in the list e Indexis the item number constant or variable of the value to be retrieved from the list of values e Valued value7 make up a list of values constants or variables up t
242. to use This pin will be put into output mode during generation of tones and left in that state after the instruction finishes e Durationisa variable constantspecifyingthelengthinmilliseconds 1 to 65535 of the tone s e FreqTisa variable constant specifying frequency in hertz Hz 0 to 32767 of the first tone e Freq2isavariable constantspecifying frequency 0to 32767 Hz of the optional second tone Explanation Freqout generates one or two sinewaves using fast PWM The circuits shown in figure 1 4 filter the PWM in order to play the tones through a speaker or audio amplifier Here s an example Freqout instruction FREQOUT 2 1000 2500 Thisinstruction generates a 2500 Hz tone for 1 second 1000 ms through pin 2 To play two frequencies FREQOUT 2 1000 2500 3000 The frequencies mix together for a chord or bell like sound To generate asilent pause specify frequency value s of 0 Frequency Considerations The circuits in figure I 4 work by filtering out the high frequency PWM used to generate the sinewaves Freqout works over a very wide range of frequencies from 0to32767 Hz soat the upper end ofits range those PWM filters will also filter out most of the desired frequency You may find it necessary to reduce values of the parallel capacitors shown in the circuit or to devise a custom active filter for your application Demo Program This program plays Mary Hada Little Lamb by reading the notes from a Lookup ta
243. tomatically allocated variables in memory Fixed and allocated variables can overlap As we ve said before this can breed some Godzilla sized bugs BS2 Constants and Compile Time Expressions Suppose you re working on a program called Three Cheers that flashes LEDs makes hooting sounds and activates a motor that crashes cymbals together all in sets of three A portion of your PBASIC2 pro gram might contain something like FOR count 1 to 3 GOSUB makeCheers NEXT FOR count 1 to 3 GOSUB blinkLEDs NEXT FOR count 1 to 3 GOSUB crashCymbals NEXT The numbers 1 and 3 in the line FOR count 1 to 3 are called con stants That s because while the program is running nothing can hap pen to change those numbers This distinguishes constants from vari ables which can change while the program is running PBASIC2 allows you to use several numbering systems By default it assumes that numbers are in decimal base 10 our everyday system of numbers But you can also use binary and hexadecimal hex num bers by identifying them with prefixes And PBASIC2 will automati cally convert quoted text into the corresponding ASCII code s Parallax Inc BASIC Stamp Programming Manual 1 9 Page 225 BASIC Stamp Il For example 99 decimal 1010 binary FE hex A ASCII code for A 65 You can assign names to constants using the CON directive Once cre ated named constants may be used in place of the nu
244. tone for 200 milliseconds ms followed by a silent pause of 50 ms This timing gives the phone company equipment plenty of time to recognize and respond to the tones If you want some other timing scheme you can place on and off times between the pin numbers and the tone list like so DTMFout 0 1000 500 6 2 4 8 3 3 3 That instruction would transmit each tone for a full second 1000 ms and pause in silence for a half second 500 ms after each tone Sources Components needed for the simple phone line interface are available from Digi Key and Jameco see the contact information in the schematic For commercial applications one manufacturer of DAAs is Cermetek Microelectronics 406 Pasman Drive Sunnyvale CA 94089 phone 800 882 6271 fax 408 752 5004 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 363 BASIC Stamp Il Application Notes Page 364 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix A ASCII Chart Control Codes Printing Characters Name Function null start of heading start of text end of text end of xmit enquiry acknowledge bell backspace horizontal tab line feed vertical tab form feed carriage return shift out shift in data line escape device control 1 device control 2 device control 3 device control 4 non acknowledge synchronous idle end of xmit block cancel end of medium substitute escape file separator group separator record separator unit separa
245. tor O Ss RIGIHIZTIO FAIAlolQ w P E ajale fur fis os ass fis fs Opwojoa I A OA la Aa ajaja De al Hs e ojo I A Njas wi N RIO Pp ele JAIN amp IX o un 5 R JO JO 9 3 H 7 ju H 5 fa a WwW gt JF JG INIK IK ISIS G IH MD fo v Jo lt delete gt Note that the control codes have no standardized screen symbols The characters listed for them are just names used in referring to these codes For example to move the cursor to the beginning of the next line of a printer or terminal often requires sending linefeed and carriage return codes This common pair is referred to as LF CR Parallax Inc BASIC Stamp Programming Manual 1 8 Page 365 Appendix A Page 366 BASIC Stamp Programming Manual 1 8 Parallax Inc Reserved Words The following table shows the reserved words for each stamp module BASIC STAMP BASIC STAMP II AND BO B13 BITO BIT15 BRANCH BSAVE BUTTON DEBUG DIRO DIR7 DIRS EEPROM END FOR GOSUB GOTO HIGH IF INPUT LET LOOKDOWN LOOKUP LOW MAX MIN N300 N600 N1200 N2400 NAP NEXT ON300 ON600 ON1200 ON2400 OR OT300 OT600 OT1200 OT2400 OUTPUT PAUSE PINO PIN7 PINS PORT POT PULSIN PULSOUT PWM RANDOM READ REVERSE SERIN SEROUT SLEEP SOUND STEP SYMBOL T300 T600 T1200 T2400 THEN TOGG
246. u plan to use a variable what you want to call it and how big it is Although PBASIC Parallax Inc BASIC Stamp Programming Manual 1 9 Page 217 BASIC Stamp Il does have predefined variables that you can use without declaring them first see previous section the preferred way to set up variables is to use the directive VAR The syntax for VAR is symbol VAR size where e Symbolis the name by which you will refer to the variable Names must start with a letter can contain a mixture of letters numbers and underscore _ characters and must not be the same as PBASIC keywords or labels used in your program Additionally symbols can be up to 32 characters long See Appendix B for a list of PBASIC keywords PBASIC does not distinguish between upper and lower case so the names MYVARIABLE myVariable and MyVaRiAbLe are all equivalent Size establishes the number of bits of storage the variable is to contain PBASIC2 gives you a choice of four sizes bit 1 bit nib nibble 4 bits byte 8 bits word 16 bits Optionally specifying a number within parentheses lets you define a variable as an array of bits nibs bytes or words We ll look at arrays later on Here are some examples of variable declarations using VAR Declare variables mouse var bit Value can be 0 or 1 cat var nib Value in range O to 15 dog var byte Value in range 0 to 255 rhino var word Value in range 0 to 65535 A varia
247. uld be 03 the whole number and the lower would be 0 14159 256 36 24 So the constant Pi for use with would be 0324 This isn t a perfect match for Pi but the error is only about 0 1 Limits a value to a specified 16 bit positive minimum The syntax of MIN is value MIN limit Where e value is value to perform the MIN function upon e limit is the minimum value that value is allowed to be Page 242 BASIC Stamp Programming Manual 1 9 Parallax Inc BASIC Stamp Il Its logic is if value is less than limit then make value limit if value is greater than or equal to limit leave value alone MIN works in posi tive math only its comparisons are not valid when used on two s complement negative numbers since the positive integer representa tion of a number like 1 FFFF or 65535 in unsigned decimal is larger than that of a number like 10 000A or 10 decimal Use MIN only with unsigned integers Because of the way fixed size integers work you should be careful when using an expression involving MIN 0 For example 0 1 MIN 0 will result in 65535 because of the way fixed size integers wrap around for w1 100 to O step 10 Walk value of w1 from 100 to 0 debug w1 MIN 50 Show w1 but use MIN to clamp at 50 next MAX Limits a value to a specified 16 bit positive maximum The syntax of MAX is value MAX limit Where e value is value to perform the MAX function upon e limit is the maxim
248. um value that value is allowed to be Its logic is if value is greater than limit then make value limit if value is less than or equal to limit leave value alone MAX works in positive math only its comparisons are not valid when used on two s complement negative numbers since the positive integer representa tion of a number like 1 FFFF or 65535 in unsigned decimal is larger than that of a number like 10 000A or 10 decimal Use MAX only with unsigned integers Also be careful of expressions involving MAX 65535 For example 65535 1 MAX 65535 will result in 0 because of the way fixed size integers wrap around for w1 0 to 100 step 10 Walk value of w1 from 0 to 100 debug w1 MAX 50 Show w1 but use MAX to clamp at 50 next Parallax Inc BASIC Stamp Programming Manual 1 9 Page 243 BASIC Stamp Il Returns the specified decimal digit of a 16 bit positive value Digits are numbered from 0 the rightmost digit to 4 the leftmost digit of a 16 bit number 0 to 65535 Example wi 9742 debug w1 DIG 2 Show digit 2 7 for bO 0 to 4 debug w1 DIG bO Show digits O through 4 of 9742 next lt lt Shifts the bits of a value to the left a specified number of places Bits shifted off the left end of a number are lost bits shifted into the right end of the number are Os Shifting the bits of a value left n number of times also has the effect of multiplying that number by two to the nth power Fo
249. utput and Data pin as input FOR Count 1TO8 PULSOUT CLK 1 Preclock the data Value Value 2 DATA Shift result left and grab next data bit NEXT Count Parallax Inc BASIC Stamp Programming Manual 1 9 Page 439 BASIC Stamp and Stamp II Conversions May be converted to the following code Value VAR BYTE Result of shifted data CLK CON 0 Clock pin is pin O DATA CON 1 Data pin is pin 1 DIRS 0000000000000001 Set Clock pin as output and Data pin as input SHIFTIN DATA CLK MSBPRE Value 8 e Code such as the following Value VAR BYTE Result of shifted data DIRS 0000000000000001 Clock pin is 0 and Data pin is 1 SHIFTIN 1 0 LSBPOST Value 8 May be converted to the following code SYMBOL Value BO Result of shifted data SYMBOL Count B1 Counter variable DIRS 00000001 Clock pin is 0 and Data pin is 1 FOR Count 1TO8 Value DATA 256 Value 2 Shift grab next data bit and shift right PULSOUT CLK 1 Postclock the data NEXT Count Page 440 BASIC Stamp Programming Manual 1 9 Parallax Inc Appendix C SHIFTOUT BASIC Stamp NO EQUIVELANT COMMAND BASIC Stamp Il SHIFTOUT dpin cpin mode data bits data bits e DPIN is a constant expression or a bit nibble byte or word vari able in the range 0 15 specifying the data pin e CPIN is a constant expression or a bit nibble byte or word vari able in the range 0 15 specifying the clock pin
250. utton perform auto repeat and branch to address if button is in target state Shift bits in from parallel to serial shift register Shift bits out to serial to parallel shift register Count cycles on a pin for a given amount of time 0 125 kHz assuming a 50 50 duty cycle Generate X 10 powerline control codes For use with TW523 or TW513 powerline interface module Serial input with optional qualifiers time out and flow control If qualifiers are given then the in struction will wait until they are received before filling variables or continuing to the next instruc tion If a time out value is given then the instruc tion will abort after receiving nothing for a given amount of time Baud rates of 300 50 000 are possible 0 19 200 with flow control Data re ceived must be N81 no parity 8 data bits 1 stop bit or E71 even parity 7 data bits 1 stop bit Send data serially with optional byte pacing and flow control If a pace value is given then the instruction will insert a specified delay between each byte sent pacing is not available with flow control Baud rates of 300 50 000 are possible 0 19 200 with flow control Data is sent as N81 no parity 8 data bits 1 stop bit or E71 even parity 7 data bits 1 stop bit Output PWM then return pin to input This can be used to output analog voltages 0 5V using a capacitor and resistor Measure an RC charge discharge time Can be used to measure po
251. vantage of this kind of PWM is its predictabil ity you know the exact frequency of the pulses in this case 1kHz and their widths are controlled by the duty cycle BS2 PWM does not work this way It outputs a rapid sequence of on off pulses as short as 4us in duration whose overall proportion over the course of a full PWM cycle of approximately a millisecond is equal to the duty cycle This has the advantage of very quickly zeroing in on the desired output voltage but it does not produce the neat orderly pulses that you might expect The BS2 also uses this high speed PWM to gener ate pseudo sinewave tones with the DTMFout and Freqout instructions Demo Program Connect a voltmeter such as a digital multimeter set to its voltage range to the output of the circuit shown in figure I 12 Connect BS2 pin 0 to point marked I O pin Run the program and observe the readings on the meter They should come very close to 1 96V then decrease slightly as the capacitor discharges Try varying the interval between PWM bursts by changing the Pause value and the number of PWM cycles to see their effect again PWM 0 100 40 40 cycles of PWM at 100 255 duty pause 1000 Wait a second goto again Repeat Parallax Inc BASIC Stamp Programming Manual 1 9 Page 295 BASIC Stamp Il Random RANDOM variable Generate a pseudo random number e Variableis a byte or word variable whose bits will be scrambled to producea random number Expla
252. ve to the 3 o clock position on the circle increasing as you go around the circle counterclockwise At the origin point 0 degrees the sine is 0 because that point has the same y vertical coordinate as the circle center at 45 degrees sine is 0 707 at 90 degrees 1 180 degrees 0 again 270 degrees 1 The BS2 SIN operator breaks the circle into 0 to 255 units instead of 0 to 359 degrees Some textbooks call this unit a binary radian or brad Each brad is equivalent to 1 406 degrees And instead of a unit circle which results in fractional sine values between 0 and 1 BS2 SIN is based on a 127 unit circle Results are given in two s complement in order to ac commodate negative values So at the origin SIN is 0 at 45 degrees 32 brads 90 90 degrees 64 brads 127 180 degrees 128 brads 0 270 degrees 192 brads 127 To convert brads to degrees multiply by 180 then divide by 128 to convert degrees to brads multiply by 128 then divide by 180 Here s a small program that demonstrates the SIN operator degr var wi Define variables sine var w2 for degr 0 to 359 step 45 Use degrees sine SIN degr 128 180 Convert to brads do SIN debug Angle DEC degr tab Sine SDEC sine cr Display next cos Returns the two s complement 8 bit cosine of an angle specified as an 8 bit 0 to 255 angle See the explanation of the SIN operator above COS is the same in all respects except that the cosine
253. wo program fragments demonstrates the syntax and use of the new XOUT command Basically the command works like pressing the buttons on an X 10 control box first you press one of 16 keys to identify the unit you want to control then you press the key for the action you want that unit to take turn ON OFF Bright or Dim There are also two group action keys Lights ON and All OFF Lights ON turns all lamp modules on without affecting appliance modules All OFF turns off all modules both lamp and appliance types Using XOUT requires a 4 wire 2 I O pin connection to a PL 513 or TW 523 X 10 module See the application note for sources zPin con 0 Zero crossing detect pin from TW523 or PL513 mPin con 1 Modulation control pin to TW523 or PL513 X 10 identifies modules by two codes a House code and a Unit code By X 10 convention House codes are A through P and Unit codes are 1 through 16 For programming efficiency the Stamp II treats both of these as numbers from 0 through 15 houseA con 0 House code 0 A 1 B 15 P Unit1 con 0 Unit code 0 1 1 2 15 16 Unit2 con 1 Unit code 1 2 This first example turns a standard appliance or non dimmer lamp module ON then OFF Note that once the Unit code is sent it need not be repeated subsequent instructions are understood to be addressed to that unit xout mPin zPin houseA Unit1 Talk to Unit 1 xout mPin zPin houseA uniton
254. would contain 10110000 and tail 11111101 Parallax Inc BASIC Stamp Programming Manual 1 9 Page 221 BASIC Stamp Il Table M 3 lists all the variable modifiers PBASIC2 lets you apply these modifiers to any variable name including fixed variables and I O vari ables and to combine them in any fashion that makes sense For ex ample it will allow rhino var word A 16 bit variable eye var rhino highbyte lownib bit1 A bit Table M 3 Variable Modifiers SYMBOL DEFINITION LOWBYTE low byte of a word HIGHBYTE high byte of a word BYTEO byte 0 low byte of a word BYTE1 byte 1 high byte of a word LOWNIB low nibble of a word or byte HIGHNIB high nibble of a word or byte NIBO nib 0 of a word or byte NIB1 nib 1 of a word or byte NIB2 nib 2 of a word NIB3 nib 3 of a word LOWBIT low bit of a word byte or nibble HIGHBIT high bit of a word byte or nibble BITO bit 0 of a word byte or nibble BIT1 it 1 of a word byte or nibble BIT2 it 2 of a word byte or nibble BIT3 it 3 of a word byte or nibble BIT4 it 4 of a word or byte it 5 of a word or byte it 6 of aword or byte it 7 of aword or byte bit 8 of a word bit 9 of a word bit 10 of a word bit 11 of a word bit 12 of a word bit13 of a word bit14 of a word bit15 of a word Page 222 BASIC Stamp Programming Manual 1
255. you used the constant cheers wherever your program needed the number of cheers your upgrade would be complete You can take this idea a step further by defining constants with expres sions groups of math and or logic operations that the Stamp host software solves evaluates at compile time the time right after you press ALT R and before the BS2 starts running your program For ex ample suppose the Cheers program also controls a pump to fill glasses with champagne The number of glasses to fill is always twice the number of cheers minus 1 Another constant cheers con 5 of cheers glasses con cheers 2 1 of glasses As you can see one constant can be defined in terms of another That is the number glasses depends on the number cheers The expressions used to define constants must be kept fairly simple The Stamp host software solves them from left to right and doesn t allow you to use parentheses to change the order of evaluation Only nine operators are legal in constant expressions as shown in Table M 4 This may seem odd since the BS2 s runtime math operations can be made quite complex with bushels of parentheses and fancy operators but it s the way things are Seriously it might not make sense to allow really wild math in constant expressions since it would probably ob scure rather than clarify the purpose of the constants being defined Table M 4 Operators Allowed in Constant Expressions lo
Download Pdf Manuals
Related Search
Related Contents
HASBRO Star Wars Anakins Jedi Starfighter 32164 User's Manual HD7811 Vantec UGT-PC370A ICT-7A Genie RL4 Bid Specifications MANUAL TÉCNICO PARA DISEARCH 1/3” ccd sony super high resolution color day & night réparation de balcons extérieurs pour la ville de châteauguay Samsung E958 User Manual Copyright © All rights reserved.
Failed to retrieve file