;SRF ultrahang vezérlés, Próba
	#include <p16f882.inc>		;proci választás

__config _CONFIG1, (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _CPD_OFF & _CP_OFF & _IESO_OFF & _FCMEN_OFF & _LVP_OFF)

#define	ki	PORTB,1
#define	led	PORTB,2
#define	vez	PORTB,5
bank0	macro
	bcf	STATUS,RP0
	bcf	STATUS,RP1
	endm
bank1	macro
	bsf	STATUS,RP0
	bcf	STATUS,RP1
	endm
bank2	macro
	bcf	STATUS,RP0
	bsf	STATUS,RP0
	endm
bank3	macro
	bsf	STATUS,RP0
	bsf	STATUS,RP1
	endm

	cblock 0x20
	dly1
	dly2
	timer
	echo
	echo1
	endc

		org 0x000		;Program kezdete
	goto	init
		org	0x004		;Megszakítás
init
	bank0
	clrf	PORTA		;PortA nullázás
	clrf	PORTB		;PortB nullázás
	clrf	PORTC		;PortC nullázás
	clrf	ADCON0		;Analog mód kikapcsolás
	bank3
	clrf	ANSEL
	bank1
	movlw	b'00000111'	;PortA input output beállítása
	movwf	TRISA		;0:2 in	3:7 output
	clrf	TRISB		;portB mind output
	bank0
	clrwdt				;kutya törlése
	clrw				;W regiszter törlése
	movlw	h'3f'
;	banksel		ADCON1
;	movlw		b'00000000'
;	movwf		ADCON1
;	banksel		ADCON0
;	movlw		b'1000001'
;	movwf		ADCON0
trigger					;Trigger parancsok
	clrf	timer		;timer törlés
	bsf	ki				;Tigger bekapcsolás
	movlw	d'2'		;Tigger 10uS várakozás
	movwf	timer		;timer értékadás
	call	delay		;várakozó subrutin
	bcf	ki				;Tigger kikapcsolás
	call	del1		;várunk 100uS-ot
echoal					;Echo alacsony
	btfss	PORTA,1		;Bemenet vizsgálat,
	goto	echoal		;amíg alacsony várunk
	bsf	led				;Amíg magas bekapcsol a led
	clrf	echo
	clrf	echo1
echomag					;Echo magas
	incfsz	echo,f		;echo konstans növelése 1-el
	goto	$+2			;ha echo több mint 255, akkor
	incf	echo1,f		;echo1-t 1-el növeljük
	btfsc	PORTA,1		;Megvizsgáljuk a bemenetet,
	goto	echomag		;és addig maradunk míg magas
	bcf		led			;A led ki (csak ellenörzö)
	movfw	echo1		;echo 1 w-be mozgatása
	btfss	STATUS,Z	;ha echo1-be írtunk valamit, azaz
	goto	trigger		;több mint 0,akkor előröl kezjük.
	movfw	echo		;echo mozgatása w-be,és megnézzük,
	sublw	d'79'		;hogy meddig volt magas a port, (kb 450uS kell)
	btfsc	STATUS,C	;ha > 450uS akkor,
	goto	vezerles	;ugrás
	goto	vezerleski	;ha < 450uS akkor előröl
del_10ms				;Echo vége 10mS várakozás és utána tigger
	movlw	d'206'
	movwf	dly1
	movlw	d'8'
	movwf	dly2
Delay_10ms				;10mS várakozás
	decfsz	dly1,f
	goto	$+2
	decfsz	dly2,f
	goto	Delay_10ms
	return
del1					;100uS várakozás
	movlw	d'31'
	movwf	timer
delay
	decfsz	timer,f
	goto	delay
	return
vezerles
	bsf	vez
	call	del_10ms
	goto	trigger
vezerleski
	bcf	vez
	call	del_10ms
	goto	trigger
end