• 締切済み

Aki-h8/3052マイコンについて

今Aki-h8/3052マイコンを勉強しているのですが、初心者のためうまくいかず質問をしました。知識がないと思われるような質問をしてしまいますが、よろしくお願いします。 次のようなプログラムを書き込んで、LEDを点滅させたいのですが点滅しません。原因がわからないので、教えていただける方がいたらよろしくお願いします。 #define P5DDR (*(volatile unsigned char*)0xffffc8) #define P5DR (*(volatile unsigned char*)0xffffca) void wait (long loop){ while(loop--); } int main(void){ P5DDR = 0xff; while(1){ P5DR = 0xff; wait(200000); P5DR = 0; wait(200000); } } ポートBを使用した場合うまくいくのですが、ポート5を使用するとうまくいきません。 コンパイラにはGDLを、書き込みにはH8Write Turboを使用しています。

みんなの回答

  • Interest
  • ベストアンサー率31% (207/659)
回答No.2

シングルチップモードで動作しているものと仮定します。 P5DDR = 0xff; // ポートの入出力方向は出力になっているのでOK。 > 確認したところ、LEDのつながったさきがポートBだけでした。 転ばぬ先の杖として。 H8/3052Fの場合、ポート1, 2, 5, B はLEDを駆動できるだけの電流(シンク電流で10mA)を流すことができますが、他のポートではそれだけの電流を流せませんのでご注意を。

回答No.1

各ポートの入出力方向を設定しないで出力をしても、正しく出力されません。 I/Oポートは「デフォルトで入力」「デフォルトで出力」「デフォルトで入出力」のどれかになっているので「このポートは出力になれ」と言う感じで「初期化」が必要です。 なお、ハード的に「出力専用」「入力専用」になっているポートもあるので、入力専用のポートに出力しても出力されません。 あと、念の為に確認ですが「ポート5には、ちゃんとLEDが繋いである」のですよね?LEDがポートBにしか繋がってないなら、LEDはポートBででしか制御できませんよ。

el0511
質問者

お礼

回答ありがとうござます。 よく確認してみます。

el0511
質問者

補足

回答ありがとうございました。 確認したところ、LEDのつながったさきがポートBだけでした。 的確なアドバイスありがとうございました。

関連するQ&A