32×16ドットLEDマトリクス表示装置をCで動かしたい!
AKI-H8-3048/Fを使って32×16ドットLEDマトリクス表示装置を動かそうとしています。以前投稿して、そのときの意見やいろんなサイトを参考にCでプログラムを作ってみましたが動きません。
↓が作ったプログラムです。
#include <3048f.h>
#include <stdio.h>
/* 待ち時間発生初期化 ************************************/
void timer_init(void){
ITU0.TCR.BYTE = 0x23;
ITU0.GRA = 0x07d0;
ITU.TSTR.BIT.STR0 = 0;
return;
}
/* 待ち時間発生 引数に、必要なミリ秒を指定する***********/
void wait(int msec){
int i;
ITU.TSTR.BIT.STR0 = 1;
for(i=0;i<msec;i++){
do{
}while(ITU0.TSR.BIT.IMFA == 0);
ITU0.TSR.BIT.IMFA = 0;
}
ITU.TSTR.BIT.STR0 = 0;
return;
}
/* 表示 ********************************************/
void print(void){
int a=0;
int sin1[16]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int sin2[16]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int sin3[16]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
while(1){
P1.DR.BIT.B0 =0;
wait(100);
P1.DR.BIT.B0 =1;
wait(100);
P1.DR.BIT.B4 =1;
for(a=0;a<=16;a++){
P1.DR.BIT.B2 =sin1[a];
P1.DR.BIT.B1 =sin2[a];
P1.DR.BIT.B3 =sin3[a];
}
}
return;
}
/* メイン関数 ********************************************/
void main(void){
timer_init(); /* timerの初期化 */
P1.DDR = 0x1f; /* port1出力に設定 */
print();
}
何が違うのかわからないのでご指摘をお願いします。
お礼
早速の回答大変ありがたいです。 セッティングの順番を変えるとうまくいきました。