表示パターンを作りたいです。
7セグメント表示(1A~G・2A~G)とその他のマーク(T1・T2)を表示する液晶の表示パターンを作りたいのですが、ポートのアドレス内のビット配置が
1A・1B・1C・1D・T1・1E・1F・1G
とセグメントとその他のマークが混在していたり、
2A・2B・2C・2D・ー・ー・ー・ー
ー・ー・ー・ー・T2・2E・2F・2G
と、さらに2つのアドレスにまたがって配置されていたりします。
各アドレスとポートはヘッダで
union tag_IOPORT {
unsigned char byPORT;
struct {
unsigned char B7:1;
unsigned char B6:1;
unsigned char B5:1;
unsigned char B4:1;
unsigned char B3:1;
unsigned char B2:1;
unsigned char B1:1;
unsigned char B0:1;
} BIT;
};
#define IOPORT1_addr (*(volatile union tag_IOPORT *)0xffff)
#define port1 IOPORT1_addr.byPORT
#define 1A IOPORT1_addr.BIT.B7
#define 1B IOPORT1_addr.BIT.B6
#define 1C IOPORT1_addr.BIT.B5
#define 1D IOPORT1_addr.BIT.B4
#define T1 IOPORT1_addr.BIT.B3
#define 1E IOPORT1_addr.BIT.B2
#define 1F IOPORT1_addr.BIT.B1
#define 1G IOPORT1_addr.BIT.B0
という感じで#defineで宣言してあって、バイト単位でもビット単位でも操作出来るようにしてあります。
そこで、セグメントとマークを
・セグメント1
・セグメント2
・マーク
などのそれぞれのグループごとにまとめて操作する方法はないでしょうか?
イメージとしては
disp_T[4][2]={{0,0},{0,1},{1,0},{1,1}}
というような表示パターンの配列を作って代入すればマークの表示が出来るような感じにしたいのですが、代入する先を作れば良いかわかりません。
イメージ通りに作る事は可能なのか、どう作れば良いのか、他に良い方法など教えてください。
わかりにくい文章かもしれませんがお願いします。