	INCLUDE		"P16F74.INC"
	LIST 		P=16F74, R=DEC

PA	EQU		05h		;A porty
PB	EQU		06h		;B
PC	EQU		07h		;C
PD	EQU		08h		;D
PE	EQU		09h		;E

c1	EQU		20h		;pomocná proměnná pro čekání/cykly
c2	EQU		21h		;pomocná proměnná pro čekání/cykly
c3	EQU		22h		;pomocná proměnná pro čekání/cykly
c4	EQU		24h		;pomocná proměnná pro čekání/cykly

	ORG		00h
	GOTO		start


start	BCF		STATUS,RP1	;vstupy/výstupy
	BSF		STATUS,RP0
	MOVLW		b'00000001'
	MOVWF		TRISA
	MOVLW		0
	MOVWF		TRISB
	MOVLW		0
	MOVWF		TRISC
	MOVLW		b'10000000'
	MOVWF		TRISD
	MOVLW		0
	MOVWF		TRISE

	MOVLW		b'00000000'	;nastavení referenčního napětí a funkce portů PA a PE.
	MOVWF		ADCON1

	BCF		STATUS,RP1
	BCF		STATUS,RP0

	MOVLW		b'11000001'	;nastavení A/D převodníku
	MOVWF		ADCON0

;---------------------------------------
	BSF		PD,0
	BSF		PD,1
	BSF		PD,2
	BSF		PD,3
	MOVLW		b'10101010'
	MOVWF		PB
	MOVWF		PC
;---------------------------------------


	CALL		cekani1

	GOTO		start2












;---------------------------------------
; HLAVNÍ PROGRAM
;---------------------------------------

start2	CLRWDT










;---------------------------------------
	CALL		cekani1
	BSF		PD,1
	BSF		PD,2
	CALL		cekani3
	BCF		PD,1
	BCF		PD,2
	CALL		cekani1
	BSF		PD,0
	BSF		PD,3
	CALL		cekani3
	BCF		PD,0
	BCF		PD,3
	CALL		cekani1
;---------------------------------------

	BCF		PB,7
	BCF		PC,0
	CALL		cekani2
	BCF		PB,6
	BCF		PC,1
	CALL		cekani2
	BSF		PB,7
	BCF		PB,5
	BSF		PC,0
	BCF		PC,2
	CALL		cekani2
	BSF		PB,6
	BCF		PB,4
	BSF		PC,1
	BCF		PC,3
	CALL		cekani2
	BSF		PB,5
	BCF		PB,3
	BSF		PC,2
	BCF		PC,4
	CALL		cekani2
	BSF		PB,4
	BCF		PB,2
	BSF		PC,3
	BCF		PC,5
	CALL		cekani2
	BSF		PB,3
	BCF		PB,1
	BSF		PC,4
	BCF		PC,6
	CALL		cekani2
	BSF		PB,2
	BCF		PB,0
	BSF		PC,5
	BCF		PC,7
	CALL		cekani2
	BSF		PB,1
	BSF		PC,6
	CALL		cekani2
	BSF		PB,0
	BSF		PC,7

;---------------------------------------

	BSF		PD,1
	BSF		PD,2
	CALL		cekani2
	CALL		cekani2
	BCF		PD,1
	BCF		PD,2
	CALL		cekani2
	CALL		cekani2
	BSF		PD,0
	BSF		PD,3
	CALL		cekani2
	CALL		cekani2
	BCF		PD,0
	BCF		PD,3
	CALL		cekani2
	CALL		cekani2
	BSF		PD,1
	BSF		PD,2
	CALL		cekani2
	CALL		cekani2
	BCF		PD,1
	BCF		PD,2
	CALL		cekani2
	CALL		cekani2
	BSF		PD,0
	BSF		PD,3
	CALL		cekani2
	CALL		cekani2
	BCF		PD,0
	BCF		PD,3
	CALL		cekani2
	CALL		cekani2
	BSF		PD,1
	BSF		PD,2
	CALL		cekani2
	CALL		cekani2
	BCF		PD,1
	BCF		PD,2
	CALL		cekani2
	CALL		cekani2
	BSF		PD,0
	BSF		PD,3
	CALL		cekani2
	CALL		cekani2
	BCF		PD,0
	BCF		PD,3

;---------------------------------------













;---------------------------------------
	CALL		cekani1
	BSF		PD,1
	BSF		PD,2
	CALL		cekani3
	BCF		PD,1
	BCF		PD,2
	CALL		cekani1
	BSF		PD,0
	BSF		PD,3
	CALL		cekani3
	BCF		PD,0
	BCF		PD,3
	CALL		cekani1
;---------------------------------------

	BCF		PB,7
	BCF		PC,0
	CALL		cekani2
	BCF		PB,6
	BCF		PC,1
	CALL		cekani2
	BSF		PB,7
	BCF		PB,5
	BSF		PC,0
	BCF		PC,2
	CALL		cekani2
	BSF		PB,6
	BCF		PB,4
	BSF		PC,1
	BCF		PC,3
	CALL		cekani2
	BSF		PB,5
	BCF		PB,3
	BSF		PC,2
	BCF		PC,4
	CALL		cekani2
	BSF		PB,4
	BCF		PB,2
	BSF		PC,3
	BCF		PC,5
	CALL		cekani2
	BSF		PB,3
	BCF		PB,1
	BSF		PC,4
	BCF		PC,6
	CALL		cekani2
	BSF		PB,2
	BCF		PB,0
	BSF		PC,5
	BCF		PC,7
	CALL		cekani2
	BSF		PB,1
	BSF		PC,6
	CALL		cekani2
	BSF		PB,0
	BSF		PC,7

;---------------------------------------
	BSF		PD,0
	BSF		PD,1
	BSF		PD,2
	BSF		PD,3
;---------------------------------------

	CALL		cekani2
	CALL		cekani2
	CALL		cekani2
	CALL		cekani2

;---------------------------------------
	BCF		PD,0
	BCF		PD,1
	BCF		PD,2
	BCF		PD,3
;---------------------------------------


	GOTO		start2



















;---------------------------------------
; ADC analogově digitální převodník
;---------------------------------------

adc	BSF		ADCON0,2	;A/D převod
prevod	BTFSC		ADCON0,2
	GOTO		prevod

	RETURN


;-----------------------------------------------------------------------------------
; ČEKÁNÍ
;-----------------------------------------------------------------------------------

cekani1
	CALL		adc
	MOVFW		ADRES
	MOVWF		c3
cek3	MOVLW		12
	MOVWF		c2
cek2	MOVLW		60
	MOVWF		c1
	CLRWDT
cek1	DECFSZ		c1,1
	GOTO		cek1
	DECFSZ		c2,1
	GOTO		cek2
	DECFSZ		c3,1
	GOTO		cek3
	RETURN

;---------------------------------------

cekani2
	CLRWDT
	BTFSC		PD,7
	CALL		brzda
	MOVLW		40
	MOVWF		c2
cek5	MOVLW		255
	MOVWF		c1
cek4	DECFSZ		c1,1
	GOTO		cek4
	DECFSZ		c2,1
	GOTO		cek5
	CLRWDT
	RETURN

;---------------------------------------

cekani3
	MOVLW		255
	MOVWF		c1
cek7	DECFSZ		c1,1
	GOTO		cek7
	CLRWDT
	RETURN

;---------------------------------------

brzda
	MOVLW		255
	MOVWF		PB
	MOVWF		PC
	BSF		PD,0		; rozsvit cerveny
	BSF		PD,1
	BSF		PD,2
	BSF		PD,3

	BCF		PB,0		; rozsvit zadni dve zluty
	BCF		PC,7

	CALL		cekani2
	CALL		cekani2
	BSF		PD,4		; plny proud do cervenych

	BTFSS		PD,7		; brzdi se jeste ?
	GOTO		konec_brzda
	GOTO		brzda


konec_brzda

	BCF		PD,4		; vypni plnej proud
	CALL		cekani2
	CALL		cekani2
	CALL		cekani2
	CALL		cekani2
	CALL		cekani2
	CALL		cekani2
	RETURN

;---------------------------------------

	END