;**************************************************************************
;*                      Példaprogram PIC 18F14K22-re                      *
;*      feladat: AD konverter konfigurálása								  *
;*modositva:001                                                           *
;**************************************************************************

	LIST	P=PIC18F14K22						; lista megadása
	INCLUDE	<P18F14K22.INC>						; includde fájlok megadása
	RADIX	hex
									; alapértelmezet számrendszer megadása

	CONFIG	FOSC = IRC							; belső oszcillátor	
	CONFIG	WDTEN = OFF							; watchdog kikapcsolása
	CONFIG	LVP = OFF							; alacsony feszültségű programozás kikapcsolva

	CBLOCK	0x20			;A 0x20 egy szabad memória rész kezdő címe
	T1
	T2
	T3
	POTI
	ENDC
	
	#define		GOMB_1		PORTA, 1
	
	org		0x0000								; program memória kezdő címe
	nop											; ICD miatt
	GOTO	START

	org		0x0028								; kezdő cím, ami átugorja a
START											; megszakítási címet
	CALL	INICIALIZALAS
ZUMMER
	BTG		LATB,	4							; a zummer 
	CALL	DELAY
    BTFSS	GOMB_1
	GOTO	ZUMMER
AD_ATALAKÍTÓ
	BSF		ADCON0,	GO							; konvrzió indítása

	BTFSC	ADCON0,	GO							; GO/DONE bit polling
	GOTO	$-2

	MOVFF	ADRESH,	POTI						; eredmény kiíása 

	GOTO	ZUMMER								; ugrás a MAIN-hez
;----------------------------------------------------------------------------
DELAY						
	MOVLW	d'10'			
	MOVWF	T1				;T1-be bekerül a (d) decimális 'x'
DEL
	MOVLW	POTI			
	MOVWF	T2				;T2-be bekerül a POTI
DEL1
	MOVLW	d'1'
	MOVWF	T3				;T3-ba bekerült a 1
DEL2
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DECFSZ	T3,f			;Csökkenti a T3-at, addíg, amig nem nulla
	GOTO	DEL2			; mindig visszaugruk a DEL2-re, vagyis a sok NOP-ra
	DECFSZ	T2,f			;Ha már nulla, akkor ugyanez eljátszódik a T2-vel
	GOTO	DEL1
	DECFSZ	T1,f			;Majd a T1-el is
	GOTO	DEL
	RETURN					;Visszatér a DELAY szubrutinból

;--------------------------------------------------------------------------	
INICIALIZALAS
	MOVLW	B'01110010'							; oszcillátor frekvenciája <4:6>
	MOVWF	OSCCON								; 111 = 16 MHz, 001 = 250 kHz, 000 = 31 kHz (kb óra kvarc)
	CLRF	LATC								; kimeneti portok törlése
	CLRF	LATA								;
	MOVLW	B'00100000'							; LATB = B'00100000'
	MOVWF	LATB								; az 5. bit a LEDsor engedélyezője
	MOVLW	B'00000001'							; analóg / digitális bemenetek
	MOVWF	ANSEL								; 
	MOVLW	B'00011111'							; A port
	MOVWF	TRISA
	MOVLW	B'00000000'							; B port kimenet
	MOVWF	TRISB
	MOVLW	B'00000000'							; C port kimenet
	MOVWF	TRISC

	MOVLW	B'00000001'							; AD bekapcsolva
	MOVWF	ADCON0

	MOVLW	B'00000001'							; mintavétalezési ídők beállítása
	MOVWF	ADCON2								; <2:0> frekvencia

	RETURN
;--------------------------------------------------------------------------	
	END
