;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

	cblock 0x20
	dly1
	dly2
	timer
	echo
	endc

	org 0						;Program kezdete
init
	banksel		PORTA
	clrf	PORTA
	clrf	PORTB
	clrf	PORTC
	clrf	ADCON0
	banksel		ANSEL
	clrf	ANSEL
	banksel		TRISA
	movlw	b'00000111'
	movwf	TRISA
	clrf	TRISB
	banksel 	PORTB
tig						;Tigger	parancsok
	clrf	timer		;timer törlés
	bsf	ki				;Tigger bekapcsolás
	movlw	d'1'		;Tigger 10uS várakozás
	movwf	timer		;timer értékadás
	call	delay		;várakozó subrutin
	bcf	ki				;Tigger kikapcsolás
ecal					;Echo alacsony
	btfss	PORTA,1		;Bemenet vizsgálat,
	goto	ecal		;amíg alacsony várunk
	bsf	led				;Amíg magas bekapcsol a led
	clrf	echo
ecmag					;Echo magas
	bcf	PORTB,5			;munka PORT	kikapcs
	incf	echo		;echo konstans növelése 1-el
	btfsc	PORTA,1		;Megvizsgáljuk a bemenetet,
	goto	ecmag		;és addig maradunk míg magas 
	bcf		led			;A led ki (csak ellenörzö)
	movf	echo,w		;echo másolása w-be,és megnézzük,
	sublw	d'91'		;hogy meddig volt magas a port, (kb 450uS kell)
	btfss	STATUS,Z	;ha a w értéke nem 450uS akkor,
	goto	ecal		;előről kezdjük
	goto	munka		;ha 450uS akkor meló
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					;10uS várakozás
	movlw	d'10'
	movwf	timer
delay
	decfsz	timer
	goto	delay
	return
munka
	movlw	b'00100000'
	movwf	PORTB
	call	del_10ms
	goto	tig
	end