How do I check (or set) a group of consecutive bits within a byte?


Closed Thread
Results 1 to 14 of 14

Hybrid View

  1. #1
    Join Date
    Jan 2012
    Location
    Grid EN19MV
    Posts
    159


    Did you find this post helpful? Yes | No

    Default Re: How do I check (or set) a group of consecutive bits within a byte?

    Quote Originally Posted by Charlie View Post
    Sounds like the perfect use for logical AND. You would basically "AND" with 00011100 and it would leave any bit with zeros alone. Unfortunately "AND" does not seem to exist in my version of PBP, other than as a comparitor in an IF THEN statement?
    Huh??? This is pretty basic functionality ... not sure why it's not there?
    Check page 78 of the PBP3 manual - it talks about 'BITWISE AND' (expressed as '&') which is what I think you are looking for.

    I haven't been brave (or dumb?) enough to use it yet, but it seems to be there.

    Unless you're not using version 3, in which case, please excuse the interruption.

    Andy

  2. #2
    Join Date
    Dec 2010
    Posts
    409


    Did you find this post helpful? Yes | No

    Default Re: How do I check (or set) a group of consecutive bits within a byte?

    Quote Originally Posted by andywpg View Post
    Check page 78 of the PBP3 manual - it talks about 'BITWISE AND' (expressed as '&') which is what I think you are looking for.

    I haven't been brave (or dumb?) enough to use it yet, but it seems to be there.

    Unless you're not using version 3, in which case, please excuse the interruption.

    Andy
    I'm using 2.6 and it's not in my manual.

  3. #3
    Join Date
    Dec 2010
    Posts
    409


    Did you find this post helpful? Yes | No

    Default Re: How do I check (or set) a group of consecutive bits within a byte?

    Mark_S wrote:
    Look in your manual under "Logical operators" AND exist. Also you can use &&

    When used as " IF(A and B ) <>= C then take Action" Is a true or false statement.

    Myvariable = %11111111 AND %0000000, this will AND the two variables into myvariable

    My 2.6 manual says the result of this test is true or false. No mention of ANDing variables into another variable. Perhaps you've hit on the first real reason to move to 3.0...

  4. #4
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,170


    Did you find this post helpful? Yes | No

    Default Re: How do I check (or set) a group of consecutive bits within a byte?

    Bitwise and Logical are two different things. All versions do support them.

    You will use Logical AND or &&, OR or ||, XOR or ^^, ANDNOT, ORNOT, XORNOT in TRUE/FALSE case. If value is 0 then it is treated as FALSE. Any other value is treated as TRU. So, in IF-THEN statement you can check if the values are or are not zero.

    Example:

    A=2:B=0

    IF A AND B THEN C=1

    C will be set to 1 if both A and B variables are not zero.

    But Bitwise Operators act on each and every bit of the variable using boolean maths.

    If you want to isolate bits a variables you want to use the & operand.

    If you want to set a bit then | is your operand to use.

    Example (from the Book):

    B0=B0 & %00000001 'Isolate bit 0 of B0

    B0=B0 | %00000001 'Set bit 0 of B0

    B0=B0 ^ %00000001 'Reverse state of bit 0 of B0

    So Hank, you want to use & in your case.

    ADCON0 = ADCON & %00011101

    Ioannis

  5. #5
    Join Date
    Dec 2010
    Posts
    409


    Did you find this post helpful? Yes | No

    Default Re: How do I check (or set) a group of consecutive bits within a byte?

    Can you tell me which "Book" this example is from? I'm happy to be corrected - this is exactly what I was looking for - but It's certainly not in my 2.6 Manual.

  6. #6
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,170


    Did you find this post helpful? Yes | No

    Default Re: How do I check (or set) a group of consecutive bits within a byte?

    From 2.4 page 36
    From 2.6 page 42

    or

    From 3.0 pages 70 an 78

    Ioannis

  7. #7
    Join Date
    Dec 2010
    Posts
    409


    Did you find this post helpful? Yes | No

    Default Re: How do I check (or set) a group of consecutive bits within a byte?

    You're absolutely right!

    If it's any help to anyone else, when I searched for logical AND, the first instance that came up is on page 43. The proper names for the boolean operations (AND, OR, XOR) are not used on P42.

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