;Lamináló gép vezérlő programja
;Készítette: én
;2010.01.27.


	list	P=18F2520
#include	"P18F2520.INC"
;#include	"Laminalo2 szubrutinok.asm"
		config FCMEN  = OFF
		config IESO   = OFF
		config BOREN  = OFF
		config WDTPS  = 32768
		config MCLRE  = ON 
 		config STVREN = ON
		config LVP    = OFF
		config XINST  = OFF
		config CP0    = OFF
		config CP1    = OFF
		config CPB    = OFF
		config WRT0   = OFF
		config WRT1   = OFF
		config WRTB   = OFF
		config WRTC   = OFF
		config EBTR0  = OFF
		config EBTR1  = OFF
        config EBTRB  = OFF 
		config	OSC = INTIO67
		config	WDT = OFF

;***************** DEFINÍCIÓK *******************************
;Programverzió:
#define	verzió_egészek	'0'
#define	verzió_tizedek	'0'
#define	verzió_századok	'3'

#define	dátum_év1000	'2'
#define	dátum_év100		'0'
#define	dátum_év10		'1'
#define	dátum_év1		'0'
#define	dátum_hónap10	'0'
#define	dátum_hónap1	'1'
#define	dátum_nap10		'3'
#define	dátum_nap1		'1'

#define	FŰTÉS		LATB,5
#define	MOTOR		LATB,4
#define	gomb_OK		gombok,0
#define	gomb_FEL	gombok,1
#define	gomb_LE		gombok,2
#define	gomb_VISSZA	gombok,3

#define	lcd_EN		LATA,7
#define	lcd_RS		LATA,5
#define lcd_b4		LATC,0
#define lcd_b5		LATC,1
#define lcd_b6		LATC,2
#define lcd_b7		LATC,3
#define	ÜZEMMÓD		KONFIG,6	;a KONFIG regiszter legkisebb helyiértékű bitje a laminálás/vasalás üzemmód beállítására szolgál Ha 1 akkor nyákok készítünk, ha 0 akkor laminálunk
#define	felmelegedés					KONFIG,7	;ha a hengerek elérték már a bekapcsolás után az üzemi hőmérsékletet, akkor ez a bit 1-re vált
#define	hőmérséklet_30fok_alatt			KONFIG,0
#define	hőmérséklet_200fok_felett		KONFIG,2
#define	hőmérséklet_tartományon_belül	KONFIG,1
#define	SZONDA2_200fok_felett			KONFIG,3


;#define	MOTOR_húzás	d'1'	;mennyi időre kapcsoljon be a motor? (értéke 0,1 másodperc-szerese)
;#define	MOTOR_várás	d'20'	;mennyi időt álljon a motor? (értéke 0,1 másodperc-szerese)
;#define	VASALÁS_hőmérséklet		d'160'		;nyák-készítés hőmérséklete
;#define	LAMINÁLÁS_hőmérséklet	d'120'		;laminálás hőmérséklete

;A szonda nonlinearitását kompenzáló szubrutin definíciói:
#define komp_30_H	b'00000010'	;30fok esetén mért érték felső bájtja
#define komp_30_L	b'10000001'	;30fok esetén mért érték alsó bájtja	(641)
#define komp_130_H	b'00000010'	;130fok esetén mért érték felső bájtja
#define komp_130_L	b'11110111'	;130fok esetén mért érték alsó bájtja	(759)
#define komp_200_H	b'00000011'	;200fok esetén mért érték felső bájtja
#define komp_200_L	b'01000101'	;200fok esetén mért érték alsó bájtja	(837)

#define	komp_2_H	b'01000000'
#define	komp_2_L	b'00111100'	;130fok alatti hőmérséklet esetén osztjuk ennek tízezredével
#define	komp_3_H	b'00110010'
#define	komp_3_L	b'11001000'	;130fok feletti hőmérséklet esetén osztjuk ennek tízezredével

;*************************************************************************



cblock
	W_TEMP
	STATUS_TEMP
	delay0
	delay1
	delay2
	delay3
	IDŐZÍTÉS
	MOTOR_húzás
	MOTOR_várás
	KÍVÁNT_HŐMÉRSÉKLET_nyákkészítés
	KÍVÁNT_HŐMÉRSÉKLET_laminálás
	MÉRT_HŐMÉRSÉKLET_1_H
	MÉRT_HŐMÉRSÉKLET_1_L
	MÉRT_HŐMÉRSÉKLET_2_H
	MÉRT_HŐMÉRSÉKLET_2_L
	SZONDA1_hőmérséklet
	SZONDA2_hőmérséklet
	KONFIG
	regiszter1
	regiszter2
	regiszter3

	SZÁM1_bájt4		;(a konvertálgatás részeredményei is ebbe íródnak)
	SZÁM1_bájt3		;(a konvertálgatás részeredményei is ebbe íródnak)
	SZÁM1_bájt2
	SZÁM1_bájt1

	SZÁM2_bájt2
	SZÁM2_bájt1

	szorzó_bájt1
	szorzó_bájt2
	szorzó_eredmény_bájt1
	szorzó_eredmény_bájt2
	szorzó_eredmény_bájt3
	szorzó_eredmény_bájt4
	osztó_bájt1
	osztó_bájt2
	osztandó_eredmény_bájt1
	osztandó_eredmény_bájt2
	osztandó_eredmény_bájt3
	osztandó_eredmény_bájt4
	maradék_L
	maradék_H

	százasok
	tizesek
	egyesek
	hőmérséklet1_százasok
	hőmérséklet1_tizesek
	hőmérséklet1_egyesek
	hőmérséklet2_százasok
	hőmérséklet2_tizesek
	hőmérséklet2_egyesek
	hőmérséklet_beállítás_százasok
	hőmérséklet_beállítás_tizesek
	hőmérséklet_beállítás_egyesek

	komp_offset_H
	komp_offset_L

	új_beállított_hőmérséklet
	
	gombok
	gomb_OK_számláló
	gomb_FEL_számláló
	gomb_LE_számláló
	gomb_VISSZA_számláló
endc	

;***********************************************************
org	0
goto START

org	0x008
bra 0x018
org 0x018	;megszakítási cím
;*****************************************************************
;*********************** MEGSZAKÍTÁS *****************************
;*****************************************************************
	movwf	W_TEMP			;W regiszter eltárolása
	swapf	STATUS,W		
	movwf 	STATUS_TEMP		;STATUS regiszter eltárolása

	btfss	INTCON,T0IF		;TMR0 megszakítás ellenőrzése
		goto	Megszakítás_kilépés

;------------------GOMBOK PERGÉSMENTESÍTÉSE-----------------------

Pergésmentesítés
vizsg_OK	btfss	gomb_OK		;az OK gomb jelenlegi állapota: lenyomva? (ha igen, akkor ugrik!)
			bra		cimke63
			bra		cimke64
	cimke63	btfsc	PORTB, 0	;ebben a pillanatban le van nyomva az OK gomb? (ha igen, akkor ugrik!)
			bra		cimke61
			bra		cimke62
	cimke64	btfss	PORTB, 0	;ebben a pillanatban fel van engedve az OK gomb? (ha igen, akkor ugrik!)
			bra		cimke61
			bra		cimke62
	cimke61	clrf	gomb_OK_számláló
			bra		vizsg_FEL	;ugorj a következő gomb vizsgálatához!
	cimke62	incf	gomb_OK_számláló
			movlw	d'2'
			cpfseq	gomb_OK_számláló		;a számláló elérte a 2-t? (ha igen, akkor ugrik!)
			bra		vizsg_FEL
			btfss	gomb_OK		;az OK gomb jelenlegi állapota: lenyomva? (ha igen, akkor ugrik!)
			bra		cimke65
			bra		cimke66
	cimke65	bsf		gomb_OK
			bra		cimke61
	cimke66	bcf		gomb_OK
			bra		cimke61
vizsg_FEL	btfss	gomb_FEL		;az FEL gomb jelenlegi állapota: lenyomva? (ha igen, akkor ugrik!)
			bra		cimke67
			bra		cimke68
	cimke67	btfsc	PORTB, 1	;ebben a pillanatban le van nyomva az FEL gomb? (ha igen, akkor ugrik!)
			bra		cimke71
			bra		cimke72
	cimke68	btfss	PORTB, 1	;ebben a pillanatban fel van engedve az FEL gomb? (ha igen, akkor ugrik!)
			bra		cimke71
			bra		cimke72
	cimke71	clrf	gomb_FEL_számláló
			bra		vizsg_LE	;ugorj a következő gomb vizsgálatához!
	cimke72	incf	gomb_FEL_számláló
			movlw	d'2'
			cpfseq	gomb_FEL_számláló		;a számláló elérte a 2-t? (ha igen, akkor ugrik!)
			bra		vizsg_LE
			btfss	gomb_FEL		;az FEL gomb jelenlegi állapota: lenyomva? (ha igen, akkor ugrik!)
			bra		cimke69
			bra		cimke70
	cimke69	bsf		gomb_FEL
			bra		cimke71
	cimke70	bcf		gomb_FEL
			bra		cimke71
vizsg_LE	btfss	gomb_LE		;az LE gomb jelenlegi állapota: lenyomva? (ha igen, akkor ugrik!)
			bra		cimke73
			bra		cimke74
	cimke73	btfsc	PORTB, 2	;ebben a pillanatban le van nyomva az LE gomb? (ha igen, akkor ugrik!)
			bra		cimke77
			bra		cimke78
	cimke74	btfss	PORTB, 2	;ebben a pillanatban fel van engedve az LE gomb? (ha igen, akkor ugrik!)
			bra		cimke77
			bra		cimke78
	cimke77	clrf	gomb_LE_számláló
			bra		vizsg_VISSZA	;ugorj a következő gomb vizsgálatához!
	cimke78	incf	gomb_LE_számláló
			movlw	d'2'
			cpfseq	gomb_LE_számláló		;a számláló elérte a 2-t? (ha igen, akkor ugrik!)
			bra		vizsg_VISSZA
			btfss	gomb_LE		;az LE gomb jelenlegi állapota: lenyomva? (ha igen, akkor ugrik!)
			bra		cimke75
			bra		cimke76
	cimke75	bsf		gomb_LE
			bra		cimke77
	cimke76	bcf		gomb_LE
			bra		cimke77
vizsg_VISSZA btfss	gomb_VISSZA		;az VISSZA gomb jelenlegi állapota: lenyomva? (ha igen, akkor ugrik!)
			bra		cimke79
			bra		cimke80
	cimke79	btfsc	PORTB, 3	;ebben a pillanatban le van nyomva az VISSZA gomb? (ha igen, akkor ugrik!)
			bra		cimke83
			bra		cimke84
	cimke80	btfss	PORTB, 3	;ebben a pillanatban fel van engedve az VISSZA gomb? (ha igen, akkor ugrik!)
			bra		cimke83
			bra		cimke84
	cimke83	clrf	gomb_VISSZA_számláló
			bra		pergésmentesítés_vége
	cimke84	incf	gomb_VISSZA_számláló
			movlw	d'2'
			cpfseq	gomb_VISSZA_számláló		;a számláló elérte a 2-t? (ha igen, akkor ugrik!)
			bra		pergésmentesítés_vége
			btfss	gomb_VISSZA		;az VISSZA gomb jelenlegi állapota: lenyomva? (ha igen, akkor ugrik!)
			bra		cimke81
			bra		cimke82
	cimke81	bsf		gomb_VISSZA
			bra		cimke83
	cimke82	bcf		gomb_VISSZA
			bra		cimke83
pergésmentesítés_vége

;--------------------SZABÁLYOZÁS----------------------------------

Szabályozás
	movlw	b'00000101'
	movwf	ADCON0			;AN1 lesz használva, engedélyezve (szonda 1)
	bsf		ADCON0, GO_DONE		;A/D konverzió indítása
	btfsc	ADCON0, GO_DONE		;befejeződött az A/D konverzió?
	goto	$-2					;ha nem, akkor kérdezd meg újra!
	movff	ADRESH, MÉRT_HŐMÉRSÉKLET_1_H
	movff	ADRESL, MÉRT_HŐMÉRSÉKLET_1_L
	movlw	b'00000001'
	movwf	ADCON0			;AN0 lesz használva, engedélyezve (szonda 2)
	bsf		ADCON0, GO_DONE		;A/D konverzió indítása
	btfsc	ADCON0, GO_DONE		;befejeződött az A/D konverzió?
	goto	$-2					;ha nem, akkor kérdezd meg újra!
	movff	ADRESH, MÉRT_HŐMÉRSÉKLET_2_H
	movff	ADRESL, MÉRT_HŐMÉRSÉKLET_2_L

	movff	MÉRT_HŐMÉRSÉKLET_1_H, SZÁM1_bájt2
	movff	MÉRT_HŐMÉRSÉKLET_1_L, SZÁM1_bájt1
	call	Szonda_kompenzáció
	movff	SZÁM1_bájt1, SZONDA1_hőmérséklet

	movff	MÉRT_HŐMÉRSÉKLET_2_H, SZÁM1_bájt2
	movff	MÉRT_HŐMÉRSÉKLET_2_L, SZÁM1_bájt1
	call	Szonda_kompenzáció
	bcf		SZONDA2_200fok_felett
	btfsc	hőmérséklet_200fok_felett
	bsf		SZONDA2_200fok_felett
	movff	SZÁM1_bájt1, SZONDA2_hőmérséklet

cimke5	btfss	SZONDA2_200fok_felett	; szonda2 hőmérséklete nagyobb 200 foknál?
		bra		cimke6					;nem
		bra		fűtés_kikapcs			;igen	
cimke6	btfss	ÜZEMMÓD		;ha nyák-készítés üzemmódban vagyunk, akkor ugrik!
		bra		cimke3
		bra		cimke4
cimke3	movf	KÍVÁNT_HŐMÉRSÉKLET_laminálás
		bra		cimke8
cimke4	movf	KÍVÁNT_HŐMÉRSÉKLET_nyákkészítés				
cimke8	cpfsgt	SZONDA1_hőmérséklet		;nagyobb a kívánt hőmérsékletnél?
		bra		fűtés_bekapcs			;nem
		bra		fűtés_kikapcs			;igen
fűtés_kikapcs
		bcf		FŰTÉS
		bsf		felmelegedés	;ha a bekapcsolás után elérték a hengerek az üzemi hőmérsékletet, akkor ezt a bitet 1-re állítjuk!
		bra		Szabályozás_vége
fűtés_bekapcs
		bsf		FŰTÉS
Szabályozás_vége

;----------------------MOTOR VEZÉRLÉS-----------------------------

	movf	MOTOR_húzás, W
	subwf	IDŐZÍTÉS, W
	btfss	STATUS, Z	;ha az IDŐZÍTÉS regiszter egyenlő a MOTOR_húzás értékével, akkor ugrik
		bra	cimke1
	btfsc	PORTB, 4	;a motor be van kapcsolva? (ha nem, akkor ugrik)
		bcf	MOTOR		;ha be van kapcsolva, akkor kapcsold ki!
		bra	cimke1		
cimke1
	movf	MOTOR_várás, W
	subwf	IDŐZÍTÉS, W
	btfss	STATUS, Z	;ha az IDŐZÍTÉS regiszter egyenlő a MOTOR_várás értékével, akkor ugrik
		bra	Megszakítás_kilépés
	bsf		MOTOR		;kapcsold be a motort!
	movlw	d'255'
	movwf	IDŐZÍTÉS	;IDŐZÍTÉS regiszter nullázása (az időzítés előrről kezdődjön!)

Megszakítás_kilépés
	incf	IDŐZÍTÉS
	movlw	b'11111001'
	movwf	TMR0H
	movlw	b'11100101'	;63973
	movwf	TMR0L		;4Mhz-es órajellel, 256-os osztás és 16 bites mód esetén 0,1 másodperc kell a TMR0 túlcsordulásához

	swapf	STATUS_TEMP,W	
	movwf 	STATUS			;az elementett STATUS regiszter visszaállítása
	swapf	W_TEMP,F
	swapf	W_TEMP,W		;az elementett W regiszter visszaállítása
	bcf		INTCON, T0IF	;TMR0 megszakítást jelzőbitjét töröljük
	bsf		INTCON, GIE		;általános megszakítás engedélyezése
RETFIE
;*****************************************************************
;*********************** FŐ PROGRAM ******************************
;*****************************************************************
START
	bcf		INTCON, GIE		;globális megszakítás tiltás
	bcf		felmelegedés
	bcf		FŰTÉS
	call	PIC_inicializalas
	call	LCD_inicializalas
	clrf	IDŐZÍTÉS
	bsf		ÜZEMMÓD		;bekapcsolás után alapból milyen üzemmódban működjön a lamináló? (1-nyák készítés, 0-laminálás)
	movlw	b'11111001'
	movwf	TMR0H
	movlw	b'11100101'	;63973
	movwf	TMR0L		;4Mhz-es órajellel, 256-os osztás és 16 bites mód esetén 0,1 másodperc kell a TMR0 túlcsordulásához
	call 	Üdvözlőszöveg
	call	delay1s
	call	delay1s
	call	delay1s
	call	LCD_törlés
	call	delay1ms
	call	Verziószám_menü
	call	delay1s
	call	delay1s
	call	delay1s
	call	LCD_törlés
	call	delay1ms
	call	Dátum_menü	
	call	delay1s
	call	delay1s
	call	delay1s
	call	LCD_törlés
	call	delay1ms
	call	EEPROMból_adatok_feltöltése
	bsf		INTCON, GIE		;globális megszakítás engedélyezés



movlw   d'147'
movwf 	EEDATA
movlw   d'1'
movwf   EEADR
bcf 	EECON1, EEPGD ; Point to DATA memory
bcf 	EECON1, CFGS ; Access EEPROM
bsf 	EECON1, WREN ; Enable writes
bcf 	INTCON, GIE ;globális megszakítás tiltás
movlw 	55h ;
movwf 	EECON2 ; Write 55h
movlw 	0AAh ;
movwf 	EECON2 ; Write 0AAh
bsf 	EECON1, WR ; Set WR bit to begin write
bsf		INTCON, GIE		;globális megszakítás engedélyezés
btfsc	EECON1, WR	;befejeződött már az írás? (ha igen, akkor ugrik!)
goto	$-2	
bcf 	EECON1, WREN ; Disable writes on write complete (EEIF set)

goto$


call	Hőfok_beállítás_menü
;call	LCD_törlés
;call	Dátum_menü
goto $




;*****************************************************************
;*****************************************************************
;********************** SZUBRUTINOK ******************************
;*****************************************************************
;*****************************************************************

PIC_inicializalas
;Órajel beállítása:
	movlw	b'01100000'
	movwf	OSCCON			;4MHz-es belső órajel beállítása
;Portok konfigurációja:
	movlw	b'00001111'
	movwf	TRISA			;RA0, RA1, RA2, RA3 bemenet, többi kimenet lesz
	movlw	b'00001111'
	movwf	TRISB			;RB0, RB1, RB2, RB3 bemenet, többi kimenet lesz
	movlw	b'00000000'
	movwf	TRISC			;PORTC kimenet lesz
	bcf		INTCON2, RBPU	;PORTB-re felhúzóellenállások bekapcsolása
;A/D konfigurációja:
	movlw	b'00000001'
	movwf	ADCON0			;AN0 lesz használva, engedélyezve
	movlw	b'00111011'	
	movwf	ADCON1			;külső REF+ és REF- használata, AN0, AN1, AN2 és AN3 lesz analóg bemenet
	movlw	b'10011101'
	movwf	ADCON2			;eredmény jobbra igazítása, 6TAD, Fosc/16
;TMR0 konfigurációja:
	movlw	b'10010101'		; számláló engedélyezve, 16 bites mód, belső oszcillátorról, lefutó élre, 1:64-es előosztó
	movwf	T0CON
;Megszakítások konfigurációja:
	clrf	INTCON
	bsf		INTCON, T0IE	;timer0 túlcsordulás-megszakítás engedélyezése
;EEPROM konfigurációja:
	movlw	b'00000000'
	movwf	EECON1
RETURN

LCD_inicializalas
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	bcf		lcd_RS
	bcf		lcd_EN
	clrf	LATC
	movlw	b'00000010'		;négy bites mód
	movwf	LATC
	call	delay1ms
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
	movlw	b'00000010'		;négy bites mód
	movwf	LATC
	call	delay1ms
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
	movlw	b'00001100'		;két soros mód, 5*10 pixel
	movwf	LATC
	call	delay1ms
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
	movlw	b'00000000'		;kijelző bekapcs
	movwf	LATC
	call	delay1ms
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
	movlw	b'00001100'		;kijelző bekapcs
	movwf	LATC
	call	delay1ms
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
	call	delay1ms
RETURN

LCD_kiiratas
	bsf		lcd_RS
	bcf		lcd_b4
	bcf		lcd_b5
	bcf		lcd_b6
	bcf		lcd_b7
	bcf		lcd_EN
	btfsc	WREG,4
	bsf		lcd_b4
	btfsc	WREG,5
	bsf		lcd_b5
	btfsc	WREG,6
	bsf		lcd_b6
	btfsc	WREG,7
	bsf		lcd_b7
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
	bcf		lcd_b4
	bcf		lcd_b5
	bcf		lcd_b6
	bcf		lcd_b7
	btfsc	WREG,0
	bsf		lcd_b4
	btfsc	WREG,1
	bsf		lcd_b5
	btfsc	WREG,2
	bsf		lcd_b6
	btfsc	WREG,3
	bsf		lcd_b7
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
RETURN	

LCD_kurzor_mozgatas
	movwf	LATC
	bcf		lcd_EN
	bcf		lcd_RS
	bcf		lcd_b4
	bcf		lcd_b5
	bcf		lcd_b6
	bsf		lcd_b7
	btfsc	WREG,4
	bsf		lcd_b4
	btfsc	WREG,5
	bsf		lcd_b5
	btfsc	WREG,6
	bsf		lcd_b6
	call	delay1ms
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
	bcf		lcd_b4
	bcf		lcd_b5
	bcf		lcd_b6
	bcf		lcd_b7
	btfsc	WREG,0
	bsf		lcd_b4
	btfsc	WREG,1
	bsf		lcd_b5
	btfsc	WREG,2
	bsf		lcd_b6
	btfsc	WREG,3
	bsf		lcd_b7
	call	delay1ms
	bsf		lcd_EN
	call	delay1ms	
	bcf		lcd_EN
RETURN


LCD_törlés
	bcf		lcd_EN
	bcf		lcd_RS
	bcf		lcd_b4
	bcf		lcd_b5
	bcf		lcd_b6
	bcf		lcd_b7
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
	bsf		lcd_b4
	bcf		lcd_b5
	bcf		lcd_b6
	bcf		lcd_b7
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
RETURN

LCD_kocsivissza
	bcf		lcd_EN
	bcf		lcd_RS
	bcf		lcd_b4
	bcf		lcd_b5
	bcf		lcd_b6
	bcf		lcd_b7
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN
	bcf		lcd_b4
	bsf		lcd_b5
	bcf		lcd_b6
	bcf		lcd_b7
	bsf		lcd_EN
	call	delay1ms
	bcf		lcd_EN	
RETURN

EEPROM_olvasás
	bcf		EECON1, EEPGD ; Point to DATA memory
	bcf 	EECON1, CFGS ; Access EEPROM
	bsf 	EECON1, RD ; EEPROM Read
	btfsc	EECON1, RD	;befejeződött már az olvasás? (ha igen, akkor ugrik!)
	goto	$-2	
RETURN

EEPROM_írás
	bcf 	EECON1, EEPGD ; Point to DATA memory
	bcf 	EECON1, CFGS ; Access EEPROM
	bsf 	EECON1, WREN ; Enable writes
	bcf 	INTCON, GIE ;globális megszakítás tiltás
	movlw 	55h ;
	movwf 	EECON2 ; Write 55h
	movlw 	0AAh ;
	movwf 	EECON2 ; Write 0AAh
	bsf 	EECON1, WR ; Set WR bit to begin write
	bsf		INTCON, GIE		;globális megszakítás engedélyezés
	btfsc	EECON1, WR	;befejeződött már az írás? (ha igen, akkor ugrik!)
	goto	$-2	
	bcf 	EECON1, WREN ; Disable writes on write complete (EEIF set)
RETURN

EEPROMból_adatok_feltöltése
	movlw	d'0'
	movwf	EEADR
	call	EEPROM_olvasás
	movff	EEDATA, KÍVÁNT_HŐMÉRSÉKLET_nyákkészítés
	movlw	d'1'
	movwf	EEADR
	call	EEPROM_olvasás
	movff	EEDATA, KÍVÁNT_HŐMÉRSÉKLET_laminálás
	movlw	d'2'
	movwf	EEADR
	call	EEPROM_olvasás
	movff	EEDATA, MOTOR_húzás
	movlw	d'3'
	movwf	EEADR
	call	EEPROM_olvasás
	movff	EEDATA, MOTOR_várás
RETURN

;*************************************************************************************


delay100us:
	movwf	W_TEMP		;W kimentése
	movlw	d'25'
	decfsz	WREG
	goto	$-2
	movf	W_TEMP		;W visszaállítása
RETURN


delay1s:
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
	call	delay100ms
RETURN

delay100ms:
	movwf	W_TEMP		;W kimentése
	movlw	d'100'		;100ms
	goto	d2
delay10ms:
	movwf	W_TEMP		;W kimentése
	movlw	d'10'		;10ms
	goto	d2
delay1ms:
	movwf	W_TEMP		;W kimentése
	movlw	d'1'		;1ms
d2:	movwf	delay1
d1:	movlw	d'248'	
	movwf	delay0	
d0:	decfsz	delay0,f
	goto	d0
	decfsz	delay1,f
	goto	d1
	movf	W_TEMP, W	;W visszaállítása
RETURN

;------------------Matemaikai rutinok--------------------------------------

KONV_8bit_3digit
	clrf	százasok
	clrf	tizesek
	clrf	egyesek
Osztas_szazzal
	movlw	b'01100100'			;írjunk decimálisan 100-at a W-be
	subwf	SZÁM2_bájt1, W		;kivonás
	btfsc	STATUS, C    		;ha alulcsordult, akkor ugrik
	bra		bbb					;
	tstfsz	SZÁM2_bájt2			;ha a felso bajt nulla, akkor ugrik!
	bra		aaa					;ha alulcsordult, de a felso bájt nem nulla
	bra		Osztas_tizzel
aaa	decf	SZÁM2_bájt2			;felso bájt dekrementálása
bbb	movwf	SZÁM2_bájt1    		;eredmény tárolás
	incf	százasok
	bra		Osztas_szazzal
Osztas_tizzel
	movlw	b'00001010'			;decimálisan 10-et írunk a W-be
	subwf	SZÁM2_bájt1, w		;kivonás
	btfss	STATUS, C			;ha alulcsordulás van, akkor...
	bra		c43
	incf	tizesek
	movwf	SZÁM2_bájt1
	bra		Osztas_tizzel
c43	movff	SZÁM2_bájt1,egyesek
RETURN



Szorzás_2db_16bit	
	MOVLW	D'16'
	MOVWF	regiszter1
	CLRF	szorzó_eredmény_bájt4
	CLRF	szorzó_eredmény_bájt3		
	RRCF	szorzó_eredmény_bájt2				
	RRCF	szorzó_eredmény_bájt1		; CARRY KIVITELE
SZOR_GO	
	BTFSS	STATUS,C		; VOLT ÁTVITEL?
	BRA		LÉPTET
	MOVF	szorzó_bájt1,W
	ADDWF	szorzó_eredmény_bájt3,F
	MOVF	szorzó_bájt2,W
	BTFSC	STATUS,C
	INCFSZ	szorzó_eredmény_bájt4,F
	BRA		SIMA
	ADDWF	szorzó_eredmény_bájt4,F	
	BSF		STATUS,C
	BRA		LÉPTET
SIMA
	ADDWF	szorzó_eredmény_bájt4,F
LÉPTET
	RRCF	szorzó_eredmény_bájt4	
	RRCF	szorzó_eredmény_bájt3
	RRCF	szorzó_eredmény_bájt2
	RRCF	szorzó_eredmény_bájt1			
	DECFSZ	regiszter1,F
	BRA		SZOR_GO
RETURN



;********************



Szonda_kompenzáció	;Szonda mérési eredményének kompenzációja
	bcf	hőmérséklet_30fok_alatt
	bcf	hőmérséklet_200fok_felett
	bcf	hőmérséklet_tartományon_belül
;A mért hőmérséklet a kijelezhető tartományon (30-200) belül van?
		movlw	komp_30_H		;30 fokhoz tartozó érték alsó bájtja
		cpfslt	SZÁM1_bájt2 		;kisebb 30 foknál? (felső bájt)
		bra		cimke11				;nem
		bra		Tartományon_alul	;igen
cimke11	cpfsgt	SZÁM1_bájt2 		;nagyobb 30 foknál? (felső bájt)
		bra		cimke16				;nem
		bra		cimke12				;igen
cimke12	movlw	komp_200_H		;200 fokhoz tartozó érték felső bájtja
		cpfslt	SZÁM1_bájt2			;kisebb 200 foknál? (felső bájt)
		bra		cimke13				;nem
		bra		Tartományon_belül	;igen
cimke13	cpfsgt	SZÁM1_bájt2			;nagyobb 200 foknál? (felső bájt)
		bra		cimke14				;nem
		bra		Tartományon_felül	;igen
cimke14	movlw	komp_200_L			;200 fokhoz tartozó érték alsó bájtja
		cpfslt	SZÁM1_bájt1			;kisebb 200 foknál? (alsó bájt)
		bra		cimke15				;nem
		bra		Tartományon_belül	;igen
cimke15	cpfsgt	SZÁM1_bájt1			;nagyobb 200 foknál? (alsó bájt)
		bra		Tartományon_belül	;nem
		bra		Tartományon_felül	;igen
cimke16	movlw	komp_30_L		;30 fokhoz tartozó érték alsó bájtja
		cpfslt	SZÁM1_bájt1			;kisebb 30 foknál? (alsó bájt)
		bra		Tartományon_belül	;nem
		bra		Tartományon_alul	;igen
Tartományon_alul
	clrf	SZÁM1_bájt4
	clrf	SZÁM1_bájt3
	clrf	SZÁM1_bájt2
	clrf	SZÁM1_bájt1
	bsf		hőmérséklet_30fok_alatt
RETURN
Tartományon_felül
	clrf	SZÁM1_bájt4
	clrf	SZÁM1_bájt3
	clrf	SZÁM1_bájt2
	clrf	SZÁM1_bájt1
	bsf		hőmérséklet_200fok_felett
RETURN
Tartományon_belül
	bsf	hőmérséklet_tartományon_belül
		movlw	komp_130_H			;130 fokhoz tartozó érték felső bájtja
		cpfslt	SZÁM1_bájt2				;kisebb 130 foknál? (felső bájt)
		bra		cimke17					;nem
		bra		Kisebb_mint_130fok		;igen
cimke17	movlw	komp_130_L			;130 fokhoz tartozó érték alsó bájtja
		cpfslt	SZÁM1_bájt1				;kisebb 130 foknál? (alsó bájt)
		bra		Nem_kisebb_mint_130fok	;nem
		bra		Kisebb_mint_130fok		;igen



Kisebb_mint_130fok
	;offset-kompenzáció:
	movlw	komp_30_L		;kivonandó
	subwf	SZÁM1_bájt1, f
	movlw	komp_30_H		;kivonandó
	subwfb	SZÁM1_bájt2, f
	;a szorzó legyen tízezer!
	movlw	b'00100111'
	movwf	szorzó_bájt2
	movlw	b'00010000'
	movwf	szorzó_bájt1
	;a szorzandó legyen a SZÁM1!
	movff	SZÁM1_bájt2, szorzó_eredmény_bájt2
	movff	SZÁM1_bájt1, szorzó_eredmény_bájt1
	call	Szorzás_2db_16bit
	movff	szorzó_eredmény_bájt4, SZÁM1_bájt4
	movff	szorzó_eredmény_bájt3, SZÁM1_bájt3
	movff	szorzó_eredmény_bájt2, SZÁM1_bájt2
	movff	szorzó_eredmény_bájt1, SZÁM1_bájt1
Osztás_11800_al
	; OSZTANDÓ, MAJD AZ EREDMÉNY IS EBBE KELETKEZIK
	movff	SZÁM1_bájt4, osztandó_eredmény_bájt4  
	movff	SZÁM1_bájt3, osztandó_eredmény_bájt3  
	movff	SZÁM1_bájt2, osztandó_eredmény_bájt2  
	movff	SZÁM1_bájt1, osztandó_eredmény_bájt1  
	; OSZTÓ    
	movlw	b'00101110'
	movwf	osztó_bájt2	
	movlw	b'00011000'	    
	movwf	osztó_bájt1	;az osztó 11800!
	OSZT
	MOVLW	D'32'   
	MOVWF	regiszter1
	CLRF	maradék_H   
	CLRF	maradék_L
	OSZTÁS 
	BCF		STATUS,C
    RLCF	osztandó_eredmény_bájt1,F  
    RLCF	osztandó_eredmény_bájt2,F
    RLCF	osztandó_eredmény_bájt3,F
    RLCF	osztandó_eredmény_bájt4,F   	; LSB CARRY-be
    RLCF	maradék_L,F  		; maradékBA ÁTHOZVA
    RLCF	maradék_H,F
    BTFSC	STATUS,C   		; VOLT ÁTVITEL?
    GOTO		KIVON_GO		; HA NEM VOLT AKKOR SIMA KIVONÁS
    MOVF	osztó_bájt2,W  		 
    SUBWF	maradék_H,W
    BTFSS	STATUS,Z		 
    GOTO		NEM_NULL   		
    MOVF	osztó_bájt1,W  		
    SUBWF	maradék_L,W
	NEM_NULL
 	BTFSS	STATUS,C           
    GOTO		VAN_MÉG
	KIVON_GO
	MOVF	osztó_bájt1,W  			 
    SUBWF	maradék_L,F
    BTFSS	STATUS,C	     	; VOLT ÁTVITEL?
    DECF	maradék_H,F   		; -1
    MOVF	osztó_bájt2,W
    SUBWF	maradék_H,F
    BSF		osztandó_eredmény_bájt1,0  		; 1-ES HELYIÉRTÉKBE 1
	VAN_MÉG
	DECFSZ	regiszter1,F
    GOTO		OSZTÁS
	movff	osztandó_eredmény_bájt4, SZÁM1_bájt4
	movff	osztandó_eredmény_bájt3, SZÁM1_bájt3
	movff	osztandó_eredmény_bájt2, SZÁM1_bájt2
	movff	osztandó_eredmény_bájt1, SZÁM1_bájt1
	;osztás vége
	;Adjunk hozzá 30-at! (offsetet visszaállítjuk)
	movlw	d'30'
	addwf	SZÁM1_bájt1, f
	movlw	d'1'
	btfsc	STATUS, C	;ha nem csordúlt túl, akkor ugrik!
	addwf	SZÁM1_bájt2, f
	btfsc	STATUS, C
	addwf	SZÁM1_bájt3, f
	btfsc	STATUS, C
	addwf	SZÁM1_bájt4, f
RETURN
Nem_kisebb_mint_130fok
	;offset-kompenzáció:
	movlw	komp_130_L		;kivonandó
	subwf	SZÁM1_bájt1, f
	movlw	komp_130_H		;kivonandó
	subwfb	SZÁM1_bájt2, f
	;a szorzó legyen tízezer!
	movlw	b'00100111'
	movwf	szorzó_bájt2
	movlw	b'00010000'
	movwf	szorzó_bájt1
	;a szorzandó legyen a SZÁM1!
	movff	SZÁM1_bájt2, szorzó_eredmény_bájt2
	movff	SZÁM1_bájt1, szorzó_eredmény_bájt1
	call	Szorzás_2db_16bit
	movff	szorzó_eredmény_bájt4, SZÁM1_bájt4
	movff	szorzó_eredmény_bájt3, SZÁM1_bájt3
	movff	szorzó_eredmény_bájt2, SZÁM1_bájt2
	movff	szorzó_eredmény_bájt1, SZÁM1_bájt1
Osztás_11143_al
	; OSZTANDÓ, MAJD AZ EREDMÉNY IS EBBE KELETKEZIK
	movff	SZÁM1_bájt4, osztandó_eredmény_bájt4  
	movff	SZÁM1_bájt3, osztandó_eredmény_bájt3  
	movff	SZÁM1_bájt2, osztandó_eredmény_bájt2  
	movff	SZÁM1_bájt1, osztandó_eredmény_bájt1  
	; OSZTÓ    
	movlw	b'00101011'
	movwf	osztó_bájt2	
	movlw	b'10000111'	    
	movwf	osztó_bájt1	;az osztó 11143!
	OSZT2
	MOVLW	D'32'   
	MOVWF	regiszter1
	CLRF	maradék_H   
	CLRF	maradék_L
	OSZTÁS2 
	BCF		STATUS,C
    RLCF	osztandó_eredmény_bájt1,F  
    RLCF	osztandó_eredmény_bájt2,F
    RLCF	osztandó_eredmény_bájt3,F
    RLCF	osztandó_eredmény_bájt4,F   	; LSB CARRY-be
    RLCF	maradék_L,F  		; maradékBA ÁTHOZVA
    RLCF	maradék_H,F
    BTFSC	STATUS,C   		; VOLT ÁTVITEL?
    GOTO		KIVON_GO2		; HA NEM VOLT AKKOR SIMA KIVONÁS
    MOVF	osztó_bájt2,W  		 
    SUBWF	maradék_H,W
    BTFSS	STATUS,Z		 
    GOTO		NEM_NULL2   		
    MOVF	osztó_bájt1,W  		
    SUBWF	maradék_L,W
	NEM_NULL2
 	BTFSS	STATUS,C           
    GOTO		VAN_MÉG2
	KIVON_GO2
	MOVF	osztó_bájt1,W  			 
    SUBWF	maradék_L,F
    BTFSS	STATUS,C	     	; VOLT ÁTVITEL?
    DECF	maradék_H,F   		; -1
    MOVF	osztó_bájt2,W
    SUBWF	maradék_H,F
    BSF		osztandó_eredmény_bájt1,0  		; 1-ES HELYIÉRTÉKBE 1
	VAN_MÉG2
	DECFSZ	regiszter1,F
    GOTO		OSZTÁS2
	movff	osztandó_eredmény_bájt4, SZÁM1_bájt4
	movff	osztandó_eredmény_bájt3, SZÁM1_bájt3
	movff	osztandó_eredmény_bájt2, SZÁM1_bájt2
	movff	osztandó_eredmény_bájt1, SZÁM1_bájt1
	;osztás vége
	;Adjunk hozzá 130-at! (offsetet visszaállítjuk)
	movlw	d'130'
	addwf	SZÁM1_bájt1, f
	movlw	d'1'
	btfsc	STATUS, C	;ha nem csordúlt túl, akkor ugrik!
	addwf	SZÁM1_bájt2, f
	btfsc	STATUS, C
	addwf	SZÁM1_bájt3, f
	btfsc	STATUS, C
	addwf	SZÁM1_bájt4, f
RETURN

;------------------------------Menük-------------------------------------------

Üdvözlőszöveg
	movlw	'A'
	call	LCD_kiiratas
	movlw	'd'
	call	LCD_kiiratas
	movlw	'j'
	call	LCD_kiiratas
	movlw	'o'
	call	LCD_kiiratas
	movlw	'n'
	call	LCD_kiiratas
	movlw	' '
	call	LCD_kiiratas
	movlw	'a'
	call	LCD_kiiratas
	movlw	'z'
	call	LCD_kiiratas
	movlw	' '
	call	LCD_kiiratas
	movlw	'I'
	call	LCD_kiiratas
	movlw	's'
	call	LCD_kiiratas
	movlw	't'
	call	LCD_kiiratas
	movlw	'e'
	call	LCD_kiiratas
	movlw	'n'
	call	LCD_kiiratas
	movlw	','
	call	LCD_kiiratas
	movlw	h'42'
	call	LCD_kurzor_mozgatas
	movlw	's'
	call	LCD_kiiratas
	movlw	'z'
	call	LCD_kiiratas
	movlw	'e'
	call	LCD_kiiratas
	movlw	'b'
	call	LCD_kiiratas
	movlw	'b'
	call	LCD_kiiratas
	movlw	' '
	call	LCD_kiiratas
	movlw	'j'
	call	LCD_kiiratas
	movlw	b'11101111'
	call	LCD_kiiratas
	movlw	'v'
	call	LCD_kiiratas
	movlw	b'11101111'
	call	LCD_kiiratas
	movlw	't'
	call	LCD_kiiratas
	movlw	'!'
	call	LCD_kiiratas
RETURN

;-------------------------------------------------------

Hőmérséklet_menü
	movff	SZONDA1_hőmérséklet, SZÁM2_bájt1
	call	KONV_8bit_3digit
	movff	százasok, hőmérséklet1_százasok
	movff	tizesek, hőmérséklet1_tizesek
	movff	egyesek, hőmérséklet1_egyesek

	movff	SZONDA2_hőmérséklet, SZÁM2_bájt1
	call	KONV_8bit_3digit
	movff	százasok, hőmérséklet2_százasok
	movff	tizesek, hőmérséklet2_tizesek
	movff	egyesek, hőmérséklet2_egyesek

	movlw	h'00'
	call	LCD_kurzor_mozgatas
	movlw	'T'
	call	LCD_kiiratas
	movlw	'1'
	call	LCD_kiiratas
	movlw	'='
	call	LCD_kiiratas
	movlw	d'0'
	cpfseq	hőmérséklet1_százasok	;ha a hőmérséklet 100 fok alatt van, akkor kioltjuk a legnagyobb helyértékű nullát!
	bra		cimke20		;ha nem egyenlő
	movlw	b'00100000'	;szóköz karakter
	bra		cimke21		;ha egyenlő
cimke20	movlw	d'48'
	addwf	hőmérséklet1_százasok, W
cimke21	call	LCD_kiiratas
	movlw	d'48'
	addwf	hőmérséklet1_tizesek, W
	call	LCD_kiiratas
	movlw	d'48'
	addwf	hőmérséklet1_egyesek, W
	call	LCD_kiiratas
	movlw	'C'
	call	LCD_kiiratas
	movlw	b'11011111'		;(fok)

	call	LCD_kiiratas
	movlw	h'08'
	call	LCD_kurzor_mozgatas
	movlw	'T'
	call	LCD_kiiratas
	movlw	'2'
	call	LCD_kiiratas
	movlw	'='
	call	LCD_kiiratas
	movlw	d'0'
	cpfseq	hőmérséklet2_százasok	;ha a hőmérséklet 100 fok alatt van, akkor kioltjuk a legnagyobb helyértékű nullát!
	bra		cimke22		;ha nem egyenlő
	movlw	b'00100000'	;szóköz karakter
	bra		cimke23		;ha egyenlő
cimke22	movlw	d'48'
	addwf	hőmérséklet2_százasok, W
cimke23	call	LCD_kiiratas
	movlw	d'48'
	addwf	hőmérséklet2_tizesek, W
	call	LCD_kiiratas
	movlw	d'48'
	addwf	hőmérséklet2_egyesek, W
	call	LCD_kiiratas
	movlw	h'0E'
	call	LCD_kurzor_mozgatas
	movlw	'C'
	call	LCD_kiiratas
	movlw	b'11011111'		;(fok)
	call	LCD_kiiratas
RETURN

;------------------------------------------------

Verziószám_menü
	movlw	h'04'
	call	LCD_kurzor_mozgatas
	movlw	'L'
	call	LCD_kiiratas
	movlw	'a'
	call	LCD_kiiratas
	movlw	'm'
	call	LCD_kiiratas
	movlw	'i'
	call	LCD_kiiratas
	movlw	'n'
	call	LCD_kiiratas
	movlw	'a'
	call	LCD_kiiratas
	movlw	'l'
	call	LCD_kiiratas
	movlw	'o'
	call	LCD_kiiratas
	movlw	h'42'
	call	LCD_kurzor_mozgatas
	movlw	'v'
	call	LCD_kiiratas
	movlw	'e'
	call	LCD_kiiratas
	movlw	'r'
	call	LCD_kiiratas
	movlw	'z'
	call	LCD_kiiratas
	movlw	'i'
	call	LCD_kiiratas
	movlw	'o'
	call	LCD_kiiratas
	movlw	':'
	call	LCD_kiiratas
	movlw	verzió_egészek
	call	LCD_kiiratas
	movlw	'.'
	call	LCD_kiiratas
	movlw	verzió_tizedek
	call	LCD_kiiratas
	movlw	verzió_századok
	call	LCD_kiiratas
RETURN

;---------------------------------------------------

Dátum_menü
	movlw	h'04'
	call	LCD_kurzor_mozgatas
	movlw	'A'
	call	LCD_kiiratas
	movlw	't'
	call	LCD_kiiratas
	movlw	't'
	call	LCD_kiiratas
	movlw	'i'
	call	LCD_kiiratas
	movlw	'l'
	call	LCD_kiiratas
	movlw	'a'
	call	LCD_kiiratas
	movlw	'8'
	call	LCD_kiiratas
	movlw	'6'
	call	LCD_kiiratas
	movlw	h'43'
	call	LCD_kurzor_mozgatas
	movlw	dátum_év1000
	call	LCD_kiiratas
	movlw	dátum_év100
	call	LCD_kiiratas
	movlw	dátum_év10
	call	LCD_kiiratas
	movlw	dátum_év1
	call	LCD_kiiratas
	movlw	'.'
	call	LCD_kiiratas
	movlw	dátum_hónap10
	call	LCD_kiiratas
	movlw	dátum_hónap1
	call	LCD_kiiratas
	movlw	'.'
	call	LCD_kiiratas
	movlw	dátum_nap10
	call	LCD_kiiratas
	movlw	dátum_nap1
	call	LCD_kiiratas
	movlw	'.'
	call	LCD_kiiratas
RETURN

;-------------------------------------------------

LCD_felhasználói_karakterek_betöltése
	call	LCD_törlés
	call	delay1ms
	bcf		lcd_RS
	movlw	b'00000100'		;CGRAM1 felső félbájt
	movwf	LATC
	bsf		lcd_EN
	bcf		lcd_EN	
	movlw	b'00000000'		;CGRAM1 alsó félbájt
	movwf	LATC
	bsf		lcd_EN
	bcf		lcd_EN

	bsf		lcd_RS
	call	delay1ms
	movlw	b'00010000'		;
	movwf	LATC
	bsf		lcd_EN
	bcf		lcd_EN	
	movlw	b'00011110'		;
	movwf	LATC
	bsf		lcd_EN
	bcf		lcd_EN

;------------------------------------------

Üzemmód_menü
	call	LCD_törlés
	movlw	h'04'
	call	LCD_kurzor_mozgatas
	movlw	'U'
	call	LCD_kiiratas
	movlw	'z'
	call	LCD_kiiratas
	movlw	'e'
	call	LCD_kiiratas
	movlw	'm'
	call	LCD_kiiratas
	movlw	'm'
	call	LCD_kiiratas
	movlw	'o'
	call	LCD_kiiratas
	movlw	'd'
	call	LCD_kiiratas
	movlw	'?'
	call	LCD_kiiratas
Szöveg_nyák_készítés
	bsf		ÜZEMMÓD
	movlw	h'40'
	call	LCD_kurzor_mozgatas
	movlw	'N'
	call	LCD_kiiratas
	movlw	'y'
	call	LCD_kiiratas
	movlw	'A'
	call	LCD_kiiratas
	movlw	'K'
	call	LCD_kiiratas
	movlw	'-'
	call	LCD_kiiratas
	movlw	'k'
	call	LCD_kiiratas
	movlw	'e'
	call	LCD_kiiratas
	movlw	's'
	call	LCD_kiiratas
	movlw	'z'
	call	LCD_kiiratas
	movlw	'i'
	call	LCD_kiiratas
	movlw	't'
	call	LCD_kiiratas
	movlw	'e'
	call	LCD_kiiratas
	movlw	's'
	call	LCD_kiiratas
	bra		Gomb_vizsgálat
Szöveg_laminálás
	bcf		ÜZEMMÓD
	movlw	h'43'
	call	LCD_kurzor_mozgatas
	movlw	'L'
	call	LCD_kiiratas
	movlw	'a'
	call	LCD_kiiratas
	movlw	'm'
	call	LCD_kiiratas
	movlw	'i'
	call	LCD_kiiratas
	movlw	'n'
	call	LCD_kiiratas
	movlw	'a'
	call	LCD_kiiratas
	movlw	'l'
	call	LCD_kiiratas
	movlw	'a'
	call	LCD_kiiratas
	movlw	's'
	call	LCD_kiiratas
	bra		Gomb_vizsgálat


Gomb_vizsgálat
			btfss	gomb_OK
			bra		cimke30
			RETURN

cimke30		btfss	gomb_LE
			bra		Gomb_vizsgálat
			bra		Szöveg_laminálás
			

RETURN

;---------------------------------


Hőfok_beállítás_menü
	movff	KÍVÁNT_HŐMÉRSÉKLET_nyákkészítés, új_beállított_hőmérséklet
	call	LCD_törlés
	call 	delay1ms
	movlw	h'02'
	call	LCD_kurzor_mozgatas
	call 	delay1ms
	movlw	'H'
	call	LCD_kiiratas
	movlw	b'11101111'	;"ö"-betű
	call	LCD_kiiratas
	movlw	'm'
	call	LCD_kiiratas
	movlw	'e'
	call	LCD_kiiratas
	movlw	'r'
	call	LCD_kiiratas
	movlw	's'
	call	LCD_kiiratas
	movlw	'e'
	call	LCD_kiiratas
	movlw	'k'
	call	LCD_kiiratas
	movlw	'l'
	call	LCD_kiiratas
	movlw	'e'
	call	LCD_kiiratas
	movlw	't'
	call	LCD_kiiratas
	movlw	':'
	call	LCD_kiiratas

hőfok_beállítás_menü_kijelzés
	movff	új_beállított_hőmérséklet, SZÁM2_bájt1
	call	KONV_8bit_3digit
	movff	százasok, hőmérséklet_beállítás_százasok
	movff	tizesek, hőmérséklet_beállítás_tizesek
	movff	egyesek, hőmérséklet_beállítás_egyesek

	movlw	h'45'
	call	LCD_kurzor_mozgatas
	movlw	d'0'
	cpfseq	hőmérséklet_beállítás_százasok	;ha a beállított hőmérséklet 100 fok alatt van, akkor kioltjuk a legnagyobb helyértékű nullát!
	bra		cimke42		;ha nem egyenlő
	movlw	b'00100000'	;szóköz karakter
	bra		cimke43		;ha egyenlő
cimke42	movlw	d'48'
	addwf	hőmérséklet_beállítás_százasok, W
cimke43	call	LCD_kiiratas
	movlw	d'48'
	addwf	hőmérséklet_beállítás_tizesek, W
	call	LCD_kiiratas
	movlw	d'48'
	addwf	hőmérséklet_beállítás_egyesek, W
	call	LCD_kiiratas
	movlw	'C'	
	call	LCD_kiiratas
	movlw	b'11011111'	;(fok szimbólum)
	call	LCD_kiiratas



Gomb_vizsgálat_hőfokbeállítás
call	delay100ms
call	delay100ms	;időzítés beállítása, hogy lenyomva tartás esetén lassabban pörögjenek a számok
			btfss	gomb_OK		;le van nyomva az OK gomb?	(ha igen, ugrik!)
			bra		cimke54
				movff	új_beállított_hőmérséklet, KÍVÁNT_HŐMÉRSÉKLET_nyákkészítés
				movff	új_beállított_hőmérséklet, EEDATA
				movlw	d'1'
				movwf	EEADR
				call	EEPROM_írás		;új érték mentése!
				RETURN
	cimke54	btfss	gomb_VISSZA		;le van nyomva a VISSZA gomb?	(ha igen, ugrik!)
			bra		cimke50
			RETURN
	cimke50	btfss	gomb_LE		;le van nyomva a LE gomb?	(ha igen, ugrik!)
			bra		cimke51
			bra		csökkentés
	cimke51	btfss	gomb_FEL	;le van nyomva a FEL gomb?	(ha igen, ugrik!)
			bra		Gomb_vizsgálat_hőfokbeállítás
			bra		növelés

csökkentés	movlw	d'70'
			cpfseq	új_beállított_hőmérséklet	;a beállított hőmérséklet 70 fok?
			bra		cimke52
			bra		hőfok_beállítás_menü_kijelzés
	cimke52	movlw	d'1'	;mekkora léptékkel történjen a csökkentés?
			subwf	új_beállított_hőmérséklet, f
			bra		hőfok_beállítás_menü_kijelzés

növelés		movlw	d'200'
			cpfseq	új_beállított_hőmérséklet	;a beállított hőmérséklet 200 fok?
			bra		cimke53
			bra		hőfok_beállítás_menü_kijelzés
	cimke53	movlw	d'1'	;mekkora léptékkel történjen a növelés?
			addwf	új_beállított_hőmérséklet, f
			bra		hőfok_beállítás_menü_kijelzés



goto$	
END
