;***********************************************************************************************
            list      	p=16F84a     	;
			#include	<p16F84A.inc>	;
			errorlevel	-302			;
            __CONFIG  	03FF1H       	; WDT выключен, бит защиты не установлен
;***********************************************************************************************
BUTT		EQU			0				; Кнопка на RA0
LED			EQU			5				; Светодиод на RB5
;***********************************************************************************************
			CBLOCK		0CH				; Блок переменных
			Temp						;
			Temp_1						;
			Temp_2						;
			ENDC						;
;***********************************************************************************************
            ORG        	0x000           ;
			goto		START			;
;***********************************************************************************************
SW_025		call		LOAD_025		; Загрузка констант для задержки  и сама задержка
			bsf			PORTB, LED		; Зажечь свд
			call		LOAD_025		; ~0,25 ceк
			bcf			PORTB, LED		; Погасить свд
			btfsc		PORTA, BUTT		; Кнопка нажата?
			goto		SW_025			; Нет, продолжим с той-же частотой
;***********************************************************************************************
SW_05		call		LOAD_05			; Нажата, загр. констант для зад. ~0,5 ceк и задержка
			bsf			PORTB, LED		; Зажечь свд
			call		LOAD_05			; ~0,5 ceк
			bcf			PORTB, LED		; Погасить свд
			btfsc		PORTA, BUTT		; Кнопка отпущена?
			goto		SW_025			; Да, по 0,25 сек
			goto		SW_05			; Нет, по 0,5 сек
;***********************************************************************************************
LOAD_025	movlw       .167
            movwf       Temp
            movlw       .69
            movwf       Temp_1
            movlw       .2
            movwf       Temp_2
			goto		PAUSE
;***********************************************************************************************
LOAD_05		movlw       .83
            movwf       Temp
            movlw       .138
            movwf       Temp_1
            movlw       .3
            movwf       Temp_2
;***********************************************************************************************
PAUSE       decfsz      Temp, f
            goto        PAUSE
            decfsz      Temp_1, f
            goto        PAUSE
            decfsz      Temp_2, f
            goto        PAUSE
			return
;***********************************************************************************************
START		clrf		PORTA			;
			clrf		PORTB			;
			bsf			STATUS, RP0		; 1-й банк
			movlw		b'00000001'		; RA0 на вход,
			movwf		TRISA			; остальные на выход
			clrf		TRISB			; Все RB на выход
			bcf			STATUS, RP0		; 0-й банк
			goto		SW_025			;
;***********************************************************************************************
			END