Цитата(nagserg @ Dec 26 2005, 12:49)

Каким образом привязать адрес этой структуры к "Определенному адресу" char* vp = (char *)Определенный Адрес;
Считаю, что лучше не привязывать эту структуру к определенному адресу, т.к. при обращении к каждому биту будет произведено повторное чтение.. Если у Вас используется DMA то это приведет к неправильной работе.. Думаю, правильней будет вначале прочитать, а потом уже проверять/устанавливать отдельные биты:
Код
typedef 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_field;
} dummy_union;
void test(void)
{
char* vp = (char *)0x300; // адрес 300h
dummy_union a; // ваша структура
a.byte = *vp; // считываем данные с адреса 300h
if (a.bit_field.b0) {}; // проверяем отдельные биты..
/*.....................................*/
/*.. выполняем какие-то действия над битами ..*/
/*.....................................*/
*vp = a.byte; // записываем изменения..
}
Сообщение отредактировал defunct - Dec 27 2005, 00:33