list	p=16f877
#include	<p16f877.inc>

 __CONFIG	_CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _LVP_OFF & _CPD_OFF

		;	Makrók létrehozása
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,RP1
	endm
bank3	macro
	bsf	STATUS,RP0
	bsf	STATUS,RP1
	endm

	cblock	0x20
adc_high
adc_low
adc_ell
count1
counta
countb
	endc
;	Progi
	org 0x000

bank1
	movlw	0x00
	movwf	TRISC
	clrf	TRISB
	movlw	b'00000000'
	movwf	TRISD
	movlw	b'00000001'
	movwf	ADCON1
bank0
	movlw	b'10000001'
	movwf	ADCON0		; Fosc/32
;bank1
;	movlw	d'255'
;	movwf	PR2
;bank0
;	clrf	TMR2
;	movlw	b'00000011'
;	movwf	T2CON
;	movlw	b'00001100'
;	movwf	CCP1CON
;	clrf	CCPR1L
;	bsf	T2CON,2
	clrf	PORTB
	clrf	PORTD
; ******** MAIN PROGRAM ********
Main
	call	Read_ADC
	call	Delay
	incf	adc_ell
	movlw	.5
	subwf	adc_ell,0
	btfsc	STATUS,Z
	goto	szamit
	goto	Main
szamit				; A/D fesz offset beállítása
	clrf	adc_ell
	movfw	adc_high
	addlw	.121
	addlw	.15
	btfsc	STATUS,C
	goto	ja
	movfw	adc_high
	addlw	.254
	addlw	.123
	btfsc	STATUS,C
	goto	ja1
	movlw	b'00000100'
	movwf	PORTB
	call	Delay
	goto	Main
ja
	movlw	b'00000001'
	movwf	PORTB
	call	Delay
	goto	Main
ja1
	clrf	PORTD
	movlw	b'00000010'
	movwf	PORTB
	call	Delay
	goto	Main
; ADC olvasás
Read_ADC
	call	delay_adc
	clrf	adc_high
	bsf		ADCON0,GO
	btfsc	ADCON0,GO
	goto	$-1
	movf	ADRESH,W
	movwf	adc_high
bank1
	movfw	ADRESL
bank0
	movwf	adc_low
	return
; DELAY
delay_adc
	movlw	.30
	movwf	counta
	decfsz	counta,f
	goto	$-1
	return
Delay
	movlw	d'250'		;delay 50 ms
	movwf	count1
d1
	movlw	0xC7
	movwf	counta
	movlw	0x01
	movwf	countb
Delay_0
	decfsz	counta,f
	goto	$+2
	decfsz	countb,f
	goto	Delay_0
	decfsz	count1,f
	goto	d1
	return

end				; Program Vége