struct st_pa { union { unsigned char BYTE; struct { unsigned char B0:1; unsigned char B1:1; unsigned char B2:1; unsigned char B3:1; unsigned char B4:1; unsigned char B5:1; unsigned char B6:1; unsigned char B7:1; } BIT; } PIN; unsigned char DDR; union { unsigned char BYTE; struct { unsigned char B0:1; unsigned char B1:1; unsigned char B2:1; unsigned char B3:1; unsigned char B4:1; unsigned char B5:1; unsigned char B6:1; unsigned char B7:1; } BIT; } PORT; }; struct st_pb { union { unsigned char BYTE; struct { unsigned char B0:1; unsigned char B1:1; unsigned char B2:1; unsigned char B3:1; unsigned char B4:1; unsigned char B5:1; unsigned char B6:1; unsigned char B7:1; } BIT; } PIN; unsigned char DDR; union { unsigned char BYTE; struct { unsigned char B0:1; unsigned char B1:1; unsigned char B2:1; unsigned char B3:1; unsigned char B4:1; unsigned char B5:1; unsigned char B6:1; unsigned char B7:1; } BIT; } PORT; }; struct st_pc { union { unsigned char BYTE; struct { unsigned char B0:1; unsigned char B1:1; unsigned char B2:1; unsigned char B3:1; unsigned char B4:1; unsigned char B5:1; unsigned char B6:1; unsigned char B7:1; } BIT; } PIN; unsigned char DDR; union { unsigned char BYTE; struct { unsigned char B0:1; unsigned char B1:1; unsigned char B2:1; unsigned char B3:1; unsigned char B4:1; unsigned char B5:1; unsigned char B6:1; unsigned char B7:1; } BIT; } PORT; }; struct st_pd { union { unsigned char BYTE; struct { unsigned char B0:1; unsigned char B1:1; unsigned char B2:1; unsigned char B3:1; unsigned char B4:1; unsigned char B5:1; unsigned char B6:1; unsigned char B7:1; } BIT; } PIN; unsigned char DDR; union { unsigned char BYTE; struct { unsigned char B0:1; unsigned char B1:1; unsigned char B2:1; unsigned char B3:1; unsigned char B4:1; unsigned char B5:1; unsigned char B6:1; unsigned char B7:1; } BIT; } PORT; }; struct st_pe { union { unsigned char BYTE; struct { unsigned char B0:1; unsigned char B1:1; unsigned char B2:1; unsigned char :5; } BIT; } PIN; unsigned char DDR; union { unsigned char BYTE; struct { unsigned char B0:1; unsigned char B1:1; unsigned char B2:1; unsigned char :5; } BIT; } PORT; }; #define PA (*(volatile struct st_pa *)0x39) // PA Address #define PB (*(volatile struct st_pb *)0x36) // PB Address #define PC (*(volatile struct st_pc *)0x33) // PC Address #define PD (*(volatile struct st_pd *)0x30) // PD Address #define PE (*(volatile struct st_pe *)0x25) // PE Address