• ベストアンサー

組み込みアカデミー LEDを1個点灯のはずが2個点灯してしまいます

組み込みアカデミー第1回 LEDを1個点灯のはずが2個点灯してしまいます。 対象は付録の「NE-R8C/25」です。動作確認プログラムのslos.hwsを実行するとLED1と2が交互・同時点灯を繰り返し、正常に動作しています。 ところが以下のプログラムをC:\WorkSpace\step01\step01\step01.a30として実行してもLEDが2個点灯してしまいます。 プログラム中 LED1点灯のところがMOV.B #11111110b,p2でもLED1と2同時に点灯してしまいます。 指定されたsfr_r825.incファイルはc:\WorkSpase\STEP01\STEP01以下にコピーしています。 .INCLUDE sfr_r825.inc ;SFR定義ファイルのインクルード .SECTION PROGRAM,CODE ;コードセクション .ORG 0009000h Start: MOV.B #11111111b,pd2 ;入出力ポートP2を出力ポートに設定 BCLR p2_0      ;LED1点灯  BSET p2_1      ;LED2消灯 Loop: JMP Loop .SECTION FIXVECTOR,ROMDATA .ORG 0FFFCh Reset: .LWORD Start|0FF000000h .END

質問者が選んだベストアンサー

  • ベストアンサー
  • ricardo_
  • ベストアンサー率19% (14/72)
回答No.2

 ポートの設定を全て入力にしてみましょう。  LEDが消灯しなければ、このプログラム自体が走っていないと判断できます。  モニタか何か他のプログラムで出力に設定したのであり、あなたのプログラムで出力にしたのではないと判断出来る訳です。 >MOV.B #11111111b,pd2 ;入出力ポートP2を出力ポートに設定

shimo1947
質問者

お礼

アドバイスどおりポートの設定を入力にして、以後の命令はコメントにしてデバッグ→リセットして実行 をするとLEDは2個点灯しました。 おっしゃるとおりモニタか何かのプログラムで出力に設定されたとおもいます。 デバッグ→CPUのリセットをクリックしたらLEDは消灯します。 まだ原因がつかめません。 .INCLUDE sfr_r825.inc ;SFR定義ファイルのインクルード .SECTION PROGRAM,CODE ;コードセクション .ORG 0009000h Start: MOV.B #00000000b,pd2 ;ポートを入力に設定 ;MOV.B #11111111b,pd2 ;入出力ポートP2を出力ポートに設定 ;BCLR p2_0 ;LED1点灯 ;BSET p2_1 ;LED1消灯 Loop: JMP Loop .SECTION FIXVECTOR,ROMDATA .ORG 0FFFCh Reset: .LWORD Start|0FF000000h .END

shimo1947
質問者

補足

ricardo_さんへ アドバイスどおりでした。 プログラムを消してルネサスの「High-performance Embedded Workshop」の「新規プロジェクトワークスペースの作成」からやり直しました。 原因はプロジェクトタイプがApplicationになっていたからでした。EmptyApplicationで作成し、ポートの設定を全て入力にしてみるとLEDが消灯しました!!次にLED1点灯プログラムを実行すると正常に動作しました。ありがとうございます。ROBO-ONEに興味を持ちC言語からはじめようとこのキットを入手しました。 教えてgooも初めて利用して補足とお礼の順番も逆で申し訳ありません。

その他の回答 (1)

  • kuro804
  • ベストアンサー率29% (523/1762)
回答No.1

通りすがりで基板の内容も、それに関する記事の内容も知りませんが デバッグモードで走らせることが出来るなら BSET p2_1 まで走らせて停止させた時点で LED2 は消灯してるのでしょうか? 要は、ステップ動作で正常に働いて、連続(通常RUNモード)でLED2が消灯しないのであれば、仕様書のどこかにI/oポートアクセスに関する注意事項があるのではないでしょうか? たまにあるのが 同一ポートのビット操作を連続して行う場合は間に遅延の為にNOP命令を挿入する 等がありますね! がんばって下さい。

shimo1947
質問者

お礼

Kuro804さんへ プログラムを消してルネサスの「High-performance Embedded Workshop」の「新規プロジェクトワークスペースの作成」からやり直しました。 原因はプロジェクトタイプがApplicationになっていたからでした。EmptyApplicationで作成し、ポートの設定を全て入力にしてみるとLEDが消灯しました!!次にLED1点灯プログラムを実行すると正常に動作しました。ありがとうございます。

shimo1947
質問者

補足

デバッグ→ステップ と言うコマンドがありました。Loopの行が9ステップなのでそこまで走らせたらLEDは2個ついていました。 NOPもいれてみましたが状況は変わりません。 .INCLUDE sfr_r825.inc ;SFR定義ファイルのインクルード .SECTION PROGRAM,CODE ;コードセクション .ORG 0009000h Start: ;MOV.B #00000000b,pd2 入出力ポートP2を入力ポートに設定 MOV.B #11111111b,pd2 ;入出力ポートP2を出力ポートに設定 BCLR p2_0 ;LED1点灯 NOP BSET p2_1 ;LED1消灯 Loop: JMP Loop .SECTION FIXVECTOR,ROMDATA .ORG 0FFFCh Reset: .LWORD Start|0FF000000h .END