Reassigning I/O within the program ?


Closed Thread
Results 1 to 18 of 18

Hybrid View

  1. #1
    Join Date
    Nov 2007
    Posts
    24


    Did you find this post helpful? Yes | No

    Default

    Yes, there are many ways to achieve this within the loop of the main program. I was trying avoid having to make pin decisions every time I wanted to collect data. I just want to reassign the pins at the beginning of the program, and never worry about it again (i.e. less code).

    Having thought about this for awhile now, I think the easiest way is to just make a subroutine for each data input (e.g. Get_Data) that makes the I/O pin decision each time I need the data. It still gobbles up a bunch of code, but is still relatively easy to follow the logic.

  2. #2
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Del Tapparo View Post
    Yes, there are many ways to achieve this within the loop of the main program. I was trying avoid having to make pin decisions every time I wanted to collect data. I just want to reassign the pins at the beginning of the program, and never worry about it again (i.e. less code).
    I don't see a difference there.

    If you set the PIN variable at the top of the program instead of in the main loop, it's the same thing.

    Best regards,
    DT

  3. #3
    Join Date
    Nov 2007
    Posts
    24


    Did you find this post helpful? Yes | No

    Thumbs up

    I get it now ....

    In my case, all of the reassigned inputs use the PULSIN command. I simply assign a variable to the pin portion of the PULSIN command, separate from the resulting input data variable.

    Thanks Darrel! Much appreciated.

  4. #4
    Join Date
    Sep 2007
    Location
    USA, CA
    Posts
    271


    Did you find this post helpful? Yes | No

    Default

    I don't like needing to check the compiler files for information, because changing PICs can be a hassle, especially when you forget about it.

    When I did it (years ago) I had to do something like this...
    myPIN = 2 ...set this in your IF statements
    low portb.0[myPIN] ...allows you to use any port you like, and changing PICs is easy.

  5. #5
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    >myPIN = 2 ...set this in your IF statements
    >low portb.0[myPIN]


    That would READ PORTB.2, and set either PORTB.0 or PORTB.1 low depending on the state of RB2(0 or 1).

    portb.0[myPIN] = 1 ; lets you control any pin, assuming TRIS has been set

    But it can't be used in SERIN/OUT, PULSIN/OUT, RCTIME, HIGH/LOW, etc., like the PIN numbers can.
    DT

  6. #6
    Join Date
    Sep 2007
    Location
    USA, CA
    Posts
    271


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    >myPIN = 2 ...set this in your IF statements
    >low portb.0[myPIN]


    That would READ PORTB.2, ....
    How in the world wout that READ a pin?

  7. #7
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by tenaja View Post
    How in the world wout that READ a pin?
    With most PBP statements, you only have 3 options for the PIN's.
    It's usually described like this in the manual ...
    Pin may be a constant, 0-15, or a variable that contains a number 0-15 (e.g. B0) or a pin name (e.g. PORTA.0).
    But portb.0[myPIN] is an Array operation.
    The only one of the 3 options that fits an array result is "or a variable that contains a number 0-15".

    In order to know which PIN to use, it has to READ the variable, or in this case do the array operation (reading a PIN).
    Since it's a BIT array, it will only see a 1 or a 0.

    hth,
    DT

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts