A "bit" pin which is TRUE can have any nonzero value, not just 1. So
the line
bit_shifted = (bit_in << which_bit);
is incorrect. Instead, you may wish to write something like
if(bit_in)
accum = accum | (1 << which_bit);
to avoid the confusion. (I prefer "|" (bitwise OR) to "+" (addition) in
this case, to emphasize the nature of the operation. But either should
work the same way)
For example, here's the way that the parport bits are read into HAL
pins:
*(port->status_in[b]) = indata & mask;
so if the pin corresponds to the '8' bit in indata, then that HAL pin
will have the value 8 if it is TRUE and 0 if it is false.
Jeff
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Emc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users