<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" MadCap:lastBlockDepth="6" MadCap:lastHeight="94" MadCap:lastWidth="853" MadCap:disableMasterStylesheet="true" MadCap:tocPath="" MadCap:InPreviewMode="false" MadCap:PreloadImages="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" lang="en-us" xml:lang="en-us" MadCap:PathToHelpSystem="../../../" MadCap:HelpSystemFileName="Default.xml" MadCap:SearchType="Stem"> <head><title>TOGGLE</title> <link href="../../SkinSupport/MadCap.css" rel="stylesheet" /> <link href="../../Resources/Stylesheets/BSE_Help.css" rel="stylesheet" /> <script src="../../SkinSupport/MadCapAll.js" type="text/javascript"> </script> </head> <body> <h1 class="code">TOGGLE</h1> <div class="ImagePlusCaption"> <div class="Col2"> <p> <img src="../../graphics/pgm_icon1.gif" border="0" alt="BS1 icon" title="BS1 icon" /> <img src="../../graphics/pgm_icon2.gif" border="0" alt="BS2 icon" title="BS2 icon" /> <img src="../../graphics/pgm_icon2e.gif" border="0" alt="BS2e icon" title="BS2e icon" /> <img src="../../graphics/pgm_icon2sx.gif" border="0" alt="BS2sx icon" title="BS2sx icon" /> <img src="../../graphics/pgm_icon2p.gif" border="0" alt="BS2p icon" title="BS2p icon" /> <img src="../../graphics/pgm_icon2pe.gif" border="0" alt="BS2pe icon" title="BS2pe icon" /> <img src="../../graphics/pgm_icon2px.gif" border="0" alt="BS2px icon" title="BS2px icon" /> </p> </div> <p style="text-align: right;"><a href="../ExampleTopics/ToggleEx.htm" target="" title="" alt="" class="MCXref_0">TOGGLE Examples</a> </p> <p> </p> </div> <p class="clear"> </p> <p> </p> <p class="PlainText">Syntax: <span class="keyword_in_text">TOGGLE</span> <![CDATA[ ]]><i>Pin</i></p> <h2>Function</h2> <p class="PlainText">Invert the state of an output pin. </p> <ul> <li value="1"><b><i>Pin</i></b> is a variable/constant/expression* (0 – 15) that specifies which I/O pin to set high. This pin will be placed into output mode.</li> </ul> <p class="PlainText">*<img src="../../graphics/bs1note.gif" style="vertical-align: super;" /> Note: expressions are not allowed as arguments on the BS1. The range of the <i>Pin</i> argument on the BS1 is 0–7.</p> <h2>Quick Facts</h2> <table cellpadding="4" cellspacing="0" border="1" style="caption-side: top;width: 100%;"> <col /> <col /> <tr bgcolor="#CFCFCF"> <td width="20%" align="center"> </td> <td width="40%" align="center">BS1</td> <td width="40%" align="center">All BS2 models</td> </tr> <tr> <td width="20%" align="center" bgcolor="#CFCFCF">Affected Register</td> <td width="40%" align="center">PINS</td> <td width="40%" align="center">OUTS</td> </tr> <tr> <td align="center" bgcolor="#CFCFCF">Related Commands</td> <td align="center" colspan="2"> <p colspan="2" align="center"><a href="HIGH.htm" target="" title="" alt="" class="MCXref_0">HIGH</a>, <a href="LOW.htm" target="" title="" alt="" class="MCXref_0">LOW</a></p> </td> </tr> </table> <h2>Explanation</h2> <p class="PlainText"><span class="keyword_in_text">TOGGLE</span> sets a pin to output mode and inverts the output state of the pin, changing 0 to 1 and 1 to 0.</p> <p class="PlainText">In some situations <span class="keyword_in_text">TOGGLE</span> 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 10 kΩ resistor. Then the following code executes:</p> <p> <img src="../../graphics/bs1_inline.gif" border="0"> </img> </p><pre class="BScode" xml:space="preserve"> Main: DIR2 = 0 ' pin 2 in input mode PIN2 = 0 ' pin 2 output driver low DEBUG PIN2 ' show state of pin 2 TOGGLE 2 ' toggle pin 2 DEBUG PIN2 ' show state of pin 2 END </pre> <p> <img src="../../graphics/bs2all_inline.gif" border="0"> </img> </p><pre class="BScode" xml:space="preserve"> Main: DIR2 = 0 ' pin 2 in input mode OUT2 = 0 ' pin 2 output driver low DEBUG ? IN2 ' show state of pin 2 TOGGLE 2 ' toggle pin 2 DEBUG ? IN2 ' show state of pin 2 END </pre> <p class="PlainText">The state of pin 2 doesn't change; it's high (due to the pull-up resistor) before <span class="keyword_in_text">TOGGLE</span>, and it's high (due to the pin being output high) afterward. The point is that <span class="keyword_in_text">TOGGLE</span> works on the OUTS register, which may not match the pin's state when the pin is initially an input. To guarantee that the state actually changes, regardless of the initial input or output mode, do this:</p> <p> <img src="../../graphics/bs1_inline.gif" border="0"> </img> </p><pre class="BScode" xml:space="preserve"> PIN2 = PIN2 ' make output driver match pin state TOGGLE 2 ' then toggle </pre> <p> <img valign="bottom" src="../../graphics/bs2all_inline.gif" border="0"> </img> </p><pre class="BScode" xml:space="preserve"> OUT2 = IN2 ' make output driver match pin state TOGGLE 2 ' then toggle </pre> <div class="Col2"> <div class="MasterFoot"> <p MadCap:conditions="BSEconditions.BSEWebHelp (Primary)-INCLUDE"><a href="../../HomeTopics/HomePage.htm">Go to Welcome page</a> </p> </div> </div> <div class="Col2"> <div class="MasterFoot"> <p style="text-align: right;"><span class="ContactInfoProjectName">BASIC Stamp Help</span> <![CDATA[ ]]><span class="ContactInfoVersion#">Version 2.5.4</span> <![CDATA[ ]]></p> <p style="text-align: right;">Copyright © <span class="ContactInfoCompanyName">Parallax Inc.</span></p> <p style="text-align: right;"><span class="SystemShortDate">8/8/2012</span> </p> </div> </div> <script type="text/javascript">/* <![CDATA[ */ var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-285614-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); /* ]]> */</script> <script type="text/javascript" src="../../SkinSupport/MadCapBodyEnd.js"> </script> </body> </html>