;============================[SD kártya teszt]=================================
;Mikrovezérlő típusa:
	PROCESSOR 18F4550
#INCLUDE <P18F4550.INC>
;Órajel: 48Mhz (12MIPS)
#INCLUDE <CONFIG.INC>
;-------------------------------[ Változók ]-----------------------------------
	cblock 0x00
Out,Delay1,Delay2,Delay3,Loop1,Loop2,Loop3,x1,y1,Charbuff,Rotlx,Rotdy,RXDATA
TXDATA,teszt,bit_count
	endc
;============================[Főprogram kezdete]===============================
	org 0x00
	call	INIT_PORT
	call	INIT_SPI
	call	SD_CARD


	movlw	B'00000001'			;Program végét jelző futófény
	movwf	Out
	clrf	Delay1
	clrf	Delay2
Main:
	movlw	D'10'
	movwf	Delay3
Loop:	
	decfsz	Delay1,f
	goto	Loop
	decfsz	Delay2,f
	goto	Loop
	decfsz	Delay3,f
	goto	Loop
	rlncf	Out,f
	movlw	0x01
	btfsc	Out,4
	movwf	Out
	movff	Out,LATA
	goto	Main

;===========================================================================
;-------------------------[Portok inicializálása]---------------------------
INIT_PORT:
	movlw	B'11110000'		;PORTA 0-3 kimenet
	movwf	TRISA
	movlw	B'00001111'		;Digitális kimenetek
	movwf	ADCON1
	movlw	0x07
	movwf	CMCON
	clrf	PORTA
	clrf	LATA

	movlw	B'11111101'		;PORTB 0-1 kimenet/bemenet	(SPI: SCK,SDI)
	movwf	TRISB
	clrf	PORTB
	clrf	LATB

	movlw	B'01111111'		;PORTC 0-2 és 7 kimenet	(SPI: SDO)
	movwf	TRISC
	clrf	PORTC
	clrf	LATC
	return
;-------------------------[SPI inicializáslás]---------------------------------
INIT_SPI:
	movlw	B'11111100'		;Timer2 config
	movwf	T2CON
	clrf	SSPSTAT
	movlw	B'00110011'		;Adat felfutó élre,Master mode,TMR2/2
	movwf	SSPCON1
	return
;--------------------------[SD kártya kezelő rutin]----------------------------
SD_CARD:
	movlw	0x0A
	movwf	Delay3
	
	bcf		PORTB,2					
	bcf		TRISB,2					;Chip select

	movlw	0x40					;Reset
	movwf	SSPBUF
send31:
	btfss	SSPSTAT,BF
	bra		send31
	bcf		SSPSTAT,BF

	call	DELAY

	movlw	0x00					;32 bit küldés
	movwf	SSPBUF
recive31:							
	btfss	SSPSTAT,BF
	bra		recive31
	movf	SSPBUF,w

	call	DELAY

	movlw	0x00				
	movwf	SSPBUF
recive32:							
	btfss	SSPSTAT,BF
	bra		recive32
	movf	SSPBUF,w

	call	DELAY

	movlw	0x00					
	movwf	SSPBUF
recive33:							
	btfss	SSPSTAT,BF
	bra		recive33
	movf	SSPBUF,w

	call	DELAY

	movlw	0x00				
	movwf	SSPBUF
recive34:							
	btfss	SSPSTAT,BF
	bra		recive34
	movf	SSPBUF,w

	call	DELAY

	movlw	0x95					;CRC				
	movwf	SSPBUF
recive35:							
	btfss	SSPSTAT,BF
	bra		recive35
	movf	SSPBUF,w

	call	DELAY
;------------------------------ Válaszra várva...
	movlw	0xFF				
	movwf	SSPBUF
recive36:							
	btfss	SSPSTAT,BF
	bra		recive36
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF				
	movwf	SSPBUF
recive37:							
	btfss	SSPSTAT,BF
	bra		recive37
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF				
	movwf	SSPBUF
recive55:							
	btfss	SSPSTAT,BF
	bra		recive55
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF				
	movwf	SSPBUF
recive38:							
	btfss	SSPSTAT,BF
	bra		recive38
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF				
	movwf	SSPBUF
recive39:							
	btfss	SSPSTAT,BF
	bra		recive39
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF				
	movwf	SSPBUF
recive40:							
	btfss	SSPSTAT,BF
	bra		recive40
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF				
	movwf	SSPBUF
recive41:							
	btfss	SSPSTAT,BF
	bra		recive41
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF					
	movwf	SSPBUF
recive42:							
	btfss	SSPSTAT,BF
	bra		recive42
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF				
	movwf	SSPBUF
recive43:							
	btfss	SSPSTAT,BF
	bra		recive43
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF					
	movwf	SSPBUF
recive44:							
	btfss	SSPSTAT,BF
	bra		recive44
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF					
	movwf	SSPBUF
recive45:							
	btfss	SSPSTAT,BF
	bra		recive45
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF					
	movwf	SSPBUF
recive46:							
	btfss	SSPSTAT,BF
	bra		recive46
	movf	SSPBUF,w

	call	DELAY

	movlw	0xFF					
	movwf	SSPBUF
recive47:							
	btfss	SSPSTAT,BF
	bra		recive47
	movf	SSPBUF,w

	call	DELAY

	return
;---------------------------[Késleltető szubrutin]-----------------------------
DELAY:			
	movlw	0xFF	;Késleltetés
	movwf	Delay1
	movlw	0xFF
	movwf	Delay2
DLOOP:
	decfsz	Delay1		
	goto	DLOOP
	decfsz	Delay2
	goto	DLOOP
	return
;------------------------------------------------------------------------------

	end