; Генератор базинтервального пакета АОН (290-57-01 категория "0")
; GP4 - выход нижней частоты 
; GP5 - выход верхней частоты

	list p=12f629

            #include <P12F629.INC>

            __CONFIG  00184H       ; Бит защиты выключен
                                   ; Сброс по снижению напр.питания ЗАПРЕЩЕН
                                   ; Используется внутренний сброс, вывод
                                   ; RA5/MCLR работает как вход
                                   ; Таймер включения питания РАБОТАЕТ
                                   ; WDT (СОБАКА) выключен 
                                   ; Работает внутренний генератор
 
;---------------------------------------------------------------
;----------------------------------------------------------
; регистры общего назначения
 cblock	20h
 
 TEMP
 TEMP1
 TEMPL
 TEMPH
 TEMPP
 
 endc

;начало исполняемого кода
	;ORG     00h
  	GOTO    START


;вектор прерывания
	ORG		04h
	GOTO	PER

; начало программы
  	;ORG     010h



INIT	
	
	BSF 	STATUS, RP0	 	; банк 1

	CALL	3FFh			; калибруем внутр. генератор
	MOVFW	OSCCAL	

	MOVLW	B'10000001'		; настройка OPTION
	MOVWF	OPTION_REG		; настройка делителя ТМR0 - 1:4, дискретность 4 мкс
	MOVLW	B'01100000'
	MOVWF	INTCON			; разр. прер. по периполн. таймера TMR0

	MOVLW	B'00000001'
	MOVWF	PIE1			; разр. прер. по периполн. таймера TMR1


	MOVLW   B'00000000'		; порт все на выход
 	MOVWF   TRISIO

	CLRF	VRCON 			; ВЫКЛЮЧИТЬ И.О.Н.

	
	BCF 	STATUS, RP0	 	; банк 0
	MOVLW	B'00100001'		; настройка OPTION
	MOVWF	T1CON 			; настройка делителя ТМR1 - 1:4, дискретность 4 мкс


	MOVLW   B'00000111'
	MOVWF	CMCON			; выключить компараторы
	CLRF	PIR1 			; сброс всех прерываний

	clrf    GPIO       		; Сбросим порт
       
	
	return




; ВХОД В ПРЕРЫВАНИЕ ПО ПЕРЕПОЛНЕНИЮ ТАЙМЕРОВ 
; ДЛЯ РАБОТЫ НА ОДИН ВЫХОД УСТАНОВИТЬ ВСЕ GPIO НА ОДИН И ТОТ ЖЕ ПОРТ
PER

	btfsc	PIR1,0
	goto	WWW

	bcf		INTCON,2

	btfsc	PIR1,0
	bcf		PIR1,0

	MOVFW	TEMPL
	MOVWF	TMR0

	BTFSS	GPIO,4    		; ЕСЛИ ПОРТ В "0"
	GOTO	$+2

	GOTO	$+3	

	BSF		GPIO,4			; УСТ. В "1"

	GOTO	$+2

	BCF		GPIO,4			; УСТ. В "0"	



	goto	WWWW

WWW
	bcf		PIR1,0

	btfsc	INTCON,2
	bcf		INTCON,2
 
	MOVFW	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H

	BTFSS	GPIO,5    		; ЕСЛИ ПОРТ В "0" 
	GOTO	$+2

	GOTO	$+3	

	BSF		GPIO,5			; УСТ. В "1"

	GOTO	$+2

	BCF		GPIO,5			; УСТ. В "0"	

WWWW	


	RETFIE			




;ФОРМИРОВАНИЕ СИГНАЛА "НАЧАЛО" 1100 Гц х 1700 Гц В ТЕЧЕНИИ 40 mS
NACH



	MOVLW	.146
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.186
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD


	return



;ФОРМИРОВАНИЕ СИГНАЛА "ПОВТОР" 1300 Гц х 1700 Гц В ТЕЧЕНИИ 40 mS
POVT



	MOVLW	.163
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.186
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD


	return



;ФОРМИРОВАНИЕ СИГНАЛА "0" 1300 Гц х 1500 Гц В ТЕЧЕНИИ 40 mS
N_O


	MOVLW	.163
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.176
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD

	return


;ФОРМИРОВАНИЕ СИГНАЛА "1" 700 Гц х 900 Гц В ТЕЧЕНИИ 40 mS
N_1


	MOVLW	.81
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.121
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD



	return


;ФОРМИРОВАНИЕ СИГНАЛА "2" 700 Гц х 1100 Гц В ТЕЧЕНИИ 40 mS
N_2


	MOVLW	.81
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.146
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD



	return


;ФОРМИРОВАНИЕ СИГНАЛА "3" 900 Гц х 1100 Гц В ТЕЧЕНИИ 40 mS
N_3


	MOVLW	.121
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.146
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD



	return


;ФОРМИРОВАНИЕ СИГНАЛА "4" 700 Гц х 1300 Гц В ТЕЧЕНИИ 40 mS
N_4


	MOVLW	.81
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.163
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD



	return


;ФОРМИРОВАНИЕ СИГНАЛА "5" 900 Гц х 1300 Гц В ТЕЧЕНИИ 40 mS
N_5


	MOVLW	.121
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.163
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD



	return

;ФОРМИРОВАНИЕ СИГНАЛА "6" 1100 Гц х 1300 Гц В ТЕЧЕНИИ 40 mS
N_6


	MOVLW	.146
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.163
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD



	return

;ФОРМИРОВАНИЕ СИГНАЛА "7" 700 Гц х 1500 Гц В ТЕЧЕНИИ 40 mS
N_7


	MOVLW	.81
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.176
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD



	return

;ФОРМИРОВАНИЕ СИГНАЛА "8" 900 Гц х 1500 Гц В ТЕЧЕНИИ 40 mS
N_8


	MOVLW	.121
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.176
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD



	return


;ФОРМИРОВАНИЕ СИГНАЛА "9" 1100 Гц х 1500 Гц В ТЕЧЕНИИ 40 mS
N_9


	MOVLW	.146
	MOVWF	TEMPL
	MOVWF	TMR0



	MOVLW	.176
	MOVWF	TEMPH
	MOVWF	TMR1L

	MOVLW	.255
	MOVWF	TMR1H



	bcf		INTCON,2
	bcf		PIR1,0

	bsf		INTCON,7
	

	CALL	ZAD



	return



; ЗАДЕРЖКА НА ВЫПОЛНЕНИЕ - 40 mS
ZAD

	MOVLW	.100
	MOVWF	TEMP

	MOVLW	.115
	MOVWF	TEMP1

	DECFSZ	TEMP1
	GOTO	$-1

	DECFSZ	TEMP
	GOTO	$-5

	return	



START	

	call 	INIT

	MOVLW	.3
	MOVWF	TEMPP

NNN	CALL	NACH
	
	CALL	N_1

	CALL	N_1
	CALL	N_O

	CALL	N_7
	CALL	N_5

	CALL	N_O
	CALL	N_9
	CALL	N_2


	DECFSZ	TEMPP
	GOTO	NNN

	bcf		INTCON,7

	GOTO	$	




	END



