;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 *******************************
	#define	FŰTÉS		LATB,5
	#define	MOTOR		LATB,4
	#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,0	;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,1	;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	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		fok_160		;nyák-készítés hőmérséklete
	#define	LAMINÁLÁS_hőmérséklet	fok_120		;laminálás hőmérséklete
	
	;A szonda nonlinearitását kompenzáló szubrutin definíciói:
	#define komp_1_H	b'00000001'	;30fok esetén mért érték felső bájtja
	#define komp_1_L	b'10000100'	;30fok esetén mért érték alsó bájtja
	#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
	
	;*************************************************************************
	
	; A következő értékekből 400 le van vonva, hogy a mért érték egy bájton elférjen!
	#define	fok_100	d'57'
	#define	fok_105	d'61'
	#define	fok_110	d'66'
	#define	fok_115	d'70'
	#define	fok_120	d'76'
	#define	fok_125	d'79'
	#define	fok_130	d'83'
	#define	fok_135	d'88'
	#define	fok_140	d'92'
	#define	fok_145	d'97'
	#define	fok_150	d'101'
	#define	fok_155	d'105'
	#define	fok_160	d'110'
	#define	fok_165	d'114'
	#define	fok_170	d'119'
	#define	fok_175	d'123'
	#define	fok_180	d'127'
	#define	fok_185	d'132'
	#define	fok_190	d'136'
	#define	fok_195	d'140'
	#define	fok_200	d'145'

;*************************************************************************

	cblock
	W_TEMP
	STATUS_TEMP
	delay0
	delay1
	delay2
	delay3
	IDŐZÍTÉS
	HŐMÉRSÉKLET_H
	HŐMÉRSÉKLET_L
	KONFIG
	regiszter1
	regiszter2

	SZÁM1_bájt4		;a konvertálgatás részeredményei ebbe íródnak
	SZÁM1_bájt3		;a konvertálgatás részeredményei ebbe íródnak
	SZÁM1_bájt2
	SZÁM1_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

	komp_offset_H
	komp_offset_L
	komp_alsó_H
	komp_alsó_L
	komp_felső_H
	komp_felső_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

	movlw	MOTOR_húzás
	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
	movlw	MOTOR_várás
	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
	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)
	bcf		felmelegedés
	bcf		FŰ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
	call 	Üdvözlőszöveg
	call	delay1s
	call	delay1s
	call	delay1s
	call	LCD_törlés
	bsf		INTCON, GIE		;globális megszakítás engedélyezés

	call	Menü1



	clrf	SZÁM1_bájt4
	clrf	SZÁM1_bájt3
	clrf	SZÁM1_bájt2
	clrf	SZÁM1_bájt1

	movlw	b'00000101'
	movwf	SZÁM1_bájt4
	movlw	b'00100101'
	movwf	SZÁM1_bájt3
	movlw	b'00001110'
	movwf	SZÁM1_bájt2
	movlw	b'00111100'
	movwf	SZÁM1_bájt1		;863145556

	goto abcdefgh

;	movff	ADRESH, SZÁM1_bájt2
;	movff	ADRESL, SZÁM1_bájt1		;másoljuk az A/D konverzió eredményét
	

;Szonda mérési eredményének kompenzációja:
	;1024-ből kivonjuk a mért eredményt:
	movlw	b'00000100'
	movwf	SZÁM1_bájt4
	movlw	b'00000000'
	movwf	SZÁM1_bájt3
	movf	SZÁM1_bájt1, W
	subwf	SZÁM1_bájt3, f
	movf	SZÁM1_bájt2, W
	subwfb	SZÁM1_bájt4, f
	movff	SZÁM1_bájt4, SZÁM1_bájt2
	movff	SZÁM1_bájt3, SZÁM1_bájt1
	clrf	SZÁM1_bájt4
	clrf	SZÁM1_bájt3
	;offset-kompenzáció:
	movf	komp_offset_L, W	;kivonandó
	subwf	SZÁM1_bájt1, f
	movf	komp_offset_H, W	;kivonandó
	subwfb	SZÁM1_bájt2, f
	;az érték kisebb, mint 163? (alacsonyabb a hőmérséklet 130 foknál?)
	movff	SZÁM1_bájt2, SZÁM1_bájt4
	movff	SZÁM1_bájt1, SZÁM1_bájt3
	movlw	d'163'
	bsf		STATUS, C		;Carry bit 1-re állítása
	subwf	SZÁM1_bájt3, W
	btfss	STATUS, C
	decf	SZÁM1_bájt4		;ha alulcsordult a SZÁM1_bájt3, akkor dekrementáljuk a SZÁM1_bájt4-et
	movff	SZÁM1_bájt4, SZÁM1_bájt2	;regiszterek visszaállítása
	movff	SZÁM1_bájt3, SZÁM1_bájt1	;regiszterek visszaállítása
	clrf	SZÁM1_bájt4					;részeredmények törlése
	clrf	SZÁM1_bájt3					;részeredmények törlése
	btfsc	STATUS, C		;történt alulcsordulás? (ha igen, akkor ugrik!)
	bra		Több_mint_130fok
	bra		Kevesebb_mint_130fok


Kevesebb_mint_130fok
	;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





abcdefgh

; 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'01000000'
	movwf	osztó_bájt2	
	movlw	b'00111100'	    
	movwf	osztó_bájt1	;az osztó 16444!

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?
    BRA		KIVON_GO					; HA NEM VOLT AKKOR SIMA KIVONÁS
    MOVF	osztó_bájt2,W  		 
    SUBWF	maradék_H,W
    BTFSS	STATUS,Z		 
    BRA		NEM_NULL   		
    MOVF	osztó_bájt1,W  		
    SUBWF	maradék_L,W
NEM_NULL
 	BTFSS	STATUS,C           
    BRA		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
    BRA		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


;***************
	
;	movlw d'32'      ; 32-bit divide by 16-bit
;    movwf regiszter1
;    clrf maradék_H   ; Clear remainder
;    clrf maradék_L
;
;dvloop clrc          ; Set quotient bit to 0
;                     ; Shift left dividend and quotient
;       rlcf osztandó_eredmény_bájt1    ; lsb
;       rlcf osztandó_eredmény_bájt2
;       rlcf osztandó_eredmény_bájt3
;       rlcf osztandó_eredmény_bájt4    ; lsb into carry
;       rlcf maradék_L    ; and then into partial remainder
;       rlcf maradék_H
;
;       skpnc         ; Check for overflow
;       goto subd
;       movf osztó_bájt2  ; Compare partial remainder and divisor
;       subwf maradék_H,w
;       skpz 
;       goto testgt   ; Not equal so test if maradék_H is greater
;       movf osztó_bájt1  ; High bytes are equal, compare low bytes
;       subwf maradék_L,w
;testgt skpc          ; Carry set if remdr >= divis
;       goto remrlt
;
;subd   movf osztó_bájt1  ; Subtract divisor from partial remainder
;       subwf maradék_L
;       skpc          ; Test for borrow
;
;       decf maradék_H   ; Subtract borrow
;       movf osztó_bájt2
;       subwf maradék_H
;       bsf osztandó_eredmény_bájt1,0  ; Set quotient bit to 1
;                     ; Quotient replaces dividend which is lost
;remrlt decfsz regiszter1
;       goto dvloop

;*************


	nop
	
Több_mint_130fok






	nop



;goto START2

;AD_konverzio
;	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, HŐMÉRSÉKLET_H
;	movff	ADRESL, HŐMÉRSÉKLET_L
;
;	movlw	b'00000001'		;a decimális 400 felső bájtja
;	subwf	HŐMÉRSÉKLET_H, f
;	movlw	b'10010000'		;a decimális 400 alsó bájtja
;	subwfb	HŐMÉRSÉKLET_L, f
;
;Szabalyozas
;	btfss	ÜZEMMÓD		;ha nyák-készítés üzemmódban vagyunk, akkor ugrik!
;	bra		cimke3
;	bra		cimke4
;cimke3
;	movf	LAMINÁLÁS_hőmérséklet		
;	bra		cimke5
;cimke4
;	movf	VASALÁS_hőmérséklet	
;cimke5
;	cpfslt	HŐMÉRSÉKLET_L	;ha a mért hőmérséklet kisebb a beállítottnál, akkor ugrik!
;	bra		futes_kikapcs
;	bra		futes_bekapcs
;futes_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		cimke2
;futes_bekapcs
;	bsf		FŰTÉS
;cimke2
	
	



	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
;Kompenzációs regiszterek feltöltése
	movlw	komp_1_H
	movwf	komp_offset_H
	movlw	komp_1_L
	movwf	komp_offset_L
	movlw	komp_2_H
	movwf	komp_alsó_H
	movlw	komp_2_L
	movwf	komp_alsó_L
	movlw	komp_3_H
	movwf	komp_felső_H
	movlw	komp_3_L
	movwf	komp_felső_L
	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'00001000'		;két soros mód, 5*7 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'00001111'		;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

;*************************************************************************************


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--------------------------------------

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

;------------------------------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

Menü1
	movlw	h'00'
	call	LCD_kurzor_mozgatas
	movlw	'T'
	call	LCD_kiiratas
	movlw	'1'
	call	LCD_kiiratas
	movlw	':'
	call	LCD_kiiratas
	movlw	h'06'
	call	LCD_kurzor_mozgatas
	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	'1'
	call	LCD_kiiratas
	movlw	':'
	call	LCD_kiiratas
	movlw	h'0E'
	call	LCD_kurzor_mozgatas
	movlw	'C'
	call	LCD_kiiratas
	movlw	b'11011111'		;(fok)
	call	LCD_kiiratas
	RETURN


	goto$	
	END
