例題3.1 SWITCHによるLED点灯/消灯プログラム
スイッチ 1が押されるとLEDが点灯し,スイッチ2が押されるとLEDが消灯するプログラムを作成します. |
; SWITCH.SRC ;************************************************** ;* SWITCHによるLED点灯/消灯プログラム * ;************************************************** ; ;------CPUの指定------- .CPU 300HA ; ;----シンボルの定義------ P4DR .EQU H'FFFFC7 ;ポート4データレジスタ P5DR .EQU H'FFFFCA ;ポート5データレジスタ LED1 .BEQU 0,P5DR ;ポート5のbit0をLED1で表す
.SECTION ROM,CODE,LOCATE=H'000100 ;セクションの宣言
;-----I/Oの初期設定---- INIT: MOV.L #H'FFFF10,ER7 ;スタックポインタの設定 MOV.B #H'00,R0L ;ポート4を入力に設定するため MOV.B R0L,@H'FFFFC5 ;コントロールレジスタにH'00を書き込む MOV.B #H'FF,R0L ;ポート4をプルアップに設定するため MOV.B R0L,@H'FFFFDA ;入力プルアップMOSコントロールレジスタにH'FFを書き込む MOV.B #H'FF,R0L ;ポート5を出力に設定するため MOV.B R0L,@H'FFFFC8 ;ポート5DDRにH'FFを書き込む
;----MAINルーチン----- START: MOV.B @P4DR,R0L ;現在のSW-1,2の状態をR0Lに読み込む SW1: BTST #4,(___) ;SW-1の状態(bit4)をチェック BNE SW2 ;押されていなければSW2にジャンプ BSET LED1 ;LED1を点灯する SW2: BTST #5,R0L ;SW-2の状態(bit5)をチェック (___) START ;押されていなければSTARTにジャンプ BSET LED1 ;LED1を消灯する JMP @START ;STARTにジャンプ
.END
|
課題 3.1の説明
|
今回新たに使ったニモニック
BTST |
デスディネーションオペランドの指定された 1bitの状態を調べます |
Ex) BTST #4,R0L ;R0レジスタ下位8bitのうちbit4の状態をチェックします |
START: MOV.B @P4DR,R0L ;現在のSW-1,2の状態をR0Lに読み込む 課題 3.1の上記の部分はif文とよく似ています.if文とは「もし〜ならば,〜する」でした. ポート 4のbit4にはスイッチSW1(マザーボード上のスイッチ)が付いています.このスイッチは押されるとポート4のbit4をグランドにつなげるように付いています. BTST #4,R0L |
・ 分岐命令
JMP |
指定されたアドレスへ無条件に分岐します. |
Ex) JMP @PWM ;PWMにジャンプします. |
|
BSR |
指定されたアドレスへサブルーチン分岐します. |
Ex) BNE TIME01 ;サブルーチンTIME01へジャンプします. |
|
JSR |
指定されたアドレスへサブルーチン分岐します. |
Ex) JSR @SW1ON ;サブルーチンTIME01へジャンプします. |
|
RTS |
サブルーチンから復帰します. |
Ex) JSR ;サブルーチンから元の場所に復帰します. |
・ 条件分岐( Bcc)
BRA |
無条件に指定したところにジャンプします. |
Ex) BRA PWM ;PWMにジャンプします |
|
BNE |
Zフラグ=0なら指定されたところにジャンプ,そうでなければ次の命令に進みます. |
Ex) BNE TIME01 ; Zフラグ=0ならTIME01へ,そうでなければ次の命令に進む |
|
BEQ |
Zフラグ=1なら指定されたところにジャンプ.そうでなければ次の命令に進みます. |
Ex) BEQ SW1ON ; Zフラグ=1ならSW1ONへ,そうでなければ次の命令に進む |
|
BPL |
Nフラグ=0なら指定されたところにジャンプ,そうでなければ次の命令に進みます. |
Ex) BPL BINH ;Nフラグ=0ならBINHへ,そうでなければ次の命令に進む |
|
BMI |
Nフラグ=1なら指定されたところにジャンプ,そうでなければ次の命令に進みます. |
Ex) BPL BINH ;Nフラグ=1ならBINHへ,そうでなければ次の命令に進む |
・ プログラムを書き込む流れのおさらい プログラムを書き込むごとに以下の工程をすべて行います. 1.プログラム作成(***.mar形式のファイル作成) |
マザーボードのスイッチの機能をまとめると次のようになります.
電源用スイッチ SW6 |
ROM書き込み用スイッチ SW7 |
|
OFF |
OFF |
ON/OFF |
プログラム実行状態 |
ON |
OFF |
書き込み状態 |
ON |
ON |