This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

reading and skipping from port

Hi All,,

I am trying to write a simple program that do the following.

it increments a 3-bit binary number after a delay. It looks like following.

do{

if (bin_num++ > 0x7) bin_num=0;
deley();

}while(1)

Now what i want to do is that , read Port 1, and if any bit is Zero (for example if P1^3 is zero) then leave skip the number 3 in incrementing bin_num. So the bin_num will count as 0, 1, 2, 4, ..

Any quick idea how to best do this ??

Any help would be great.

Thankzz && Bye
-Rocknmoon

Parents
  • "(bin_num++ > 0x7);"

    Danger !!

    The "C" standard specifies that these operators (++ and >) can be handled in ANY sequence. Thus Keil is free to change it between releases or Optimization levels. Also, you have no knowledge whether "comin in" with 7 or 8 is required for a true result.

    Erik


Reply
  • "(bin_num++ > 0x7);"

    Danger !!

    The "C" standard specifies that these operators (++ and >) can be handled in ANY sequence. Thus Keil is free to change it between releases or Optimization levels. Also, you have no knowledge whether "comin in" with 7 or 8 is required for a true result.

    Erik


Children
  • Here is what the standard says:

    The result of the postfix ++ operator is the value of the operand. After the result is obtained, the value of the operand is incremented.

    So it behaves as expected. You can run into trouble if the incremented variable is used in the expression twice. This is not the case here.
    Regards,
    Mike