マイコンキットで学ぶ/組み込みシステム入門
【対象】
日経エレクトロニクス(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のみの点灯となってしまいます。
試行錯誤で今まで行ってきましたが、現在止まってしまっております。
解決策など教えていただければと考えております。
回答の方、宜しくお願いいたします。