dポイントプレゼントキャンペーン実施中!

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();

}

何が違うのかわからないのでご指摘をお願いします。

A 回答 (1件)

わかりません。


まず、何が動かないんですか?
AKI-H8-3048/Fが動いてないんですか?
32×16ドットLEDマトリクス表示装置が動いてないんですか?

AKI-H8-3048/Fは動いてるとして、ポートから信号は出力されていますか?(テスタしかなくても、超低速動かせばポートの制御が出来ている事ぐらいは確認できます。)

P1.DR.BIT.B0
P1.DR.BIT.B1
P1.DR.BIT.B2
P1.DR.BIT.B3
P1.DR.BIT.B4
これらのポートはそれぞれ何処に接続されていますか?

動かそうとしている回路の回路図はこれでよろしいでしょうか?
http://akizukidenshi.com/pdf/v47e.pdf

でも、ポートBの出力は多分
B0:0W1W111111111111111111
B1:?W?W?11111111111111111
B2:?W?W?11111111111111111
B3:?W?W?11111111111111111
B4:?W?W111111111111111111
(Wはウェイト、?は不定)
と言う出力になるのかな?と思いますが、回路図見るとクロックとかがあるので、最低でも
01010101010とか、001100110011とか、000111000111000111のように出力するポートが無いと動く事は無いように思います。
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまって、まことにもうしわけありません。なんとか動かすことができました。まだ問題もありますが、もう少しなのでがんばってみます。ありがとうございました。

お礼日時:2006/12/14 16:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!