例題3.4 SWITCH2プログラム
スイッチ 1,2が押されると音が変わるプログラムを作成します. |
;************************************************** ;* BEEP音のスイッチによる制御プログラム * ;************************************************** ; ;------CPUの指定------- .CPU 300HA ; ;----シンボルの定義------ ;今回はポート4とポートBを使います. PBDR .EQU H'FFFFD6 ;ポートBデータレジスタ ;ポート4を入力に設定しています. ;ポート4のデータディレクションレジスタに書き込んでいます. ;ポートBを出力に設定しています. ;ポートBのデータディレクションレジスタに書き込んでいます 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 ;ポートBを出力に設定するため MOV.B R0L,@H'FFFFD4 ;ポートBDDRにH'FFを書き込む ;このプログラムの流れは, ;1:R0Lに00000001を書き込む ;2:R0Lの中身をポートBに出力する ;3:待機する ;4:R0Lの1bit目を反転する ;5: 2:へと飛ぶ(ループ) ;となります. ;待機する時間の長さにより音程が変わります. START: MOV.B R0L,@PBDR ;R0Lの内容をポートBに出力する MOV.B @P4DR,R0H ;現在のSW-1,2,3,4の状態をR0Hに読み込む (____) #4,R0H BNE SW2 SW1: JSR @TIME00 ;待機 JMP (______) SW2: BTST #5,R0H BNE OTHER JSR @TIME10 JMP @CKEND OTHER: JSR @TIME20 CKEND: (____) #0,R0L ;R0Lの1bit目を反転する JMP @START ;STARTにジャンプする
|
課題 3.4の説明
課題:スイッチの数を増やしてみよう.スイッチ 3,4はそれぞれポート4のbit6とbit7に接続されています. 課題:スイッチ同時押しでも音を変えてみよう. |