この文書の現在のバージョンと選択したバージョンの差分を表示します。
共用体の応用 [2011/12/11 01:44] member |
共用体の応用 [2011/12/11 02:04] (現在) member |
||
---|---|---|---|
ライン 5: | ライン 5: | ||
<code c> | <code c> | ||
PFC.PAIORL.WORD = 0xffff; //ポートAすべてを出力に | PFC.PAIORL.WORD = 0xffff; //ポートAすべてを出力に | ||
- | PFC.PAIORL.BYTE.H = 0xf; //ポートAの上位BYTEを入力に = 8から15ビットまでを入力に (こんな書き方できるの知ってた?) | + | PFC.PAIORL.BYTE.H = 0xff; //ポートAの上位BYTEを入力に = 8から15ビットまでを入力に (こんな書き方できるの知ってた?) |
PFC.PAIORL.BIT.B7 = 0; //ポートAの7ビット目を入力に | PFC.PAIORL.BIT.B7 = 0; //ポートAの7ビット目を入力に | ||
PFC.PAIORL.BIT.B8 = 0; //ポートAの8ビット目を入力に | PFC.PAIORL.BIT.B8 = 0; //ポートAの8ビット目を入力に | ||
- | PFC.PAIORL.BIT.B5 = 0; //ポートAの9ビット目を入力に | + | PFC.PAIORL.BIT.B5 = 0; //ポートAの5ビット目を入力に |
</code> | </code> | ||
ライン 23: | ライン 23: | ||
unsigned char B15:1; /* Bit 15 */ | unsigned char B15:1; /* Bit 15 */ | ||
~~~~~~~~一部省略、理系ならわかるよね~~~~~~~~ | ~~~~~~~~一部省略、理系ならわかるよね~~~~~~~~ | ||
- | unsigned char B1 :1; /* Bit 1 */ | + | unsigned char B1 :1; /* Bit 1 */ |
unsigned char B0 :1; /* Bit 0 */ | unsigned char B0 :1; /* Bit 0 */ | ||
} BIT; /* */ | } BIT; /* */ | ||
ライン 30: | ライン 30: | ||
- | この共用体がタネです。共用体というのはデータの格納場所を共有するわけですよね。ビットフィールドで作った1bitの変数16コと、1byteの変数(unsignede char)2つと2byte(unsignede short)の変数って同じデータの幅を持っているわけです。だから、どれかに値を代入したら、他のメンバーの値も変わってしますという共用体の性質をうまく利用しているわけです。ここで一つ重要なことでリトルエンディアンとかビッグエンディアンとか言う言葉があるということを覚えておいてください。これは何かというと、ビットフィールドの変数が下位ビットから代入されるか、それとも上位ビットから代入されるかということです。詳しくは自分で調べてください。 | + | この共用体がタネです。共用体というのはデータの格納場所を共有するわけですよね。ビットフィールドで作った1bitの変数16コと、1byteの変数(unsignede char)2つと2byte(unsignede short)の変数って同じデータの幅を持っているわけです。だから、どれかに値を代入したら、他のメンバーの値も変わってしまうという共用体の性質をうまく利用しているわけです。ここで一つ重要なことでリトルエンディアンとかビッグエンディアンとか言う言葉があるということを覚えておいてください。これは何かというと、ビットフィールドの変数が下位ビットから代入されるか、それとも上位ビットから代入されるかということです。詳しくは自分で調べてください。 |