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
    Nov 2003
    Location
    Greece
    Posts
    4,172


    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

  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?

    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.

  3. #3
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,172


    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

  4. #4
    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.

  5. #5
    Join Date
    Mar 2009
    Posts
    653


    Did you find this post helpful? Yes | No

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

    Well, hopefully some good has come from my initial problem (which I've now sorted/worked around by other means)...thanks for your input everyone!

  6. #6
    Join Date
    Aug 2005
    Location
    Michigan, USA
    Posts
    224


    Did you find this post helpful? Yes | No

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

    Hank, does PBP allow you to XOR a bit?

    Code:
    adcon0.2 = adcon0.2 XOR 1
    

    That's pretty much how I would do it BoostC ( adcon0.2 ^= 1 ).

    Cheerful regards, Mike

  7. #7
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,172


    Did you find this post helpful? Yes | No

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

    This adcon0.2 = adcon0.2 XOR 1 does a logical XOR.

    You need bitwise XOR:

    adcon0.2 = adcon0.2 ^ 1

    Ioannis

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