LIST P=16F871
 #INCLUDE "P16F877.INC"
 __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF
	CBLOCK	0x20
	A1
	ENDC
	
#INCLUDE "M_BANK.ASM"

	ORG	0
START
	BANK1
	MOVLW	B'00011000'
	MOVWF	TRISC
	MOVLW	B'00000000'		;Betöltjük az akksiba a TRISD-be valót
	MOVWF	TRISD			;Beletöltjük (mind kimenet a nulla miatt)
	BANK0
	MOVLW	B'00101000'		
	MOVWF	SSPCON			;I2C MASTER MODE BEKAPCSOLVA
	BANK1
	MOVLW	B'00100000'
	MOVWF	SSPCON2			;I2C ALAPHELYZET	
	BSF		SSPSTAT,SMP		;SLEW RATE CONTROL DISABLED
	BCF		SSPSTAT,CKE		;DISABLE SMBUS SPECIFIC INPUTS
	MOVLW	B'00011111'
	MOVWF	SSPADD			;SEBESSÉG BEÁLLÍTÁS
	BANK0
	MOVLW	B'11001100'
	MOVWF	PORTD


HOMEROBEALLIT
	BANK1
	BSF		SSPCON2,SEN		;START BIT
	BTFSC	SSPCON2, SEN	; KÉSZ?
	GOTO	$-1
	BTFSC 	SSPSTAT,R_W 	; R/W SZABAD ? 
	GOTO 	$-1 				
	BANK0
	MOVLW	B'10011110'
	MOVWF	SSPBUF			;CÍM BEVITELE
	BANK1
	BTFSC 	SSPSTAT,R_W 	; R/W SZABAD ? 
	GOTO 	$-1 
	BTFSC	SSPSTAT,ACKSTAT	;ACKBIT ELLENORZES
	GOTO	I2CHALT
	BTFSC 	SSPSTAT,R_W 	; R/W SZABAD ? 
	GOTO 	$-1 				
	BANK0
	MOVLW	B'00000001'
	MOVWF	SSPBUF			;POINTER REGISZTERRE MUTATAS
	BANK1
	BTFSC	SSPSTAT, R_W			; ÍRÁS KÉSZ?
	GOTO	$-1
	BTFSC	SSPSTAT,ACKSTAT	;ACKBIT ELLENORZES
	GOTO	I2CHALT
	BTFSC 	SSPSTAT,R_W 	; R/W SZABAD ? 
	GOTO 	$-1 				
	BANK0
	MOVLW	B'00000010'		;LM75 BEALLITAS
	MOVWF	SSPBUF
	BANK1
	BTFSC	SSPSTAT, R_W			; ÍRÁS KÉSZ?
	GOTO	$-1
	BTFSC	SSPSTAT,ACKSTAT	;ACKBIT ELLENORZES
	GOTO	I2CHALT
	BSF	SSPCON2,PEN			; STOP BIT
	BTFSC	SSPCON2,PEN			; KÉSZ?
	GOTO	$-1
	BANK0


KIOLVASAS
	BANK1
	BSF		SSPCON2,SEN		;START BIT
	BTFSC	SSPCON2, SEN	; KÉSZ?
	GOTO	$-1
	BTFSC 	SSPSTAT,R_W 	; R/W SZABAD ? 
	GOTO 	$-1 				
	BANK0
	MOVLW	B'10011110'
	MOVWF	SSPBUF			;CÍM BEVITELE
	BANK1
	BTFSC	SSPSTAT, R_W	; ÍRÁS KÉSZ?
	GOTO	$-1
	BTFSC	SSPSTAT,ACKSTAT	;ACKBIT ELLENORZES
	GOTO	I2CHALT
	BTFSC 	SSPSTAT,R_W 	; R/W SZABAD ? 
	GOTO 	$-1 				
	BANK0
	MOVLW	B'00000000'
	MOVWF	SSPBUF			;POINTER, REGISZTERRE MUTATAS
	BANK1
	BTFSC	SSPSTAT, R_W			; ÍRÁS KÉSZ?
	GOTO	$-1
	BTFSC	SSPSTAT,ACKSTAT	;ACKBIT ELLENORZES
	GOTO	I2CHALT	
	BSF		SSPCON2,RSEN
	BTFSC	SSPCON2,RSEN	;REPEAT START
	GOTO	$-1				; KÉSZ?
	BTFSC 	SSPSTAT,R_W 	; R/W SZABAD ? 
	GOTO 	$-1 				
	BANK0
	MOVLW	B'10011111'
	MOVWF	SSPBUF			;CÍM BEVITELE
	BANK1
	BTFSC	SSPSTAT, R_W			; ÍRÁS KÉSZ?
	GOTO	$-1
	BSF		SSPCON2,RCEN	;FOGADÁS BEÁLLÍTÁS
	BTFSC	SSPCON2,RCEN	;KÉSZ?
	GOTO	$-1
	BTFSC	SSPSTAT, R_W	; ÍRÁS KÉSZ?
	GOTO	$-1
	BANK0
	MOVFW	SSPBUF
	MOVWF	PORTD			;PORTD-RE EREDMÉNY KIRAKÁS
	BANK1
	BSF		SSPCON2,ACKEN	;ACK BIT KÜLDÉS
	BTFSC	SSPCON2,ACKEN	;KÉSZ?
	GOTO	$-1
	BTFSC	SSPSTAT, R_W	; ÍRÁS KÉSZ?
	GOTO	$-1
	BANK0
	MOVFW	SSPBUF
	MOVWF	A1			;ELTÁROL
	BANK1
	BSF		SSPCON2,PEN		;STOP I2C
	BTFSC	SSPCON,PEN		;KÉSZ?
	GOTO	$-1
	BCF		SSPCON2,RCEN	;KÜLDÉS BEÁLLÍTÁS
	GOTO	KIOLVASAS
	
I2CHALT
	MOVLW	B'10101010'
	MOVWF	PORTD
GOTO	I2CHALT



	END