[戻る]
過去ログ [ 0001 ]
過去ログ:     ワード検索: 条件: 表示:

タイトル
記事No
投稿日
投稿者
参照先
ビットフィールドのポート出力
356
: 15/10/02-16:53
wag_saku

XC8を使用しています。
8ビットモード専用のLCDを使うに際し、これまでと違うロジックを勉強したいと思い、下記ビットフィールドを定義しましたがポートに出力できません。

typedef union
{
unsigned char LCDPORT ;
struct
{
unsigned RB0 : 1 ;
unsigned RB1 : 1 ;
unsigned RB2 : 1 ;
unsigned RB3 : 1 ;
unsigned RA6 : 1 ;
unsigned RA7 : 1 ;
unsigned RA0 : 1 ;
unsigned RA1 : 1 ;
} ;
} LCD_U ;

LCD_U bb ;
|
|
|
bb.LCDPORT = i

このビットフィールドをポート出力に連動させることは無理なのでしょうか。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: ビットフィールドの出力
359
: 15/10/04-08:47
Gokan <gokan@picfun.com>

これは私も試したことがありませんが、異なるレジスタのビットフィールドというのは
コンパイラにとって処理が難しいかも知れませんね。
コンパイラがどういう風にアセンブラに展開しているかを確認してみるのが良いかも。


> XC8を使用しています。
> 8ビットモード専用のLCDを使うに際し、これまでと違うロジックを勉強したいと思い、下記ビットフィールドを定義しましたがポートに出力できません。
>
> typedef union
> {
> unsigned char LCDPORT ;
> struct
> {
> unsigned RB0 : 1 ;
> unsigned RB1 : 1 ;
> unsigned RB2 : 1 ;
> unsigned RB3 : 1 ;
> unsigned RA6 : 1 ;
> unsigned RA7 : 1 ;
> unsigned RA0 : 1 ;
> unsigned RA1 : 1 ;
> } ;
> } LCD_U ;
>
> LCD_U bb ;
> |
> |
> |
> bb.LCDPORT = i
>
> このビットフィールドをポート出力に連動させることは無理なのでしょうか。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^2: ビットフィールドの出力
360
: 15/10/04-15:53
wag_saku

ビットフィールドの定義でPORTBbits.RB0ができなかったことからコンパイラの仕様外とは想像していましたが、これ以上の調査方法がわかりませんでした。
なるほど、アセンブラリストを調べるほうほうがあるとは。
ただ残念ながらアセンブラについては未経験なので、長期の課題として今回はスキップします。
ありがとうございました。



> これは私も試したことがありませんが、異なるレジスタのビットフィールドというのは
> コンパイラにとって処理が難しいかも知れませんね。
> コンパイラがどういう風にアセンブラに展開しているかを確認してみるのが良いかも。
>
>
> > XC8を使用しています。
> > 8ビットモード専用のLCDを使うに際し、これまでと違うロジックを勉強したいと思い、下記ビットフィールドを定義しましたがポートに出力できません。
> >
> > typedef union
> > {
> > unsigned char LCDPORT ;
> > struct
> > {
> > unsigned RB0 : 1 ;
> > unsigned RB1 : 1 ;
> > unsigned RB2 : 1 ;
> > unsigned RB3 : 1 ;
> > unsigned RA6 : 1 ;
> > unsigned RA7 : 1 ;
> > unsigned RA0 : 1 ;
> > unsigned RA1 : 1 ;
> > } ;
> > } LCD_U ;
> >
> > LCD_U bb ;
> > |
> > |
> > |
> > bb.LCDPORT = i
> >
> > このビットフィールドをポート出力に連動させることは無理なのでしょうか。
▲pagetop

- WebForum -