The CC-RL does not support bit access (specifying the bit position after a period for an SFR or the saddr variable) of the CA78K0. In the CcnvCA78K0, bit access for SFRs and the saddr variable are replaced with a type declaration of a bit field and a macro.
 
| 
- | The type declaration and macro are output at the beginning of the file and changed to a macro call at an access point. | 
| 
- | In bit access, a bit field of 8 or 16 bits is created according to the bit position. If the bit position includes 8 to 15, a bit field with b8 to b15 added is separately created for 16 bits. | 
 
[Examples]
| 
- | Bit position is only 0 to 7 | 
| 
Before conversion | void func(void) {  i = var.3;   var.5 = 0; } | 
| 
After conversion | #ifndef __BIT8 typedef struct {  unsigned int b0:1;   unsigned int b1:1;   unsigned int b2:1;   unsigned int b3:1;   unsigned int b4:1;   unsigned int b5:1;   unsigned int b6:1;   unsigned int b7:1; } __Bits8; #define __BIT8(name,bit) (((volatile __near __Bits8*)&name)->b##bit) #endif   void func(void) {  i = __BIT8(var,3);   __BIT8(var,5) = 0; } | 
 
| 
- | Bit position includes 8 to 15 | 
| 
Before conversion | i = var2.10; var2.12 = 0; | 
| 
After conversion | #ifndef __BIT16 typedef struct {  unsigned int b0:1;   unsigned int b1:1;   unsigned int b2:1;   unsigned int b3:1;   unsigned int b4:1;   unsigned int b5:1;   unsigned int b6:1;   unsigned int b7:1;   unsigned int b8:1;   unsigned int b9:1;   unsigned int b10:1;   unsigned int b11:1;   unsigned int b12:1;   unsigned int b13:1;   unsigned int b14:1;   unsigned int b15:1; } __Bits16; #define __BIT16(name,bit) (((volatile __near __Bits16*)&name)->b##bit) #endif   void func(void) {  i = __BIT16(var2,10);   __BIT16(var2,12) = 0; } |