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
Thanks, but I didn't find it using the keyword sbit. "The sbit, sfr, and sfr16 data types allow you to access the special function registers that are available on the 8051. For example, the declaration: sfr P0 = 0x80; /* Define 8051 P0 SFR */" ok... but how do i address only one Bit like P0.0 = 1; or: P0_0 = 1;?
http://www.keil.com/support/man/docs/c51/c51_le_sbittype.htm Jon
sfr P0 = 0x80; sbit P0_0 = P0^0;
"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;
Andrew and the others: I finally got it. Thanks from DE!