※ ChatGPTを利用し、要約された質問です(原文:マイコンキットで学ぶ/組み込みシステム入門)
マイコンキットで学ぶ/組み込みシステム入門
このQ&Aのポイント
マイコンキットで学ぶ/組み込みシステム入門:マイコン、エミュレータチップ、パソコンOSの詳細について解説します。
初心者向けのアセンブリ学習に関する質問です。Sw1を押すとLED1が90%で点灯し、Sw2を押すとLED2が80%で点灯する課題について解決策を求めています。
質問者が入力した命令に問題があり、Sw1とSw2を同時に押した時にLED1のみが点灯する現象が発生しています。解決策やアドバイスをお願いします。
【対象】
日経エレクトロニクス(2007.6.30発行)
16ビット・マイコン搭載ボード付き(組み込み速修キット)
エミュレータ一体型
http://techon.nikkeibp.co.jp/embedded/academy/thats1.html
http://techon.nikkeibp.co.jp/embedded/academy/guide1.pdf#search='NE...
<マイコン>
R5F21256SNFP
<エミュレータチップ>
HD64F2215U(H8Sファミリ/2215グループ)
(このマイコンに特殊プログラムをインストールしてエミュレータ機能をもたせているのか?)
<パソコンOS>
Windows7(32bit版)
Sw1(p1_7)
Sw2(p1_3)
LED1(p2_0)
LED2(p2_1)
始めまして。アセンブリの学習を始めた初心者です。
皆さんに質問です。
現在「Sw1を押した時LED1が90%で点灯かつSw2を押した時LED2が80%で点灯する事」を課題として行っています。
私が入力した命令
.INCLUDE sfr_r825.inc
.SECTION PROGRAM,CODE
.ORG 0009000h
Start:
MOV.B #01110111b, pd1 p1_7、p1_3を入力ポートに設定
MOV.B #0FFh, pd2 p2_0,p2_1を出力ポートに設定
MOV.B #0FFh, p2 LED1,LED2消灯
Loop:
BTST p1_7 Sw1がOnならZフラグに1、OFFなら0
JZ Sw1_On Zフラグが1ならSw1_Onへ
BTST p1_3 Sw2がOnならZフラグに1、OFFなら0
JZ Sw2_On Zフラグが1ならSw2_Onへ
JMP Loop
Sw1_On:
BCLR p2_0 LED1点灯
JSR Wait_LedOn01
BSET p2_0 LED消灯
JSR Wait_LedOff01
JMP Loop
Sw2_On:
BCLR p2_1 LED2点灯
JSR Wait_LedOn02
BSET p2_1 LED2消灯
JSR Wait_LedOff02
JMP Loop
Wait_LedOn01:
MOV.W #198,R0
WaitSub_LedOn01:
SBJNZ.W #1,R0,WaitSub_LedOn01
RTS
Wait_LedOff01:
MOV.W #22,R0
WaitSub_LedOn02:
SBJNZ.W #1,R0,WaitSub_LedOn02
RTS
Wait_LedOn02:
MOV.W #176,R0
WaitSub_LedOn03:
SBJNZ.W #1,R0,WaitSub_LedOn03
RTS
Wait_LedOff02:
MOV.W #44,R0
WaitSub_LedOn04:
SBJNZ.W #1,R0,WaitSub_LedOn04
RTS
.SECTION FIXVECTOR,ROMDATA
.ORG 0FFFCh
Reset:
.LWORD Start|0FF000000h
.END
という入力をしました。
しかし、Sw1,Sw2を同時に押した際、LED1のみの点灯となってしまいます。
試行錯誤で今まで行ってきましたが、現在止まってしまっております。
解決策など教えていただければと考えております。
回答の方、宜しくお願いいたします。
お礼
回答ありがとうございます。 指摘していただいた部分を明日もう一度見直してみたいと思います。