245 lines
15 KiB
HTML
245 lines
15 KiB
HTML
<?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>POLLIN</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">POLLIN</h1>
|
|
<div class="ImagePlusCaption">
|
|
<div class="Col2">
|
|
<p>
|
|
<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/PollinOutEx.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">POLLIN / POLLOUT / POLLMODE Example</a>
|
|
</p>
|
|
<p> </p>
|
|
</div>
|
|
<p class="clear"> </p>
|
|
<p> </p>
|
|
<p class="PlainText">Syntax: <span class="keyword_in_text">POLLIN</span> <![CDATA[ ]]><i>Pin, State</i></p>
|
|
<h2>Function</h2>
|
|
<p class="PlainText">Specify a polled-input pin and active state.
|
|
|
|
</p>
|
|
<ul>
|
|
<li value="1"><b><i>Pin</i></b> is a variable/constant/expression (0 - 15) that specifies
|
|
the I/O pin to use. This I/O pin will be set to input mode.</li>
|
|
<li value="2"><b><i>State</i></b> is a variable/constant/expression (0 - 1) that specifies
|
|
whether to poll the I/O pin for a low (0) or a high (1) level.</li>
|
|
</ul>
|
|
<h2>Quick Facts</h2>
|
|
<table cellpadding="4" cellspacing="0" border="1">
|
|
<tr bgcolor="#CFCFCF">
|
|
<td width="150" align="center"> </td>
|
|
<td width="1000" align="center">BS2p, BS2pe, and BS2px</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" bgcolor="#CFCFCF">Available actions in response to reaching
|
|
the desired <i>State</i></td>
|
|
<td align="left">
|
|
<ol>
|
|
<li value="1">Nothing,</li>
|
|
<li value="2">Set polled-output pins to a specified state,</li>
|
|
<li value="3">Run another program (in a specified program-slot),</li>
|
|
<li value="4">Wait (pause program execution) until desired State is reached,</li>
|
|
<li value="5">Any combination of 2, 3 and 4, above.</li>
|
|
</ol>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" bgcolor="#CFCFCF">Special Notes</td>
|
|
<td align="left">
|
|
<ul>
|
|
<li value="1">The polled-input pins are monitored (polled) in-between each command
|
|
within the PBASIC code.</li>
|
|
<li value="2">On the BS2p40 polled-input pins can be defined on both main and
|
|
auxiliary I/O pins. These are all active regardless of which group
|
|
the program happens to be using at the time of a polling event.</li>
|
|
<li value="3">Polled input pins are stored in special Scratchpad RAM locations. Use
|
|
<a href="GET.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">GET</a> to retrieve.<br /><ul type="square"><li value="1">Location 128 : MAINIO Pins 0 - 7</li><li value="2">Location 129 : MAINIO Pins 8 - 15</li><li value="3">Location 130 : AUXIO Pins 0 - 7</li><li value="4">Location 131 : AUXIO Pins 8 - 15</li></ul></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center" bgcolor="#CFCFCF">Related Commands</td>
|
|
<td align="center" colspan="1">
|
|
<p colspan="1" align="center"><a href="POLLMODE.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">POLLMODE</a>, <a href="POLLOUT.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">POLLOUT</a>, <a href="POLLRUN.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">POLLRUN</a>, <a href="POLLWAIT.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">POLLWAIT</a></p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<h2>Explanation</h2>
|
|
<p class="PlainText">The <span class="keyword_in_text">POLLIN</span> command is one of a family of unique "polling" commands on the
|
|
BS2p, BS2pe, and BS2px modules. The other commands in this family include <span class="keyword_in_text">POLLMODE</span>,
|
|
<span class="keyword_in_text">POLLOUT</span>, <span class="keyword_in_text">POLLRUN</span> and <span class="keyword_in_text">POLLWAIT</span>. The <span class="keyword_in_text">POLLIN</span> command
|
|
is used to specify an input pin to monitor, or "poll", in-between instructions
|
|
during the rest of the PBASIC program. The BASIC Stamp will then perform some
|
|
activity (in between instructions) when the specified State is detected. The
|
|
activity performed depends on the <span class="keyword_in_text">POLLMODE</span>, <span class="keyword_in_text">POLLOUT</span> and <span class="keyword_in_text">POLLRUN</span>commands.</p>
|
|
<p class="PlainText">The "polling" commands allow the BASIC Stamp to respond to certain I/O pin
|
|
events at a faster rate than what is normally possible through manual PBASIC
|
|
programming. The term "poll" comes from the fact that the BASIC Stamp's interpreter
|
|
periodically checks the state of the designated polled-input pins. It "polls"
|
|
these pins after the end of each PBASIC instruction and before it reads the next
|
|
PBASIC instruction from the user program; giving the appearance that it is polling
|
|
"in the background". </p>
|
|
<p class="PlainText">This feature should not be confused with the concept of interrupts, as
|
|
<i><b>the BASIC Stamp does not support true interrupts.</b></i></p>
|
|
<p class="PlainText">The following is an example of the <span class="keyword_in_text">POLLIN</span> command:</p><pre class="BScode" xml:space="preserve">
|
|
POLLIN 0, 0
|
|
POLLMODE 2
|
|
</pre>
|
|
<p class="PlainText">The <span class="keyword_in_text">POLLIN</span> command in the above code will cause the BASIC Stamp to set
|
|
I/O pin 0 to an input mode and get ready to poll it for a low (0) state. The
|
|
BASIC Stamp will not actually start polling until it is set to the appropriate
|
|
mode, however. The second line, <span class="keyword_in_text">POLLMODE</span>, initiates the polling process
|
|
(see the <a href="POLLMODE.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">POLLMODE</a> description for more information).
|
|
From then on, as the BASIC Stamp executes the rest of the program, it will check
|
|
for a low level (logic 0) on I/O pin 0, in-between instructions. </p>
|
|
<p class="PlainText">In the code above, no obvious action will be noticed since we didn't tell the
|
|
BASIC Stamp what to do when it detects a change on the I/O pin. One possible
|
|
action the BASIC Stamp can be instructed to take is to change the state of an
|
|
output, called a polled-output. Take a look at the next example:</p><pre class="BScode" xml:space="preserve">
|
|
Setup:
|
|
POLLIN 0, 0
|
|
POLLOUT 1, 1
|
|
POLLMODE 2
|
|
|
|
Main
|
|
DEBUG "Looping...", CR
|
|
GOTO Main
|
|
</pre>
|
|
<p class="PlainText">In this example, in addition to an endless loop, we've added another polling
|
|
command called <span class="keyword_in_text">POLLOUT</span> (see the <a href="POLLOUT.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">POLLOUT</a> description
|
|
for more information). Our <span class="keyword_in_text">POLLOUT</span> command tells the BASIC Stamp to set
|
|
I/O pin 1 to an output mode and set it high (1) when it detects the desired poll
|
|
state. The poll state is the low (0) level on I/O pin 0 that <span class="keyword_in_text">POLLIN</span> told
|
|
it to look for. If the polled-input pin is high, it will set polled-output
|
|
pin 1 to low (0), instead.</p>
|
|
<p class="PlainText">Once the program reaches the endless loop, starting at Main, it will continuously
|
|
print "Looping..." on the PC screen. In between reading the <span class="keyword_in_text">DEBUG</span> command
|
|
and the <span class="keyword_in_text">GOTO</span> command (and vice versa) it will check polled-input pin 0 and
|
|
set polled-output pin 1 accordingly. In this case, when I/O pin 0 is set low,
|
|
the BASIC Stamp will set I/O pin 1 high. When I/O pin 0 is set high, the BASIC
|
|
Stamp will set I/O pin 1 low. It will continue to perform this operation,
|
|
in-between each command in the loop, endlessly.</p>
|
|
<p>It's important to note that, in this example, only the <span class="keyword_in_text">DEBUG</span> and <span class="keyword_in_text">GOTO</span>commands are being executed over and over again. The first three lines of code
|
|
are only run once, yet their effects are "remembered" by the BASIC Stamp throughout
|
|
the rest of the program.</p>
|
|
<p>If the polling commands were not used, the program would have to look like the
|
|
one below in order to achieve the same effect.</p><pre class="BScode" xml:space="preserve">
|
|
Setup:
|
|
INPUT 0
|
|
OUTPUT 1
|
|
|
|
Main:
|
|
OUT1 = ~IN0
|
|
DEBUG "Looping...", CR
|
|
OUT1 = ~IN0
|
|
GOTO Main
|
|
</pre>
|
|
<p class="PlainText">In this example, we create the inverse relationship of input pin 0 and output
|
|
pin 1 manually, in-between the <span class="keyword_in_text">DEBUG</span> and <span class="keyword_in_text">GOTO</span> lines. Though the
|
|
effects are the same as when using the polling commands, this program actually
|
|
takes a little longer to run and consumes 7 additional bytes of program (EEPROM)
|
|
space. Clearly, using the polling commands is more efficient.</p>
|
|
<p class="PlainText">You can have as many polled-input and polled-output pins as you have available.
|
|
If multiple polled-input pins are defined, any one of them can trigger changes on
|
|
the polled-output pins that are also defined. For example:</p><pre class="BScode" xml:space="preserve">
|
|
Setup:
|
|
POLLIN 0, 1
|
|
POLLIN 1, 1
|
|
POLLOUT 2, 1
|
|
POLLMODE 2
|
|
|
|
Main:
|
|
DEBUG "Looping...", CR
|
|
GOTO Main
|
|
</pre>
|
|
<p class="PlainText">This code sets I/O pins 0 and 1 to polled-input pins (looking for a high (1)
|
|
state) and sets I/O pin 2 to be a polled-output pin (with a high-active state).
|
|
If either I/O pin 0 or 1 goes high, the BASIC Stamp will set I/O pin 2 high.
|
|
This works similar to a logical OR operation. The truth table below shows all the
|
|
possible states of these two polled-input pins and the corresponding states the
|
|
BASIC Stamp will set the polled-output pin to.</p>
|
|
<center>
|
|
<table width="200" cellpadding="4" cellspacing="0" border="1">
|
|
<tr bgcolor="#CFCFCF">
|
|
<td colspan="2" align="center">Polled-Inputs</td>
|
|
<td colspan="1" align="center">Polled-Output</td>
|
|
</tr>
|
|
<tr bgcolor="#CFCFCF">
|
|
<td width="50" align="center">0</td>
|
|
<td width="50" align="center">1</td>
|
|
<td width="100" align="center">2</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center">0</td>
|
|
<td align="center">0</td>
|
|
<td align="center">0</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center">0</td>
|
|
<td align="center">1</td>
|
|
<td align="center">1</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center">1</td>
|
|
<td align="center">0</td>
|
|
<td align="center">1</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center">1</td>
|
|
<td align="center">1</td>
|
|
<td align="center">1</td>
|
|
</tr>
|
|
</table>
|
|
</center>
|
|
<p> </p>
|
|
<p class="PlainText">Normally, any polled-output pins reflect the state changes continuously, as
|
|
described above. The <span class="keyword_in_text">POLLMODE</span> command supports another feature, however,
|
|
where the polled-output pins will latch the active state; they will change only
|
|
once (when the poll state is reached) and stay in the new state until the PBASIC
|
|
program tells it to change again. See the
|
|
<a href="POLLMODE.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">POLLMODE</a> description for more information.</p>
|
|
<p class="PlainText">Other possible actions in response to polled-input states are: 1) Running
|
|
another program (in a specified program slot), 2) Waiting (pausing program
|
|
execution with or without low-power mode) until the poll state is reached, or 3)
|
|
Any combination of the above-mentioned actions</p>
|
|
<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> |