	LIST P=18F45K20
	#INCLUDE	<P18F45K20.INC>

	CONFIG	FOSC = HS
	CONFIG	FCMEN		= OFF
	CONFIG	IESO		= OFF
	CONFIG	PWRT		= OFF
	CONFIG	BOREN		= OFF
	CONFIG	BORV		= 22
	CONFIG	WDTEN		= OFF
	CONFIG	WDTPS		= 32768
	CONFIG	CCP2MX		= PORTC
	CONFIG	PBADEN		= OFF
	CONFIG	LPT1OSC		= ON
	CONFIG	HFOFST		= OFF
	CONFIG	MCLRE		= ON
	CONFIG	STVREN		= OFF
	CONFIG	LVP			= OFF
	CONFIG	XINST		= OFF
	CONFIG	DEBUG		= OFF
	CONFIG	CP0			= OFF
	CONFIG	CP1			= OFF
	CONFIG	CP2			= OFF
	CONFIG	CP3			= OFF
	CONFIG	CPB			= OFF
	CONFIG	CPD			= OFF
	CONFIG	WRT0		= OFF
	CONFIG	WRT1		= OFF
	CONFIG	WRT2		= OFF
	CONFIG	WRT3		= OFF
	CONFIG	WRTC		= OFF
	CONFIG	WRTB		= OFF
	CONFIG	WRTD		= OFF
	CONFIG	EBTR0		= OFF
	CONFIG	EBTR1		= OFF
	CONFIG	EBTR2		= OFF
	CONFIG	EBTR3		= OFF
	CONFIG	EBTRB		= OFF
		

	CBLOCK 0X000
	LOOP1, LOOP2,LOOP3, SPIADAT
	ENDC

	ORG	0X000
	GOTO	KEZDODIK

KEZDODIK

#DEFINE		RCS	LATC,7;sram cs láb
#DEFINE		ECS	LATD,4;flash cs láb
#DEFINE		R2CS	LATD,5;sram2 cs láb
#DEFINE		LCS	LATD,6;lcd cs láb
#DEFINE		LDC	LATD,7;lcd regiszrer select

	CLRF	PORTA
	CLRF	LATA
	CLRF	ANSEL
	MOVLW	B'00000000'
	MOVWF	TRISA

	CLRF	PORTB
	CLRF	LATB
	CLRF	ANSELH
	MOVLW	B'00000000'
	MOVWF	TRISB

	CLRF	PORTC
	CLRF	LATC
	MOVLW	B'01010000'
	MOVWF	TRISC

	CLRF	PORTD
	CLRF	LATD
	MOVLW	B'00000000'
	MOVWF	TRISD

	CLRF	PORTE
	CLRF	LATE
	CLRF	ANSEL
	MOVLW	B'00001000'
	MOVWF	TRISE

	MOVLW	B'11000000';SMP, CKE
	MOVWF	SSPSTAT
	MOVLW	B'00000000'
	MOVWF	SSPCON1
	CLRF	INTCON
	BSF		SSPCON1,5;SPI ENGEDÉLYEZVE
	CLRF	SPIADAT
	GOTO	PROGRAM

SPIW;spi írás

	MOVWF	SSPBUF

SPIWVAR

	BTFSS	SSPSTAT,0
	GOTO	SPIWVAR

	RETURN

SPIR;spi olvasás

	MOVLW	B'00000000'
	MOVWF	SSPBUF
SPIRVAR

	BTFSS	SSPSTAT,0
	GOTO	SPIRVAR
	MOVF	SSPBUF,W
	MOVWF	SPIADAT

	RETURN

DELAY

	MOVLW	D'255'
	MOVWF	LOOP1

D1

	MOVLW	D'255'
	MOVWF	LOOP2

D2

	DECFSZ	LOOP2,F
	GOTO	D2
	DECFSZ	LOOP1,F
	GOTO	D1
	RETURN



STOP2

	NOP
	GOTO	STOP2

DELAY2

	MOVLW	D'5'
	MOVWF	LOOP1

DD1

	MOVLW	D'255'
	MOVWF	LOOP2

DD2

	MOVLW	D'255'
	MOVWF	LOOP3

DD3

	DECFSZ	LOOP3,F
	GOTO	DD3
	DECFSZ	LOOP2,F
	GOTO	DD2
	DECFSZ	LOOP1,F
	GOTO	DD1
	RETURN

PROGRAM

	BSF		ECS
	BSF		RCS
	BSF		R2CS
	BSF		LCS
	BSF		LDC;minden periféria 'cs' lába h szinten
	CALL	DELAY
	BCF		RCS;sram1-hez szól
	MOVLW	B'00000001';write status reg
	CALL	SPIW
	MOVLW	B'01000000';bájt címezés, cím növekszik, hold láb be.
	CALL	SPIW
	BSF		RCS
	BCF		RCS
	MOVLW	B'00000010';írás
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	MOVLW	B'10101010';bájt beírás
	CALL	SPIW
	BSF		RCS
	BCF		RCS
	MOVLW	B'00000011';olvasás
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	CALL	SPIR
	MOVFF	SPIADAT,LATB;visszaolvasott bájt portb-re
	BSF		RCS;sram1 hazamehet
	CALL	DELAY2;kis szünet
	BCF		R2CS;sram2 
	MOVLW	B'00000001';write status reg
	CALL	SPIW
	MOVLW	B'01000000';bájt címezéses, cím növekszik, hold láb be.
	CALL	SPIW
	BSF		R2CS
	BCF		R2CS
	MOVLW	B'00000010';írás
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	MOVLW	B'01010101';bájt beírás
	CALL	SPIW
	BSF		R2CS
	BCF		R2CS
	MOVLW	B'00000011';olvasás
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	CALL	SPIR
	MOVFF	SPIADAT,LATB;visszaolvasott bájt a portb-re.
	BSF		R2CS;sram2 küldetése befejeződött.
	CALL	DELAY2;kis pihenés (ledsoron most látszik a bájt)
	BCF		ECS;hozzád szólok most flash.
	MOVLW	B'00000011';olvasás
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	MOVLW	B'00000000';cím
	CALL	SPIW
	CALL	SPIR
	MOVFF	SPIADAT,LATB;
	BSF		ECS;és ennyi!
	GOTO	STOP2


END

