Questione : Che cosa è il migliore senso modificare i bitfields

Se devo modificare alcune diverse punte in un registro di fissaggi, posso fare il class= " i lineNumbers " >
1 del >
struct Bitwise
{
	carbone PM: 3;
	Dott del carbone: 2;
	carbone XEN: 1;
	YEN del carbone: 1;
	ZEN del carbone: 1;
} foo; class= >
Thanks di
1 del >
carbone reg1 = 0x34; valore di //some
carbone Dott = (0x3 << 2);
UpdateReg (Dott);

UpdateReg (carbone val)
{
  reg1 |= DOTT; 
} class= >
The di
se voglio cambiare una punta da 1 a 0, dell'operatore può essere fatto se conosco la punta position.
for ex: ~ del &= reg1 (1 << 3)

But nel class= sotto " lineNumbers " >
1 del >
Dott = (0x01 << 3)
L'intenzione " libera " di >
My del class= di UpdateReg (Dott)
In la funzione che di UpdateReg assomiglierà al paio 00001000. Ora non posso applicare il senso di cui sopra di conversione un 1 - del 0. Devo anche trasmettere i numeri di punta che devono essere modificati.

Is là un senso più semplice di fare questo?

Thanks
class= del

Risposta : Che cosa è il migliore senso modificare i bitfields

il >>What è il migliore senso modificare i bitfields usati per il registro di fissaggi
è non usare i bitfields.

>> Voglio modificare “il Dott„ (punte 3.2)
Non vedo come quello abbina il vostro Dott dei bitfields
==============

Vedere se questo è che cosa state guidando per:

Comunque, sembra che vogliate la vostra funzione di UpdateReg () essere abbastanza generale trattare tutto il piano d'azione.

UpdateReg (la mascherina del carbone, carbonizza newPattern);
         dove la mascherina è un insieme delle punte arbitrariamente disposte che elimineranno
Sto supponendo che potete leggere il registro in una variabile del temp ed allora lo maneggio ed infine lo scrivo di nuovo al registro di HW. (Questo non è sempre allineare, a volte dalla lettura dei cambiamenti del registro di HW il valore.)

Così la mascherina si adatta a primo libero le punte corrispondenti nella variabile del temp (dopo che leggete il registro di HW). Allora, using la mascherina ancora con il newPattern, ora ho l'insieme valido delle punte (o di 0) a o nel registro del temp. Allora scrivere il temp di nuovo al HW.
Altre soluzioni  
 
programming4us programming4us