Вопрос : Будет самой лучшей дорогой доработать bitfields

Если я должен доработать некоторые индивидуальные биты в регистре оборудования, то я могу сделать class= " lineNumbers " >
1 >
struct Bitwise
{
	чарс PM: 3;
	чарс DR: 2;
	чарс XEN: 1;
	ИЕНЫ чарса: 1;
	ДЗЭН чарса: 1;
} foo; class= " ясное " >
Thanks
1 >
чарс reg1 = 0x34; значение //some
чарс DR = (0x3 << 2);
UpdateReg (DR);

UpdateReg (чарс val)
{
  reg1 |= DR; 
} class= " ясное " >
The
, то если я хочу изменить бит от 1 до 0, то, его оператора можно сделать если я знаю бит position.
for ex:, то ~ &= reg1 (1 << 3)

But в внизу class= " lineNumbers " >
1 >
DR = (0x01 << 3)
Намерием >
My class= UpdateReg (DR)
In функция UpdateReg, котор она посмотрит как binary 00001000. Теперь я не могу приложить вышеуказанную дорогу преобразовывать 1 к 0. Я должен также послать номера бита должны быть доработанным.

Is там более просто дорога делать это?

Thanks
class=

Ответ : Будет самой лучшей дорогой доработать bitfields

>>What будет самая лучшая дорога доработать bitfields используемые для регистра оборудования
не использовать bitfields.

>> Я хочу доработать «DR» (биты 3.2)
Я не вижу как то сопрягает ваши bitfields DR
==============

См. если это, то вы управляете для:

Во всяком случае, оно кажется что вы хотите вашу функцию UpdateReg () быть вообще достаточно отрегулировать любой сценарий.

UpdateReg (маска чарса, сгорает newPattern);
         где маской будет комплект произвольно помещенных битов освободятся
Я если допустить, что вы могу прочитать регистр в перемеююом temp, и после этого манипулирую ее, и окончательно пишу ее назад к регистру HW. (Это не всегда поистине, с иногда читать изменения регистра HW значение.)

Так маска приспособлена к первая ясной соответствуя биты в перемеююом temp (после того как вы читаете регистр HW). После этого, using маска снова с newPattern, я теперь имею действительный комплект битов (или 0) к или в регистру temp. После этого напишите temp назад к HW.
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us