パトライトの製作

12C509を使ったパトライトのソースです。製作例は、おぐっちゃんRCパラダイスをご覧ください


;######################################################
; ナイトライダー風に流れる電飾 4LED用
; 残光が点滅するバージョン
;  12C509の7,6,3,2番ピンの順番で使用する
;######################################################

	list p=12c509
	include <p12c509.inc>
	__config _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC

;変数の定義

W1M	EQU	07H
ACT_T	EQU	08H
W10M	EQU	09H


;%%%%%%%%%% PIC 初期設定

RESET
	GOTO	START
	ORG	04H
START
	MOVLW	09FH
	OPTION
	GOTO	SETUP

;%%%%%%%%%% サブルーチン

T10M				;10ミリ秒待つルーチン

	MOVLW	0AH
	MOVWF	W10M

W10				;1ミリ秒待つルーチン

	MOVLW	0F9H
	MOVWF	W1M
W1
	NOP
	DECFSZ	W1M,	F
	GOTO	W1

	DECFSZ	W10M,	F
	GOTO	W10
	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番目の動作の始まり
	;流れる時間の調整 ACT_Tが2で0.2秒で流れる

	MOVLW	02H		;ACT1を2回繰り返す
	MOVWF	ACT_T

ACT1

	MOVLW	01H		;0000 0001
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 残光の比調整
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ

	MOVLW	03H		;0000 0011
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 1つ目の尾は30%の光量
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ

	MOVLW	11H		;0001 0001
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 2つ目の尾は10%の光量

	DECFSZ	ACT_T,	F
	GOTO	ACT1


;### 2番目の動作の始まり
	;流れる時間の調整 ACT_Tが2で0.2秒で流れる

	MOVLW	02H		;ACT1を2回繰り返す
	MOVWF	ACT_T

ACT2

	MOVLW	20H		;0010 0000
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 残光の比調整
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ

	MOVLW	21H		;0010 0001
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 1つ目の尾は30%の光量
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ

	MOVLW	22H		;0010 0010
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 2つ目の尾は10%の光量

	DECFSZ	ACT_T,	F
	GOTO	ACT2


;### 3番目の動作の始まり
	;流れる時間の調整 ACT_Tが2で0.2秒で流れる

	MOVLW	02H		;ACT1を2回繰り返す
	MOVWF	ACT_T

ACT3

	MOVLW	10H		;0001 0000
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 残光の比調整
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ

	MOVLW	30H		;0011 0000
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 1つ目の尾は30%の光量
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ

	MOVLW	11H		;0001 0001
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 2つ目の尾は10%の光量

	DECFSZ	ACT_T,	F
	GOTO	ACT3


;### 4番目の動作の始まり
	;流れる時間の調整 ACT_Tが2で0.2秒で流れる

	MOVLW	02H		;ACT1を2回繰り返す
	MOVWF	ACT_T

ACT4

	MOVLW	02H		;0000 0010
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 残光の比調整
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ

	MOVLW	12H		;0001 0010
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 1つ目の尾は30%の光量
	CALL	T10M		;10m秒待つ
	CALL	T10M		;10m秒待つ

	MOVLW	22H		;0010 0010
	MOVWF	GPIO

	CALL	T10M		;10m秒待つ 2つ目の尾は10%の光量

	DECFSZ	ACT_T,	F
	GOTO	ACT4

	GOTO	LOOP

	END


ご意見は、電子掲示板にどうぞ。

RC PLAZAトップへ