union Problem

i am using the following union in a program.
when i changes any of _74HC259 member field(Address,Data,Gate,Clear), variable Value doesn't changes crosspondingly.

union LATCH{
unsigned char Value;
struct {
unsigned Address:3;
unsigned Data :1;
unsigned Gate :1;
unsigned Clear :1;
}_74HC259;
}Latch;

what is basically the problem, does C51 comiler doesn't handle such type of data structure?
Regards

More questions in this forum