View Full Version : Change a variable to the opposite?
Hylan
- 19th June 2012, 21:18
I want to connect a BCD thumbwheel to my board. However, instead of 1001 = 9 which is what the thumbwheel outputs, I need 0110.
I'm not sure why the circuitry is like this but I was wondering if there was a simple command to flip a whole variable or what the best way to do this would be?
Thank you.
HenrikOlsson
- 19th June 2012, 21:37
Untested, but give it a try:
For i = 0 to 3
BCD_Value.0[i] = ~BCD_Value.0[i]
NEXT
/Henrik.
Hylan
- 19th June 2012, 22:35
I came up with:
For I = 0 to 3
if BCD_In.0[I] = 0 then
BCD_In.0[I] = 1
else
BCD_In.0[I] = 0
endif
next I
But yours is much simpler!
Perfect.
Thank you.
Megahertz
- 19th June 2012, 22:41
BCD_Value=BCD_Value ^ $0F
Hylan
- 20th June 2012, 02:36
Megahertz,
If I understand yours correctly, you're raising the value to the power of 15? How did you come up with 15? Is that a function of the 4 bits? So if it is an 8 bit variable what would the value be?
I just want to understand the logic behind it.
Thank you
SteveB
- 20th June 2012, 03:51
That is an "exclusive OR" (XOR) with a byte of 00001111. So when you input 00001001, it will return 00000110.
Here is the truth table on page 79 of the manual.
A B A ^ B
0 0 0
0 1 1
1 0 1
1 1 0
If only A or only B is 1, then result is 1.
The ^ operator is commonly used to invert selected bits:
Acetronics2
- 20th June 2012, 08:52
Hi,
... :rolleyes:
Holy Manual ... $ 3.1.14 ...
Alain
Megahertz
- 20th June 2012, 12:34
That is an "exclusive OR" (XOR) with a byte of 00001111. So when you input 00001001, it will return 00000110.
Here is the truth table on page 79 of the manual.
A B A ^ B
0 0 0
0 1 1
1 0 1
1 1 0
If only A or only B is 1, then result is 1.
The ^ operator is commonly used to invert selected bits:
This would my my answer as well.
Hylan
- 20th June 2012, 16:25
Doh! Since you posted the truth table, you are correct that I did not RTFM. Before my original post I tried to but didn't know where to look. Now I do and since most of the code uses binary I used:
BCD_In = BCD_In ^ %11111111
Thank you for the pointers and help!
falingtrea
- 20th June 2012, 18:48
Is BCD value 9 the only value that needs translation? Could you actually need a BCD to grey code translation?
ardhuru
- 21st June 2012, 07:00
If your variable is always going to be 4 bits, the complement would be got by variable(comp) = 15-variable.
Regards,
Anand
Powered by vBulletin® Version 4.1.7 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.