; сигнализатор влажности
	#include <p12f629.inc>

 __config _PWRTE_ON  &_MCLRE_OFF &_WDT_ON &_INTRC_OSC_NOCLKOUT &_CP_ON &_CPD_OFF &_BODEN_OFF

		org 0
	goto	start

; --------------------------- регистры
timer_delay	equ  20
timer_sound_L	equ  21
timer_sound_H	equ  22

; --------------------------- константы
; GPIO
d_tris		equ  b'001000'
SOUND_1	equ  0
SOUND_2	equ  1
INPUT		equ  3

d_gpio_init	equ  b'000000'
d_sound_1	equ  b'000001'
d_sound_2	equ  b'000010'

d_option	equ  b'00001111'	; WDT c задержкой 2.3 сек
time_sound	equ  .6		; длительность звука (x 146 mc)

; ---------------------------
w		equ  0
f		equ  1

; _____________________________________
; _____________________________________
; задержки для формирования меандра выходной частоты
delay_1	goto	$+1
		clrwdt
delay_2	movlw	.92
		movwf	timer_delay
ckl_delay	decfsz	timer_delay,f
		goto	ckl_delay
		return

; -------------------------------------
sound		movlw	time_sound
		movwf	timer_sound_H
		clrf	timer_sound_L
		
; меандр 3.5 кГц -> T/2 = 286 мкс
ckl_sound	movlw	d_sound_1
		movwf	GPIO
		call	delay_1
		
		movlw	d_sound_2
		movwf	GPIO
		call	delay_2
		
		decfsz	timer_sound_L,f
		goto	ckl_sound
		
		decfsz	timer_sound_H,f
		goto	ckl_sound

		clrf	GPIO
		return
		

; _____________________________________
; инициализация регистров по включению питания
init		clrf	INTCON
		movlw d_option
		option
		movlw	7
		movwf	CMCON
		movlw	d_tris
		tris	GPIO
		movlw	d_gpio_init
		movwf	GPIO
		
	bsf	STATUS,RP0
		call	3FF
		movwf	OSCCAL
		clrf	PIE1
		clrf	WPU
		clrf	IOC
	bcf	STATUS,RP0
		
		return



; ===============================================
start		call	init

; _____________________________________ 2.3 cek
main_ckl	clrwdt
		sleep
		nop
		
		btfss	GPIO,INPUT
; датчик сработал - выдаем звук
		call	sound
		
		goto	main_ckl
	
	end
