;	サーボをダイレクトに動かす
;	パルス出力のテスト
;Ver1.0.0	2000.06.20	By T.HINOKI

		LIST		P=16C84,R=DEC
	STATUS	EQU	3
	PG	EQU	5
	PORTB	EQU	6
	TRISB	EQU	H'86'
	COUNT1	EQU	H'10'	;カウント用変数


	CLRF	PORTB		;クリア PORTB
	BSF	STATUS,PG	;Change Page1
	CLRF	TRISB		;TRISB=0  All output
	BCF	STATUS,PG	;Change Page0
LOOP1

	MOVLW	B'00000001'	;PORTBの「0」(RB0)をON
	MOVWF	PORTB		;

	MOVLW	150		;ここの値を変えて、テストする
	CALL	TIM3		;100～200でサーボを動かす、中心は150

	MOVLW	B'00000000'	;PORTBの「0」(RB0)をOFF
	MOVWF	PORTB		;

	MOVLW	255		;次のパルスを送るまでの待ち時間
	CALL	TIM3
	MOVLW	255
	CALL	TIM3
	MOVLW	255
	CALL	TIM3
	MOVLW	255
	CALL	TIM3
	MOVLW	255
	CALL	TIM3

	GOTO	LOOP1

;------------  20サイクル分待ち
TIM1
	GOTO	$+1	;2
	GOTO	$+1	;+2=4
	GOTO	$+1	;+2=6
	GOTO	$+1	;+2=8
	GOTO	$+1	;+2=10
	GOTO	$+1	;+2=12
	GOTO	$+1	;+2=14
	GOTO	$+1	;+2=16
	GOTO	$+1	;+2=18
	RETURN		;+2=20

;------------ 25サイクル×Ｗ　分だけ待つ
TIM3
	MOVWF	COUNT1		;1
TIM4
	CALL	TIM1		;20+2=22
	DECFSZ	COUNT1,1	;+1=23
	GOTO	TIM4		;+2=25
	RETURN			;+2+(COUNT2*25)+1-1


	END
