	LIST	p=PIC10F200
	#include <P10F200.INC>
;----------------------------------------------------------------------
	__CONFIG	_WDTE_OFF&_CP_OFF&_MCLRE_OFF
;----------------------------------------------------------------------
TIMELEDFLASHON		equ	.13	; *8mS
TIMECOMPRESSORON	equ	.30	; *2sec
TIMERESTARTCOMPRESSOR	equ	.11	; *1min
;----------------------------------------------------------------------
BITREG1			equ	10h	; Bit register
CT2SEC			equ	11h	; Counter to 2 second
CTMIN			equ	12h	; Counter to 1 minute
CTRESTARTCOMPRESSOR	equ	13h	; Counter to restart compressor
CTFLASHLEDON		equ	14h	; Counter Led On
CTCOMPRESSORON		equ	15h	; Counter Compressor On
;----------------------------------------------------------------------
#define	_LED		GPIO,0
#define	_COMPRESSOR	GPIO,1
#define	_TESTOUT	GPIO,2		; Test ONLY for testing OSCCAL Data!!! 125Hz!!!
;----------------------------------------------------------------------
#define	_REQLEDON	BITREG1,0
#define	_REQCOMPON	BITREG1,1
;**********************************************************************		
	org 0
START
;	movlw	0		; Manual set OSCAL data / Preset OSCAL data (if commented).
	movwf	OSCCAL
	bcf	OSCCAL,FOSC4
;--------------------------------
	movlw	b'00001000'
	movwf	GPIO
	TRIS	GPIO
;
	movlw	b'00010100'	; TMR0: Fin = 1MHz; Prescaller = 32
	OPTION
;----------------------------------------------------------------------
	clrf	BITREG1
;
	movlw	TIMECOMPRESSORON
	movwf	CTCOMPRESSORON
;
	movlw	TIMELEDFLASHON
	movwf	CTFLASHLEDON
;======================================================================
MAIN
	movlw	TIMERESTARTCOMPRESSOR
	movwf	CTRESTARTCOMPRESSOR
;--------------------------------
MAIN1
	movlw	.30
	movwf	CTMIN
;--------------------------------
MAIN2
	movlw	.250
	movwf	CT2SEC
;----------------------------------------------------------------------
MAIN3
; Check TMR0 data (counter to 250)
	movf	TMR0,W
	btfss	STATUS,Z
	goto	MAIN3
;
	movlw	.5
	movwf	TMR0
;----------------------------------------------------------------------
; 125Hz
;--------------------------------
; Test ONLY for testing OSCCAL Data!!! 125Hz!!!
	bsf	_TESTOUT
	bcf	_TESTOUT
;----------------------------------------------------------------------
; Check counter LedON & set serv bit.
	bcf	_REQLEDON
	movf	CTFLASHLEDON,W
	btfss	STATUS,Z
	bsf	_REQLEDON
;
; Check counter CompressorON & set serv bit.
	bcf	_REQCOMPON
	movf	CTCOMPRESSORON,W
	btfss	STATUS,Z
	bsf	_REQCOMPON
;--------------------------------
; Led on/Off
	btfsc	_REQLEDON
	bsf	_LED
	btfss	_REQLEDON
	bcf	_LED
;-------
; Compressor on/Off
	btfsc	_REQCOMPON
	bsf	_COMPRESSOR
	btfss	_REQCOMPON
	bcf	_COMPRESSOR
;----------------------------------------------------------------------
; Dec Time LED ON (if ON)
	btfsc	_REQLEDON
	decf	CTFLASHLEDON,F
;--------------------------------
; Count to 2 second
	decfsz	CT2SEC,F
	goto	MAIN3
;----------------------------------------------------------------------
; 2 Sec
;--------------------------------
; REQ Led On if Compressor is ON
	movlw	TIMELEDFLASHON
	btfsc	_REQCOMPON
	movwf	CTFLASHLEDON
;--------------------------------
; Dec Time Compressor ON (if ON)
	btfsc	_REQCOMPON
	decf	CTCOMPRESSORON,F
;----------------------------------------------------------------------
; Count to 1 minute
	decfsz	CTMIN,F
	goto	MAIN2
;----------------------------------------------------------------------
; 1 Min
;----------------------------------------------------------------------
	decfsz	CTRESTARTCOMPRESSOR,F
	goto	MAIN1
;----------------------------------------------------------------------
; REQ Compressor ON
	movlw	TIMECOMPRESSORON
	movwf	CTCOMPRESSORON
	goto	MAIN
;----------------------------------------------------------------------
;----------------------------------------------------------------------
	end
