;************************************ ;  「なめらかな」点灯のパッシングライト ;             for PIC12C509 ;************************************ list p=12c509a 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 movlw 33H ;ブレーキランプ点灯 0011 0011 movwf GPIO CALL T120M ;120msec待ち movlw 30H ;ブレーキランプ消灯 0011 0000 movwf GPIO CALL T120M ;120msec待ち DECFSZ LOOP1,F GOTO RLOOP ;四回ループ折り返し=ブレーキパカパカ CALL T120M ;600msec待ち CALL T120M CALL T120M CALL T120M CALL T120M CALL T120M ;600msec待ち 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