sample.asmの改造方法
はじめの list p=12c509 include <p12c509.inc> __config _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC から MOVWF GPIO ;出力をすべてLoにする までは、おまじないです。そのままでお使いください。 ;################ここからプログラムの開始################# LOOP1 ;1番目の動作の始まり ここでのLOOP1は、ラベルといい、どこかから飛んでくるときのマークになります。 BSF GPIO, 0 ;7番ピンをHiにする BSFは、出力をHiにするという意味です。数字の0が、どのピンかを指定します。 0は7番ピン、1は6番ピン、2は5番ピン、3は4番ピンですが入力専用なので出力には使えません、4は3番ピン、5は2番ピンで、合計5出力あります。 BCF GPIO, 1 ;6番ピンをLoにする BCFは、出力をLoにするという意味です。数字の0が、どのピンかを指定します。 この要領で、好きなピンをHiにしたりLoにしたりします。 BCF GPIO, 2 ;5番ピンをLoにする BSF GPIO, 4 ;3番ピンをHiにする BCF GPIO, 5 ;2番ピンをLoにする CALL T250M ;0.25秒待つ CALLは、サブルーチンを呼ぶ命令です。ここではT250Mというサブルーチンを呼んでいます。 T250Mは、250msec(0.25秒)の時間稼ぎをするもので、次の動作までの時間を決めます。 ;###############2番目の動作の始まり 以下同様に、動作の順番を書いて行きます。エディタでカット&ペーストでいいでしょう。 ;###############3番目の動作の始まり ;###############4番目の動作の始まり BCF GPIO, 0 ;7番ピンをLoにする BSF GPIO, 1 ;6番ピンをHiにする BSF GPIO, 2 ;5番ピンをHiにする BCF GPIO, 4 ;3番ピンをLoにする BSF GPIO, 5 ;2番ピンをHiにする CALL T250M ;0.25秒待つ GOTO LOOP1 ;LOOP1の動作に戻る 最後の動作まで記述したら、GOTO命令で最初の動作に戻します。ここではLOOP1に戻ります。 以後これの繰り返しで点滅します。 ;#################ここからサブルーチン T250Mというサブルーチンの始まりです。T250Mは、250msec(0.25秒)の時間稼ぎをするものです T250M ;250ミリ秒待つルーチン T250Mがサブルーチンの名前です MOVLW 0F2H ここの 0F2H が時間を決める数値です。(16進数を意味するので後ろにHをつけます) 10進数で表すと242です。数字1が約1ミリ秒(1/1000秒)です。 たとえば0.1秒待つサブルーチン作りたければ、この数字を64H(100)としてください。 (厳密にはオーバーヘッドがあるので設定した値よりほんの少し長くなります。) 上限は0FFH(FFHでは、数値とわからないのでアルファベットで始まる数値は頭に0をつけます)までです。 よって1秒待たせたい場合は、T250Mを4回CALLしてください。 MOVWF WP1 MOVLW 0FFH MOVWF WP2 L1 違う時間のサブルーチンを作るときは、L2などに名前を変えます CALL W1 DECFSZ WP1, F GOTO L1 違う時間のサブルーチンを作るときは、L2などに名前を変えます RETLW 00H W1 違う時間のサブルーチンを作るときは、W2などに名前を変えます NOP DECFSZ WP2, F GOTO W1 違う時間のサブルーチンを作るときは、W2などに名前を変えます RETLW 00H ここまでが、T250Mのサブルーチンです。 複数の時間待ちサブルーチンを作りたい場合ここまでをコピーして違う時間の(例T100Mとか)つくってください。 その場合必ず違う名前のサブルーチンにする必要があります。 また、ここで使ったラベルL1とW1は、おのおのL2、W2というように違うラベルにしなければなりません。 END 最後に必ず END と書いてください。ご意見は、電子掲示板にどうぞ。