	list		p=16F887, w=-302
	include		<P16F887.INC>
	__config	_CONFIG1,0xE0E4
	__config	_CONFIG2,0xF8FF

	#define bSCL	3
	#define bSDA	4

org 0

init
	BANKSEL	TRISC		
	CLRF	TRISC
	CLRF	TRISD
	BSF		TRISC,bSCL	
	BSF		TRISC,bSDA
	BANKSEL PORTD
	CLRF	PORTD

	

init_i2c
	BANKSEL	SSPCON		
	MOVLW	B'00101000'	;PORTC SCL, SDA I2C LÁBAK, MASTER MODE 
	MOVWF	SSPCON
	BANKSEL	SSPSTAT	
	MOVLW	B'10000000'	;100 KHz, 
	MOVWF	SSPSTAT
	MOVLW	0x31		;20mhz --> 100khz | 20000/(4*100)-1
	MOVWF	SSPADD
	BCF		PIE1,SSPIE	
	BCF		INTCON,PEIE	
	BCF		INTCON,GIE	
	BCF		PIR1,SSPIF	;INTERUPT JELZŐBIT TÖRLÉSE, HOGY BIZTOS MŰKÖDJÖN: START/STROP/ACK
	BANKSEL	SSPCON		


I2CByteWrite
	    call    I2CBSTART           ; start i2c
	    movlw   0x00				; cím, rw bit 0 - A szimulátorban a chip címe 0000 000-ra lett állítva
    	call    I2CTX               ; küldés
		;----------------
		movlw	0x00				; cím 
	    call    I2CTX
		movlw	0x00				; cím
	    call    I2CTX
		;----------------
		movlw	0xEE				; adat
    	call    I2CTX               ; küldés
	   	call    I2CBSTOP            ; stop

		BSF		PORTD,0				;végigfutott, d0 led bekapcsol

I2Cbstop_wait0
	    bcf     STATUS,RP0          ; Select Bank 00
bstop_wait
	    btfss   PIR1,SSPIF          ; Check if operation completed
	    goto    bstop_wait          ; If not, keep checking
    	return

I2CTX
	    bcf		PIR1,SSPIF          ; Clear SSP interrupt flag
    	movwf	SSPBUF              ; Write byte out to device

		goto	I2Cbstop_wait0		; Wait for oparation completed

I2CBSTART
	    bcf     PIR1,SSPIF          ; Clear SSP interrupt flag
	    bsf     STATUS,RP0          ; Select Bank 01
	    bsf     SSPCON2,SEN         ; Generate Start condition
		goto	I2Cbstop_wait0

I2CBSTOP
	    bcf     PIR1,SSPIF          ; Clear SSP interrupt flag
	    bsf     STATUS,RP0          ; Select Bank 01
	    bsf     SSPCON2,PEN         ; Generate Stop condition	
		goto	I2Cbstop_wait0

END