From: Tim W. <Tim...@na...> - 2001-08-27 07:02:15
|
In yet another "extension" to the C programming language a few embedded compilers make use of 0b1001001 for allowing the entry of binary constants. It is nice to be able to enter binary values directly into the code as i have on a number of occassions made a mistake translating between the bit field boxes displayed in the data sheet and the hexidecimal 0x?? typed into the code.... frustrating... Another option we have employed is the perl script pre-pre-processor to translate the 0x????? to 0x??? but it is messy... tim > You just have to write the hex equivalents like this: > SCON=0x52; > TMOD=0x22; etc. > > -Royce. > ----- Original Message ----- > From: Gregory L Montgomery > To: sdc...@li... > Sent: Monday, August 27, 2001 7:13 AM > Subject: [Sdcc-user] How do I assign a value written in binary > > > Hi > How do I assign a number to a variable written in binary > using SDCC? > > > Suppose I would like to write the following.. > > SCON = 01010010b; // Mode 1. > TMOD = 00100010b; // Timer 1, mode 2, 8-bit reload. > PCON = 00000000b; // glm - don't double baud rate!... > > Using 'b' after the binary number does not work....is there a > way to do this > in > SDCC? |
From: Bernhard H. <Ber...@be...> - 2001-08-27 19:12:50
|
> Suppose I would like to write the following.. > > SCON = 01010010b; // Mode 1. > TMOD = 00100010b; // Timer 1, mode 2, 8-bit reload. > PCON = 00000000b; // glm - don't double baud rate!... > > Using 'b' after the binary number does not work....is there a way to do this in > SDCC? Before I started to use SDCC I had something like this in my headers: #define BIN(x) \ ( ((0x##x##L & 0x00000001L) ? 0x01 : 0) \ | ((0x##x##L & 0x00000010L) ? 0x02 : 0) \ | ((0x##x##L & 0x00000100L) ? 0x04 : 0) \ | ((0x##x##L & 0x00001000L) ? 0x08 : 0) \ | ((0x##x##L & 0x00010000L) ? 0x10 : 0) \ | ((0x##x##L & 0x00100000L) ? 0x20 : 0) \ | ((0x##x##L & 0x01000000L) ? 0x40 : 0) \ | ((0x##x##L & 0x10000000L) ? 0x80 : 0)) T2CON = BIN(00110100); The disadvantage: SDCC throws a lot of warnings, and the code is not (yet) optimal. Bernhard |