;###################################################### ; ナイトライダー風に流れる電飾 5LED用 ; 12C509の7,6,5,3,2番ピンの順番で使用する ; 往復で流れるタイプ ;###################################################### list p=12c509 include __config _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC ;変数の定義 W1M EQU 07H ACT_T EQU 08H W5M EQU 09H W14M EQU 10H ;%%%%%%%%%% PIC 初期設定 RESET GOTO START ORG 04H START MOVLW 09FH OPTION GOTO SETUP ;%%%%%%%%%% サブルーチン ;======================================= T14M ;14ミリ秒待つルーチン MOVLW 0EH MOVWF W14M W14 MOVLW 0F9H MOVWF W1M W14A NOP DECFSZ W1M, F GOTO W14A DECFSZ W14M, F GOTO W14 RETLW 00H ;======================================= T5M ;5ミリ秒待つルーチン MOVLW 05H MOVWF W5M W5 MOVLW 0F9H MOVWF W1M W5A NOP DECFSZ W1M, F GOTO W5A DECFSZ W5M, F GOTO W5 RETLW 00H ;======================================= T1M ;1ミリ秒待つルーチン MOVLW 0F9H MOVWF W1M W1 NOP DECFSZ W1M, F GOTO W1 RETLW 00H ;%%%%%%%%%% I/O 初期設定 SETUP MOVLW 08H ;0000 1000 TRIS GPIO ;2,3,5,6,7番ピンを出力。4番ピンを入力にする MOVLW 08H ;0000 1000 MOVWF GPIO ;出力をすべてLoにする ;%%%%%%%%%% メインプログラム LOOP ;### 1番目の動作の始まり MOVLW 05H ;ACT1を5回繰り返す MOVWF ACT_T ACT1 MOVLW 01H ;0000 0001 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 01H ;0000 0001 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 01H ;0000 0001 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT1 ;### 2番目の動作の始まり MOVLW 05H ;ACT2を5回繰り返す MOVWF ACT_T ACT2 MOVLW 02H ;0000 0010 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 03H ;0000 0011 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 03H ;0000 0011 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT2 ;### 3番目の動作の始まり MOVLW 05H ;ACT3を5回繰り返す MOVWF ACT_T ACT3 MOVLW 04H ;0000 0100 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 06H ;0000 0110 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 07H ;0000 0111 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT3 ;### 4番目の動作の始まり MOVLW 05H ;ACT4を5回繰り返す MOVWF ACT_T ACT4 MOVLW 10H ;0001 0000 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 14H ;0001 0100 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 16H ;0001 0110 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT4 ;### 5番目の動作の始まり MOVLW 05H ;ACT5を5回繰り返す MOVWF ACT_T ACT5 MOVLW 20H ;0010 0000 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 30H ;0011 0000 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 34H ;0011 0100 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT5 ;### 6番目の動作の始まり MOVLW 05H ;ACT6を5回繰り返す MOVWF ACT_T ACT6 MOVLW 20H ;0010 0000 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 20H ;0010 0000 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 30H ;0011 0000 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT6 ;### 7番目の動作の始まり MOVLW 05H ;ACT7を5回繰り返す MOVWF ACT_T ACT7 MOVLW 20H ;0010 0000 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 20H ;0010 0000 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 20H ;0010 0000 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT7 ;### 8番目の動作の始まり MOVLW 05H ;ACT8を5回繰り返す MOVWF ACT_T ACT8 MOVLW 10H ;0001 0000 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 30H ;0011 0000 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 30H ;0011 0000 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT8 ;### 9番目の動作の始まり MOVLW 05H ;ACT9を5回繰り返す MOVWF ACT_T ACT9 MOVLW 04H ;0000 0100 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 14H ;0001 0100 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 34H ;0011 0100 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT9 ;### 10番目の動作の始まり MOVLW 05H ;ACT10を5回繰り返す MOVWF ACT_T ACT10 MOVLW 02H ;0000 0010 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 06H ;0000 0110 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 16H ;0001 0110 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT10 ;### 11番目の動作の始まり MOVLW 05H ;ACT11を5回繰り返す MOVWF ACT_T ACT11 MOVLW 01H ;0000 0001 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 03H ;0000 0011 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 07H ;0000 0111 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT11 ;### 12番目の動作の始まり MOVLW 05H ;ACT12を5回繰り返す MOVWF ACT_T ACT12 MOVLW 01H ;0000 0001 MOVWF GPIO CALL T14M ;14m秒待つ 残光の比調整 MOVLW 01H ;0000 0001 MOVWF GPIO CALL T5M ;5m秒待つ 1つ目の尾は30%の光量 MOVLW 03H ;0000 0011 MOVWF GPIO CALL T1M ;1m秒待つ 2つ目の尾は5%の光量 DECFSZ ACT_T, F GOTO ACT12 GOTO LOOP END