;************************************ ;  「なめらかな」点灯のパッシングライト ;             for PIC12C509 ;************************************ list p=12c509 include ; *** 変数レジスタ定義 *** OTPT1 EQU 07H ;徐々に増える点灯パターン OTPT2 EQU 08H ;徐々に減る点灯パターン CNT1 EQU 09H CNT2 EQU 0AH LOOP1 EQU 0BH STP EQU 0CH T_OFF EQU 0DH WAIT EQU 0EH ; *** メインルーチン *** RESET GOTO START ORG 04H START MOVLW 09FH OPTION MOVLW 08H TRIS GPIO MOVLW 0C0H MOVWF STP MAIN MOVLW 04H ;四回ループ開始 MOVWF LOOP1 ;GPIO 4,5ビットがヘッドライト ; 0,1 がテールランプ STIPAS MOVLW 30H ;GP4&5(ヘッドライト両方)消滅 MOVWF OTPT2 ;0011 0000 → 0000 0000 MOVLW 00H MOVWF OTPT1 CALL GRAD CALL T120M MOVLW 30H ;GP4&5点灯:徐々に00H:急に30H MOVWF OTPT2 ;パッシングなので急に点灯することにした MOVLW 30H ;0011 0000 → 0011 0000 MOVWF OTPT1 CALL GRAD CALL T30M ;30msec待ち DECFSZ LOOP1,F GOTO STIPAS ;四回ループ折り返し=両目同時パッシング CALL T120M CALL T120M CALL T120M CALL T120M CALL T120M REAR1 MOVLW 04H ;四回ループ開始 MOVWF LOOP1 RLOOP BSF GPIO,0 ;ブレーキランプ点灯 BSF GPIO,1 CALL T120M ;120msec待ち BCF GPIO,0 ;ブレーキランプ消灯 BCF GPIO,1 CALL T120M ;120msec待ち DECFSZ LOOP1,F GOTO RLOOP ;四回ループ折り返し=ブレーキパカパカ CALL T120M ;600msec待ち CALL T120M CALL T120M CALL T120M CALL T120M MOVLW 30H ;GP4 H-H GP5 H-L MOVWF OTPT2 ;右目つきっぱなし、左目徐々に消える MOVLW 10H MOVWF OTPT1 CALL GRAD MOVLW 04H ;四回ループ開始 MOVWF LOOP1 COMPAS CALL T120M MOVLW 10H ;GP4 H-L GP5 L-H MOVWF OTPT2 ;右目徐々に消える、左目徐々につく MOVLW 20H MOVWF OTPT1 CALL GRAD CALL T30M MOVLW 20H ;GP4 L-H GP5 H-L MOVWF OTPT2 ;右目徐々につく、左目徐々に消える MOVLW 10H MOVWF OTPT1 CALL GRAD DECFSZ LOOP1,F GOTO COMPAS ;四回ループ折り返し=両目互い違いパッシング CALL T120M MOVLW 10H ;GP4 H-H GP5 L-H MOVWF OTPT2 ;右目つきっぱなし、左目徐々につく MOVLW 30H MOVWF OTPT1 CALL GRAD CALL T120M CALL T120M CALL T120M CALL T120M CALL T120M REAR2 MOVLW 04H ;ブレーキパカパカをもう一回 MOVWF LOOP1 RLOOP2 BSF GPIO,0 BSF GPIO,1 CALL T120M BCF GPIO,0 BCF GPIO,1 CALL T120M DECFSZ LOOP1,F GOTO RLOOP2 CALL T120M CALL T120M CALL T120M CALL T120M CALL T120M GOTO MAIN ;はじめに戻る(繰り返し) ;*******徐々にOTPT2の点灯パターンから****** ;*******OTPT1に推移するルーチン     ***** GRAD MOVLW 01H MOVWF CNT1 GRDLP MOVF CNT1,W MOVWF CNT2 MOVF OTPT1,W MOVWF GPIO ;増える方向の点灯 GRDLP2 DECFSZ CNT2,F GOTO GRDLP2 MOVF CNT1,W ;STP-CNT1->CNT2 SUBWF STP,W MOVWF CNT2 MOVF OTPT2,W MOVWF GPIO GRDLP3 DECFSZ CNT2,F GOTO GRDLP3 INCF CNT1,F MOVF CNT1,W SUBWF STP,W ;STP - CNT1 BTFSC STATUS,C GOTO GRDLP MOVF OTPT1,W MOVWF GPIO ;増える方向の点灯 RETLW 0 ;以下時間待ちルーチン T30M MOVLW 28H MOVWF T_OFF MOVLW 0FFH MOVWF WAIT LOOPA CALL WAIT1 DECFSZ T_OFF,F GOTO LOOPA RETLW 00H WAIT1 NOP DECFSZ WAIT,F GOTO WAIT1 RETLW 00H T120M MOVLW 60H MOVWF T_OFF MOVLW 0FFH MOVWF WAIT LOOP2 CALL WAIT2 DECFSZ T_OFF,F GOTO LOOP2 RETLW 00H WAIT2 NOP DECFSZ WAIT,F GOTO WAIT2 RETLW 00H END