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

Can we absolutely assign bit variable to Ex. 0x2A.5 of internal RAM ?

As we know: "128 bit variables occupy the 16 bytes of Internal RAM from 20h through 2Fh"

I was taught to use bit variables like below:

UINT8 bdata var2A       _at_ 0x2A;
sbit            bvar0= var2A^0;
sbit            bvar1= var2A^1;
sbit            bvar2= var2A^2;
sbit            bvar3= var2A^3;
sbit            bvar4= var2A^4;

But after compile/link the DATA MEMORY is:

...
DATA    002AH     0001H     ABSOLUTE
BIT     002BH.0   0000H.3   UNIT         _BIT_GROUP_
        002BH.3   0000H.5                *** GAP ***
...

Obviously 8-bit space at 0x2Ah is occupied even I declare only 5 bit variables. Thus _BIT_GROUP_(3-bit length) is placed from 0x2B...

My question is:

1. Can I assign other bit variables to 0x2A.5 ~ 0x2A.7 ?
2. Can I assign _BIT_GROUP(3-bit) to 0x2A.5~0x2A.7 ?

Parents
  • One member told me that in Keil C assigning bit variable absolutely at some fixed address(not divisible by 8) is impossible...

    Anyway I found if not using (bdata+sbit) for 0x2A and let KeilC to arrange bit variables then _BIT_GROUP_(3-bit length) can be placed into that un-used space. See below:

    ...
    DATA    0021H     0001H     ABSOLUTE
    DATA    0022H     0001H     ABSOLUTE
    DATA    0023H     0001H     ABSOLUTE
    DATA    0024H     0001H     ABSOLUTE
    DATA    0025H     0001H     ABSOLUTE
    DATA    0026H     0001H     ABSOLUTE
    DATA    0027H     0001H     ABSOLUTE
    DATA    0028H     0001H     ABSOLUTE
    DATA    0029H     0001H     ABSOLUTE
    BIT     002AH.0   0000H.5   UNIT         ?BI?A
    BIT     002AH.5   0000H.3   UNIT         _BIT_GROUP_
    

    Thanks !

Reply
  • One member told me that in Keil C assigning bit variable absolutely at some fixed address(not divisible by 8) is impossible...

    Anyway I found if not using (bdata+sbit) for 0x2A and let KeilC to arrange bit variables then _BIT_GROUP_(3-bit length) can be placed into that un-used space. See below:

    ...
    DATA    0021H     0001H     ABSOLUTE
    DATA    0022H     0001H     ABSOLUTE
    DATA    0023H     0001H     ABSOLUTE
    DATA    0024H     0001H     ABSOLUTE
    DATA    0025H     0001H     ABSOLUTE
    DATA    0026H     0001H     ABSOLUTE
    DATA    0027H     0001H     ABSOLUTE
    DATA    0028H     0001H     ABSOLUTE
    DATA    0029H     0001H     ABSOLUTE
    BIT     002AH.0   0000H.5   UNIT         ?BI?A
    BIT     002AH.5   0000H.3   UNIT         _BIT_GROUP_
    

    Thanks !

Children