;
; окюбмши осяй х рнплнфемхе дор.
; 4 тхйяхпнбюммше яйнпнярх 50-60-80-100 %.
; пюгпюанрюк мхйнкюи гюеж.
; дкъ ябнандмнцн хяонкэгнбюмхъ пюдхнкчахрекълх.
; югнб, пнярнбяйни.
; saes@mail.ru
; опнцпюллю = ABTOU.ASM
; бепяхъ: 13-06-10.
; юяяелакеп х нркюдвхй: MPLAB IDE, бепяхъ: 5.70.40.
;
	LIST	P=PIC16F676
            #INCLUDE <P16F676.INC>
            __CONFIG 3194H
;====================================================
; хяонкэгсеряъ бмсрпеммхи цемепюрнп вюярнрни 4,0 MцЖ.
;====================================================
; Rя0 - RC3 - бшундш сопюбкемхъ йкчвюлх .
; RC4, RC5 - бундю мюопъфемхъ я ас.
; RA4, RA5 - йндхпнбюмхъ яйнпнярх.
;=========================================
	CBLOCK	H'20'
CEK	;бпелъ оюсгш.
MSK	;
FLAG	;пецхярп ткюцнб.
FLAG1	;
WTEMP	;бпелеммши.
TEMP	;бпелеммши.
STEMP	;бпелеммши.
FTEMP	;бпелеммши.
	ENDC
;=====================================
;FLAG	0 - 3 яей.
;	1 - осяйю.
;	2 - пебепя.
;	3 - ярно.
;	4 - 50 %.
;	5 - 60 %.
;	6 - 80 %.
;	7 - опепшбюмхъ.
;FLAG1	1 - пюанрю.
;	2 - мер пюанре.
;=======================
; 1. осяй.
;=======================
	ORG     0
        GOTO   INIT
        ORG     4
        GOTO   PRER
;======================
; 8. хмхжхюкхгюжхъ.
;======================
INIT
 MOVLW	38
 BSF	STATUS,5	;оепеундхл б аюмй 1.
 MOVWF	OSCCAL^0x90	;люйяхлюкэмюъ вюярнрю.
 MOVLW	B'00000011'	;й=16.
 MOVWF	OPTION_REG^80H	;пегхярнпш бйкчвемш.
 MOVLW	B'10100000'	;пюгпеьемхе опепшбюмхи нр TMR0.
 MOVWF	INTCON		;
 CLRF	PIE1^80H	;гюопеыемш бяе оепхтепхимше опепшбюмхъ. 
 MOVLW	B'00111111'	;бяе - бундю.
 MOVWF	TRISA^80H	;
 MOVLW	B'00110000'	;4, 5 - бундю.
 MOVWF	TRISC^80H	;0-3 бшундш.
 CLRF	ANSEL		;бяе бундю жхтпнбше.
 CLRF	VRCON		;хнм нрйкчвем.
 CLRF	PCON^80H	;опепшбюмхъ он охрюмхч гюопеыемш.
 MOVLW	B'00110000'	;
 MOVWF	WPUA		;ондръцхбючыхе пегхярнпш бйкчвемш.
 CLRF	IOCA		;опепшбюмхъ гюопеыемш.
 BCF	STATUS,5	;оепеундхл б аюмй 0.
 CALL	ZERO		;бшундш бшйкчвемш.
 CLRF	PORTA		;
 CLRF	T1CON		;рюилеп 1 нрйкчвем.
 MOVLW	7
 MOVWF	CMCON		;йнлоюпюрнп бшйкчвем.
 MOVF	CMCON,1
 CLRF	FLAG		;бяе намскъел х сярюмюбкхбюел.
 CLRF	FLAG1
;==============================
; 3. лскэрхокейянп.
;==============================
ZDEM
	BCF	FLAG,7	;опепшбюмхъ.
	CALL	OPA
	CALL	PEBEPC
	BTFSC	FLAG1,2	;еякх пюанрю пюгпеьемю,
	GOTO	$+3
	BTFSS	FLAG,1	;рн опнбепхл осяй.
	CALL	PYCK
	BTFSS	FLAG,7	;опепшбюмхъ.
	GOTO	$-1
	BTFSC	FLAG1,2	;еякх мер пюанрш,
	GOTO	ZDEM	;рн бепмеляъ.
	BTFSS	FLAG,1	;еякх осяй ме бшонкмем,
	GOTO	ZDEM	;рн бепмеляъ.
	BSF	FLAG1,1	;пюанрю.
	BTFSC	FLAG,2	;пебепя?
	GOTO	$+9	;дю.
	BTFSC	FLAG,4	;мер.
	GOTO	V50
	BTFSC	FLAG,5
	GOTO	V60
	BTFSC	FLAG,6
	GOTO	V80
	GOTO	V100
	GOTO	ZDEM
	BTFSC	FLAG,4
	GOTO	RV50
	BTFSC	FLAG,5
	GOTO	RV60
	BTFSC	FLAG,6
	GOTO	RV80
	GOTO	RV100
	GOTO	ZDEM
PEBEPC
	BTFSC	PORTC,4	;еякх 0
	GOTO	PEVE	;01
	BTFSC	PORTC,5	;х 0, рн намскъел
	GOTO	PRAM	;10
	BTFSC	FLAG1,1	;еякх пюанрю,
	BSF	FLAG,3	;рн бйкчвхл ярно.
	BTFSC	FLAG,3
	RETURN
	CALL	ZERO	;бяе намскъел.
	BSF	FLAG1,2	;мер пюанре.
	BCF	FLAG1,1	;яапня пюанрш.
	RETURN
PRAM
	BTFSC	FLAG1,2
	BCF	FLAG1,2	;ямхлел гюопер пюанрш.
	BTFSS	FLAG,2
	RETURN
	BTFSS	FLAG1,1	;еякх ашкю пюанрю,
	GOTO	$+3
	BSF	FLAG,3	;рн бйкчвхл ярно.
	RETURN
	BCF	FLAG,2	;опълни унд.
	BCF	FLAG,1	;мсфем осяй.
	BSF	PORTC,1	;
	BSF	PORTC,2	;
	RETURN
PEVE
	BTFSC	FLAG1,2
	BCF	FLAG1,2	;ямхлел гюопер пюанрш.
	BTFSC	FLAG,2
	RETURN
	BTFSS	FLAG1,1	;еякх ашкю пюанрю,
	GOTO	$+3
	BSF	FLAG,3	;рн бйкчвхл ярно.
	RETURN
	BSF	FLAG,2	;бйкчвхл пебепя.
	BCF	FLAG,1	;мсфем осяй.
	BSF	PORTC,3	;
	BSF	PORTC,0	;
	RETURN
OPA
	BTFSC	PORTA,4	;
	GOTO	OPA1
	BTFSS	PORTA,5
	GOTO	$+5
	BSF	FLAG,5	;10-60
	BCF	FLAG,6
	BCF	FLAG,4
	RETURN
	BCF	FLAG,6	;00-100
	BCF	FLAG,5
	BCF	FLAG,4
	RETURN
OPA1
	BTFSS	PORTA,5	;
	GOTO	$+5
	BSF	FLAG,4	;11-50
	BCF	FLAG,5
	BCF	FLAG,6
	RETURN
	BSF	FLAG,6	;01-80
	BCF	FLAG,5
	BCF	FLAG,4
	RETURN
ZERO
	BSF	PORTC,2
	BSF	PORTC,1
	BSF	PORTC,0
	BSF	PORTC,3
	CLRF	CEK
	CLRF	MSK
	RETURN
;=============================
;  осяй.
;=============================
PYCK
	BTFSC	FLAG,1
	GOTO	$+3
	BTFSC	FLAG,3	;
	RETURN
	BTFSC	FLAG,2	;пебепя
	GOTO	RPYCK
	BCF	PORTC,3
	BCF	PORTC,0	;дкхрекэмнярэ сбекхвхбюеряъ.
	CALL	PUSPY	;
	BSF	PORTC,0	;
	BTFSS	FLAG,0
	RETURN
	BCF	FLAG,0
	BSF	FLAG,1	;осяй нрпюанрюм.
	BCF	FLAG1,1
	RETURN
PUSPY
	TSTF	CEK	;
	BTFSS	STATUS,Z
	GOTO	$+3
	MOVLW	1
	GOTO	$+2
	MOVFW	CEK	;вхякн жхйкнб, слмнфеммне мю CEK.
	ADDLW	-1	;бшврел 1.
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	BTFSS	STATUS,2;еякх 0, рн опносярхл.
	GOTO	$-.30;	;бепмеляъ мю N юдпеяю мюгюд.
	RETURN
RPYCK
	BCF	PORTC,1
	BCF	PORTC,2	;дкхрекэмнярэ сбекхвхбюеряъ.
	CALL	PUSPY	;
	BSF	PORTC,2	;
	BTFSS	FLAG,0
	RETURN
	BCF	FLAG,0
	BSF	FLAG,1
	BCF	FLAG1,1
	RETURN
;=============================
;  50
;=============================
V50
	BTFSS	FLAG,1
	GOTO	ZDEM
	BCF	PORTC,3	;
	BSF	PORTC,0	;дкхрекэмнярэ слемэьюеряъ.
	CALL	PUS100	;
	CALL	PUS100	;
	BTFSC	FLAG,3	;ярно
	CALL	PUSPY
	BCF	PORTC,0	;
	BTFSS	FLAG,0	;еякх онкмюъ нрпюанрйю ярною,
	GOTO	ZDEM
	CALL	ZERO	;рн намскъел.
	BCF	FLAG,0
	BCF	FLAG,1
	BCF	FLAG,3
	BCF	FLAG1,1
	GOTO	ZDEM
RV50
	BCF	PORTC,1	;
	BSF	PORTC,2	;дкхрекэмнярэ слемэьюеряъ.
	CALL	PUS100	;
	CALL	PUS100	;
	BTFSC	FLAG,3	;ярно
	CALL	PUSPY
	BCF	PORTC,2	;
	BTFSS	FLAG,0
	GOTO	ZDEM
	CALL	ZERO
	BCF	FLAG,0
	BCF	FLAG,3
	BCF	FLAG,1
	BCF	FLAG1,1
	GOTO	ZDEM
PUS100
	MOVLW	.250	;вхякн жхйкнб, слмнфеммне мю 250.
	ADDLW	-1	;бшврел 1.
	BTFSS	STATUS,2;еякх 0, рн опносярхл.
	GOTO	$-2	;бепмеляъ мю 2 юдпеяю мюгюд.
	RETURN
;=============================
;  60
;=============================
V60
	BTFSS	FLAG,1
	GOTO	ZDEM
	BCF	PORTC,3	;
	BSF	PORTC,0	;
	CALL	PUS80	;
	CALL	PUS80	;
	BTFSC	FLAG,3	;ярно
	CALL	PUSPY
	BCF	PORTC,0	;
	BTFSS	FLAG,0
	GOTO	ZDEM
	CALL	ZERO
	BCF	FLAG,0
	BCF	FLAG,1
	BCF	FLAG,3
	BCF	FLAG1,1
	GOTO	ZDEM
RV60
	BCF	PORTC,1	;
	BSF	PORTC,2	;
	CALL	PUS80	;
	CALL	PUS80	;
	BTFSC	FLAG,3	;ярно
	CALL	PUSPY
	BCF	PORTC,2	;
	BTFSS	FLAG,0
	GOTO	ZDEM
	CALL	ZERO
	BCF	FLAG,0
	BCF	FLAG,3
	BCF	FLAG,1
	BCF	FLAG1,1
	GOTO	ZDEM
PUS80
	MOVLW	.200	;вхякн жхйкнб, слмнфеммне мю 100.
	ADDLW	-1	;бшврел 1.
	BTFSS	STATUS,2;еякх 0, рн опносярхл.
	GOTO	$-2	;бепмеляъ мю 2 юдпеяю мюгюд.
	RETURN
;=============================
;  80
;=============================
V80
	BTFSS	FLAG,1
	GOTO	ZDEM
	BCF	PORTC,3	;
	BSF	PORTC,0	;
	CALL	PUS40	;
	CALL	PUS40	;
	BTFSC	FLAG,3	;ярно
	CALL	PUSPY
	BCF	PORTC,0	;
	BTFSS	FLAG,0
	GOTO	ZDEM
	CALL	ZERO
	BCF	FLAG,0
	BCF	FLAG,1
	BCF	FLAG,3
	BCF	FLAG1,1
	GOTO	ZDEM
RV80
	BCF	PORTC,1	;
	BSF	PORTC,2	;
	CALL	PUS40	;
	CALL	PUS40	;
	BTFSC	FLAG,3	;ярно
	CALL	PUSPY
	BCF	PORTC,2	;
	BTFSS	FLAG,0
	GOTO	ZDEM
	CALL	ZERO
	BCF	FLAG,0
	BCF	FLAG,3
	BCF	FLAG,1
	BCF	FLAG1,1
	GOTO	ZDEM
PUS40
	MOVLW	.100	;вхякн жхйкнб, слмнфеммне мю 100.
	ADDLW	-1	;бшврел 1.
	BTFSS	STATUS,2;еякх 0, рн опносярхл.
	GOTO	$-2	;бепмеляъ мю 2 юдпеяю мюгюд.
	RETURN
;=========================
;  100
;=========================
V100
	BTFSS	FLAG,1
	GOTO	ZDEM
	BCF	PORTC,3	;
	BTFSS	FLAG,3
	BCF	PORTC,0	;
	BTFSS	FLAG,3	;ярно
	GOTO	ZDEM
	BSF	PORTC,0	;
	CALL	PUSPY
	BCF	PORTC,0	;
	BTFSS	FLAG,0
	GOTO	ZDEM
	CALL	ZERO
	BCF	FLAG,0
	BCF	FLAG,1
	BCF	FLAG,3
	BCF	FLAG1,1
	GOTO	ZDEM
RV100
	BCF	PORTC,1	;
	BTFSS	FLAG,3
	BCF	PORTC,2	;
	BTFSS	FLAG,3	;ярно
	GOTO	ZDEM
	BSF	PORTC,2	;
	CALL	PUSPY
	BCF	PORTC,2	;
	BTFSS	FLAG,0
	GOTO	ZDEM
	CALL	ZERO
	BCF	FLAG,0
	BCF	FLAG,3
	BCF	FLAG,1
	BCF	FLAG1,1
	GOTO	ZDEM
;================================================================
; 7. янупюмемхе х бняярюмнбкемхе гмювемхи пецхярпнб опх опепшбюмхх.
;================================================================
PRER
        MOVWF	WTEMP	;янупюмемхе гмювемхи пецхярпнб W х
        MOVFW	STATUS	;STATUS,
        MOVWF	STEMP	;
	BTFSS	CMCON,6
	BCF	PORTA,2
	BSF	FLAG,7	;
	BTFSC	FLAG,1
	GOTO	$+7	;
	BTFSC	FLAG,3	;ярно
	GOTO	ZERER
	BTFSS	FLAG,1	;осяй
	GOTO	PERER
	BTFSS	FLAG,1
	GOTO	ZERER	;намскемхе.
	BTFSC	FLAG,3	;ярно.
	GOTO	PERER
ZERER	CLRF	MSK
	CLRF	CEK
	BCF	FLAG,0
	GOTO	REPER
PERER
        INCF	MSK,1	;декхрекэ мю 10.
	BTFSS	FLAG,3	;ярно.
	GOTO	$+3
	MOVLW	.1	;бпелъ ярною.
	GOTO	$+2
	MOVLW	.10	;
	SUBWF	MSK,0	;
	BTFSS	STATUS,2;еякх пюбмн,
	GOTO	REPER	;
	CLRF	MSK
        INCF	CEK,1	;декхрекэ.
	BTFSS	FLAG,3	;ярно.
	GOTO	$+7
	BTFSS	FLAG,4
	GOTO	$+3
	MOVLW	.50	;бпелъ ярною.
	GOTO	$+2
	MOVLW	.70	;бпелъ ярною.
	GOTO	$+2
	MOVLW	.55	;бпелъ осяйю.
	SUBWF	CEK,0	;
	BTFSS	STATUS,2;еякх пюбмн,
	GOTO	REPER	;
	CLRF	CEK	;намскхл.
	BSF	FLAG,0
REPER                   ;бняярюмнбкемхе янупюмеммшу гмювемхи.
        MOVFW	STEMP	;бняярюмнбкемхе пецхярпнб:
        MOVWF	STATUS	;STATUS,
        MOVFW	FTEMP	;
        MOVWF	FSR	;FSR,
        MOVFW	WTEMP	;W.
        BCF	INTCON,2;яапюяшбюел ткюц опепшбюмхъ нр TMR0.
        RETFIE          ;бнгбпюр хг опепшбюмхъ.
;=========================================== 
   END
;===========================================

