#include 16C84.INC

#define debug	0

Dozadu	EQU	1
Dopredu	EQU	2
;--------------------------------------
Vpred_ON macro
	bsf	PORTA, Dopredu
	endm
;--------------------------------------
Vpred_OFF macro
	bcf	PORTA, Dopredu
	Delay	50
	bsf	PORTA, Dozadu		;zabrzdi
	Delay	125
	bcf	PORTA, Dozadu
	endm

;--- Macro na spozdeni 1ms az 255ms ---
Delay	macro	_ms
	movlw	_ms	
	movwf	CT2
	call	Delay1ms	
	endm
;--------------------------------------
Vpred   macro	d
	movlw	d		; x dlazdicek
	movwf	CT3
	call	Vpred0
	endm

;--------------------------------------
	org	0

	goto	Start
	;--------------------
	org	4
	;--------------------
Start:
	page1
	movlw 	00000000B	; inicializace citace a prescaleru
	movwf	TMR0
	movlw 	00000000B	; konfigurace preruseni
	movwf	INTCON

	page1
	movlw	11110001B	; nastaveni portu na vstup nebo vystup
	movwf	PORTA		; 1=vstup 0=vystup
	movlw	11110110B
	movwf	PORTB

	bsf	TMR0, 7		; vypni pull-up na PORTB (OPTION registr)

	page0

	clrw			; vynulovani portu
	movwf	PORTA
	movwf	PORTB

	bsf	PORTB, 3	; Pridrz napajeni

	bsf	PORTA, 3	; Rozsvit LED
	Delay	250
	bcf	PORTA, 3	; Zhasni LED

MainLoop:
	Vpred	3
	Delay	50
	call	Vlevo
	bcf	PORTB, 3	; Vypni napajeni
Smycka:
	goto	Smycka
	;----------------  

;--- Popojede o n dlazdic vpred ---
Vpred0:
	Vpred_ON
	Delay	175
	bsf	PORTB, 0
	Delay	15
	bcf	PORTB, 0
	Delay	175
	Vpred_OFF
	Delay	50
	decfsz	CT3, f
	goto	Vpred0
	return

;--- Spozdeni v nasobcich 10ms ----
Delay1ms:
 IF debug == 0
	movlw	100		; 1 ms
	movwf	CT1
	call	Delay10us

	decfsz	CT2, f
	goto	Delay1ms
 ENDIF
	return

;--- Spozdeni v nasobcich 10us ----
Delay10us:			; Prodleva (CT1 * 10us)+3us
	nop	
	nop
	nop
	nop
	nop
	nop
	nop
	decfsz	CT1, f
	goto	Delay10us
	return
;-----------------------------------
Vpravo:
	bsf	PORTB, 0
	Delay	250
	Delay	50 
	bcf	PORTB, 0
	return

;---------------------------------------
Celemvzad:
	call	Vpravo
	bsf	PORTB, 0			
	Delay	125				
	bcf	PORTB, 0			
	return
;---------------------------------------
Vlevo:
	call	Vpravo
	bsf	PORTB, 0		
	Delay	250
	Delay	75		
	bcf	PORTB, 0	
	return
;----------------------------
; Definice promenych
;----------------------------
	cblock	

	CT1
	CT2
	CT3
	endc

	end
