PDA

View Full Version : Read state of specific bit (i.ex. of a PORT)



flotulopex
- 31st October 2020, 10:59
Hi There,

I'm "reading" a 3x4 keypad matrix and want to show the user he is currently pressing a button.

So I light up a LED while any key is pressed and shut if OFF when the key is released and it works fine.

I'm using this piece of code as a debouncer (that keypad must have yo-yo contacts! :D):

WHILE PORTB.4 = 0 : WEND
WHILE PORTB.5 = 0 : WEND
WHILE PORTB.6 = 0 : WEND
WHILE PORTB.7 = 0 : WEND

Is there a way to make this a little bit better?

I mean, can I read the four ports B and evaluate them at once instead of four lines of code?

I tried several things like
WHILE PORTB & %11110000 = 0 : WEND but I can't get it working :frown:

Any idea how to do this please?

richard
- 31st October 2020, 12:42
if key active high

WHILE PORTB >15 : WEND

or

WHILE (PORTB&$f0) : WEND


or if active low

WHILE (PORTB < 240) : WEND

flotulopex
- 31st October 2020, 19:48
Thanks Richard :wink:

Nevertheless, I still don't get it.

Is this statment (version 2013-03-06) really correct?

richard
- 31st October 2020, 21:27
yes absolutely
result equals the low nibble of portb as read, the high nibble is masked off