			

	#include <p16F690.inc>
	__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)


		CBLOCK	0x20

		
			SZAM1
		

			ENDC	

		
			#DEFINE	LCDAT0					PORTC,0			;PIC RC0 lába összekötve az LCD "D0" adatlábával
			#DEFINE	LCDAT1					PORTC,1			;PIC RC1 lába összekötve az LCD "D1" adatlábával
			#DEFINE LCDAT2					PORTC,2			;PIC RC2 lába összekötve az LCD "D2" adatlábával
			#DEFINE	LCDAT3					PORTC,3			;PIC RC3 lába összekötve az LCD "D3" adatlábával
			#DEFINE	LCDAT4					PORTC,4			;PIC RC4 lába összekötve az LCD "D4" adatlábával
			#DEFINE	LCDAT5					PORTC,5   		;PIC RC5 lába összekötve az LCD "D5" adatlábával
			#DEFINE	LCDAT6					PORTC,6   		;PIC RC6 lába összekötve az LCD "D6" adatlábával
			#DEFINE	LCDAT7					PORTC,7  		;PIC RC7 lába összekötve az LCD "D7" adatlábával
			#DEFINE RS						PORTB,6			;PIC RB6 lába összekötve az LCD "RS" (Register Select) vetérlő lábával
			#DEFINE	RW						PORTB,4			;PIC RB4 lába összekötve az LCD "RW" (Read / Write) vezérlő lábával
			#DEFINE	ENA						PORTB,5			;PIC RB5 lába összekötve az LCD "E" (ENABLE) vezérlő lábával
		
			
		
			org 0



		

;--------------------------------------------------------------------------------------------------------------------------------
							;PIC alap beállítások az adott feladat végrehajtásához (LCD re írás)
;--------------------------------------------------------------------------------------------------------------------------------
		

		
			bsf		STATUS,RP0							;Váltás BANK1 be
			MOVLW	B'00111111'	
			MOVWF	OPTION_REG
			MOVLW	B'01100000'							;Belső oszcillátor frekvencia 4 Mhz
			MOVWF	OSCCON

			MOVLW	B'00000000'							;PORTA mind bemenet
			MOVWF	TRISA
			MOVLW	B'00000000'							;PORTB mind kimenet
			MOVWF	TRISB
			MOVLW	B'00000000'							;PORTC mind kimenet
			MOVWF	TRISC

			bcf		STATUS,RP0							;Vissza BANK0 ba

			bcf		STATUS,RP0							;Váltáa BANK2 be
			bsf		STATUS,RP1	

			movlw	B'00000001'							;RA0 láb analóg, a többi digitális
			movwf	ANSEL

			movlw	B'00000000'							;Digitális láb mindegyik
			movwf	ANSELH
			
	
			bcf		STATUS,RP0							;Vissza BANK0 ba

			clrf	PORTC								;PORTC reset
		
	
		

			BCF		RS									;Register select parancs állásban
			BCF		RW									;LCD re írás kiválasztása
			BSF		ENA									;ENABLE alap állapotának meghatározása ( "1")
			
;---------------------------------------------------------------------------------------------------------------------------------		
								;LCD parancsok alapbeállításai (az LCD alapműködésének meghatározása)
;---------------------------------------------------------------------------------------------------------------------------------
		


	
			BCF		STATUS,RP0							;Vissza BANK0 ba
			MOVLW	B'00001111'							;LCD kijelző bekapcsolása, villogó / aláhúzott kurzorral
			MOVWF	PORTC

			BCF		ENA	
			CALL	KESL16								;Adatvonal leolvasása ENABLE földrehúzásával (RA7 logikai "0" re állítása)	
			BSF		ENA									;ENABLE alaphelyzetbe állítása (RA7 logikai "1" re állítása)

	
			MOVLW	B'00111000'							;Funkciók (8 bites adatátvitel , kétsoros üzemmód,  5 X 7 karakterméret)
			MOVWF	PORTC

			BCF		ENA
			CALL	KESL16
			BSF		ENA					
		
		
			MOVLW	B'00000001'							;LCD kijelző törlése, 
			MOVWF	PORTC
			BCF		ENA
			CALL	KESL16
			BSF		ENA	

			MOVLW	B'00000010'							;Kurzor alaphelyzetbe
			MOVWF	PORTC
			BCF		ENA
			CALL	KESL16
			BSF		ENA	

			BSF		RS



;-----------------------------------------------FŐPROGRAM-------------------------------------------------------------------------


START
			bsf		STATUS,RP0							; Váltás BANK1
			movlw	0xFF
			movwf	TRISA								; PORTA mind bemenet
			clrf	TRISC								; PORTC mind kimenet
			movlw	0x10								; Osztás Fosc/8
			movwf	ADCON1
			bcf		STATUS,RP0							; Vissza BANK0 ba
		
			bcf		STATUS,RP0							; Váltás BANK2 be
			bsf		STATUS,RP1	
			movlw	0x01								; PORTA "0" bit analóg a többi digit
			movwf	ANSEL
			bcf		STATUS,RP0							; Vissza BANK0 ba
			bcf		STATUS,RP1
			
			movlw	0x01
			movwf	ADCON0								; configure A2D for Channel 0 (RA0), Left justified, and turn on the A2D module
		
MainLoop
	
			nop											; Várok...
			nop											; 
			nop											; 
			nop											; 
			nop											; 
			bsf		ADCON0,GO							; Konverzió indul
			btfsc	ADCON0,GO							; A bit állapotot vált ha a konverzió kész
			goto	$-1
			swapf	ADRESH,w							
			movwf	PORTC								; "W" tartalma PORTC re
			
			BCF		ENA									;LCD leolvassa az adatvonalat
			CALL	KESL100							
			BSF		ENA	

			BCF		RS									;Register select parancs állásban

			MOVLW	B'00000001'							;LCD kijelző törlése, 
			MOVWF	PORTC
			BCF		ENA
			CALL	KESL16
			BSF		ENA	

			MOVLW	B'00000010'							;Kurzor alaphelyzetbe
			MOVWF	PORTC
			BCF		ENA
			CALL	KESL16
			BSF		ENA	

			BSF		RS									;Register select adat állásban


		
			GOTO	MainLoop

			
;------------------------------------------------------------------------------------------------------
;									Késleltető rutinok
;------------------------------------------------------------------------------------------------------


KESL16:													;Parancs késleltetése

				DECFSZ	SZAM1
				GOTO	$-1
				DECFSZ	SZAM1
				GOTO	$-1
				DECFSZ	SZAM1
				GOTO	$-1
				DECFSZ	SZAM1
				GOTO	$-1
				RETURN

;-----------------------------------------------------------------------------------------------------

KESL100:												;Adat késleltetése
	
				MOVLW 	255
				MOVWF	SZAM1
				DECFSZ	SZAM1
				GOTO	$-1
				RETURN
			
				END	

;------------------------------------------------------------------------------------------------------	
			
