Shop OBEX P1 Docs P2 Docs Learn Events
New Guy, some simple questions... — Parallax Forums

New Guy, some simple questions...

ArchiverArchiver Posts: 46,084
edited 2000-07-17 17:20 in General Discussion
On 16 Jul 00 at 15:11, Nic Nicholson wrote:

> ...Is there any way to step through the input pins using a control
> loop? That is, something like the following:
>
> FOR index = 0 to pincount
> IF IN(index)=1 THEN dosomething
> NEXT

Nic-

Many moons ago the good Dr. Allen made the point that everything in
the variable space can be treated as an implicit array. In other
words, a single variable declaration is always element (0) of an
array of like-sized elements. An example:

byte_var VAR BYTE
bit_var VAR byte_var.LOWBIT

byte_var is the element 0 of an array of bytes stretching out into
the variable space beyond byte_var's storage location. Similarly,
bit_var, the low order bit of byte_var, even though not declared as
an array, can be treated as the 0th element of an array of bits
beginning at the low order bit of byte_var. bit_var(1) through
bit_var(7) can be used to address the remaining (ascending) bits of
byte_var.

Now put this trick together with the INS variable, which can be
treated like everything else in the variable space:

io_pin VAR INS.LOWBYE.LOWBIT

FOR index = 0 TO 15
IF io_pin(index) = 1 THEN dosomething
NEXT


Steve

Comments

  • ArchiverArchiver Posts: 46,084
    edited 2000-07-16 23:11
    Just recently got my first microcontroller, the BS2, and am having a great
    time with it...I'm building up some basic skills on the way to my first
    robot.

    Within the first couple of days I've controlled an R/C servo (not hard, of
    course) and ran a motor with an LM18200T.

    Questions:

    The motor ran rather roughly (lots of vibration) when I used PULSOUT and
    PAUSE to set the duty cycle to the controller chip, but ran smoothly with
    PWM, even with an 8 ms pause in between the 1-cycle PWMs. Was wondering if
    anyone would know why...

    Is there any way to step through the input pins using a control loop? That
    is, something like the following:

    FOR index = 0 to pincount
    IF IN(index)=1 THEN dosomething
    NEXT

    or does it have to be

    IF IN0=1 THEN dosomething
    IF IN1=1...

    spelling out each pin, one at a time.

    Thanks in advance!


    Nic
  • ArchiverArchiver Posts: 46,084
    edited 2000-07-17 17:20
    >Is there any way to step through the input pins using a control loop?
    That
    >is, something like the following:
    >
    >FOR index = 0 to pincount
    > IF IN(index)=1 THEN dosomething
    >NEXT
    >
    >>or does it have to be
    >>IF IN0=1 THEN dosomething
    >IF IN1=1...

    Hi Nic,
    It is almost as simple as your example. Try,

    FOR index = 0 to pincount
    IF IN0(index)=1 THEN dosomething
    NEXT

    The variable IN0 is a bit-size variable that refers to pin P0. The plain
    variable IN0 and the array variable IN0(0) are the same thing. The
    indexing counts up from there. IN0(1) is the same as IN1. And so on.

    Read about modifiers and arrays in the stamp II v1.9 manual on page 223.

    -- Tracy Allen
    Electronically Monitored Ecosystems
    http://www.emesystems.com
Sign In or Register to comment.