Checking Bit of a Byte using another variable

 THE BOOK of DT's INTERRUPTS is an organization of interrupt service routines and other works written by Darrel Taylor, RIP. Interrupt routines are arranged per Darrel's original list. Darrel Taylor's Instant Interrupts are an extension of the work of Tim Box whom in October of 2002 wrote INT_CTRL.pbp Many of the forum members felt this is a long overdue project. THE BOOK of DT's INTERRUPTS will be a valuable resource and a tribute to Darrel Taylor the "Fanatical Contributor". THE BOOK of DT's INTERRUPTS is located at http://dt.picbasic.co.uk/

# Thread: Checking Bit of a Byte using another variable

1. ## Checking Bit of a Byte using another variable

If I have two byte variables Check and Days.
If Days only range from 1 to 7, can we check bits in Check based on Days?

For example, lets say if Days=5, I am having trouble with the following method:

Code:
`if Check[Days]=1 then goto whatever`
In the above example I want to check bit 5 of Check variable.

Is there any other method to do the above task?

2. Did you find this post helpful? |
Is there any other method to do the above task?
Yes:

if Check.0[Days]=1 then goto whatever

Cheers

Al.

3. Did you find this post helpful? |
Originally Posted by aratti

if Check.0[Days]=1 then goto whatever

Al.
Thanks Al, can you please explain what does "0" in Check.0 does?

4. Did you find this post helpful? |
Check.0[Days] tells PBP to treat Check as a bit array with Days as the bit index pointer.

Since Check is a byte PBP will treat it as an 8-bit array. The lowest bit will be 0, and the
highest bit will be 7.

If Days = 5; then IF Check.0[Days]=1 will be testing bit position 6 in Check if you're
counting bit positions in Check from left-to-right as 87654321.

Then you would use; IF Check.0[Days-1]=1 THEN.

If you're counting bit positions in Check from left-to-right as 76543210 then it would work
with; IF Check.0[Days]=1 THEN.
Last edited by Bruce; - 10th December 2010 at 23:13. Reason: Better explanaition

5. Did you find this post helpful? |

## little confused

Originally Posted by Bruce
Check.0[Days] tells PBP to treat Check as a bit array with Days as the bit index pointer.

Since Check is a byte PBP will treat it as an 8-bit array. The lowest bit will be 0, and the
highest bit will be 7.

If Days = 5; then IF Check.0[Days]=1 will be testing bit position 6 in Check if you're
counting bit positions in Check from left-to-right as 87654321.

Then you would use; IF Check.0[Days-1]=1 THEN.

If you're counting bit positions in Check from left-to-right as 76543210 then it would work
with; IF Check.0[Days]=1 THEN.
Thanks for the explanation, few clarifications:
1) Do bits get counted from right to left OR left to right?
I mean to say isn't that Check.0[Days]=1 should check bit 4? (Assuming Days=5)
2) What can I do if Check is a word and I want to check:
a) Bit 15 & Bit 3 (Just want to know)
b) Lower byte value & higher byte value

6. Did you find this post helpful? |

7. Did you find this post helpful? |
Thanks Bruce, the topics have really been helpful.
After reading them, I still have one question (Just want to confirm)

Please correct me if I am wrong :

Check=[bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0]

To access bit7 of Check variable (byte) : Should it be
Check.0[days] ; Days =7 in this example

Similarly :

To access bit1 of Check variable (byte) : Should it be
Check.0[days] ; Days =1 in this example

8. Did you find this post helpful? |
Yep that will work.

#### Posting Permissions

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