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

How to set and retrieve Portbits in uVision C

How can I set and retrieve bitwise in uVision C? Similar to assembler P1.0 addresses Bit0 in Port P0.
I could not find any possiblility to do so unless I take the usual Bitaddressing techniques (masking and shifting)

Please answer to andreas.alef@web.de

Regards,

A. Alef

Parents Reply Children
  • "Not sure if there's a way to access it as P0.0 or not."

    Not in C51.

    Note that it would generally be better to give the bit a more meaningful name than just "P0_0" - make it reflect the function of that bit; eg, door_open or tank_full

  • Note that it would generally be better to give the bit a more meaningful name than just "P0_0" - make it reflect the function of that bit; eg, door_open or tank_full

    Agreed. I was just reflecting the name he chose.

  • Robert, I dont't understand that.

    sbit P0_0 = P0^0;

    With P0 I identify Port 0 as ist ist defined in <reg515c.h>. Ok: I want to set Bit 0. So that is for the name I chose.

    If I want to set Bit0 I can do it in C like
    P0 = 0x01;
    or if I want to let the other 7 Bits as they are:
    P0 = ( P0 | 0x01 );
    in Assembler it would be much easier:
    P0.0 = 1
    I understand your code obviously that I can set and address one bit in P0 with ^ (that is in my opinion exclusive or).

    If I want to set Bit0 of P0, I can take
    P0_0 = 1; or
    P0 = P0 ^ 1; // for the 0th bit
    P0 = P0 ^ 5; // for the 4th bit
    ???

  • As with any other variable in 'C', you have to define the bit variable first; only then you can you use it

    sbit P0_0 = P0^0;
    Defines a bit variable called P0_0, located at bit zero of P0.

    You can now use P0_0 to access bit 0 of port 0:
    If you put P0_0 on the right-hand side of an assignment, you will read its value;
    If you put P0_0 on the left-hand side of an assignment, you will set its value.

    It's all quite simple, really!

  • Andrew and the others: I finally got it. Thanks from DE!