Home     Projects     Micro     Tools     Delphi     Developer     Site map
HOME  
 
 
       
Slave address of I2C device

DOWNLOAD    MAIN
;Slave address of I2C device to whom we are talking
#DEFINE SLAVEID 0x90	; Set this for your device
;*****************************************
;	MACRO DEFINITIONS
; Generic PIC Assembly macro definitions
; by Randy Gamage
;
ifpos	macro arg1
	btfss arg1,7
	endm
ifneg	macro arg1
	btfsc arg1,7
	endm
	
bank0 	macro
	bcf STATUS,RP1
	bcf STATUS,RP0
	endm
	
bank1	macro
	bcf STATUS,RP1
	bsf STATUS,RP0
	endm
	
bank2 	macro
	bsf STATUS,RP1
	bcf STATUS,RP0
	endm
	
bank3 	macro
	bsf STATUS,RP1
	bsf STATUS,RP0
	endm
;
;=================================
; I2C Routines (using H/W I2C Peripheral
;=================================
I2CInit:

	movlw 0x28	
	movwf SSPCON
	bank1
	clrf SSPCON2^0x80	
	movlw 49	
	movwf SSPADD^0x80
	bsf SSPSTAT^0x80,SMP	
	bcf SSPSTAT^0x80,CKE
	bank0
	bcf PIR1,SSPIF
	bcf PIR2,BCLIF
	return

I2CWaitForIdle:
	bank1
I2C_WFI:
	movf SSPCON2^0x80,W	
	andlw 0x1F
	skipz
	goto I2C_WFI
	ifset SSPSTAT^0x80,R_W
	goto $ - 1
	bank0
	return
	
I2CStart:
	call I2CWaitForIdle
	bank1
	bsf SSPCON2^0x80,SEN	
	bank0
	return

I2CRepStart:
	call I2CWaitForIdle
	bank1
	bsf SSPCON2^0x80,RSEN	
	bank0
	return

I2CStop:
	call I2CWaitForIdle
	bank1
	bsf SSPCON2^0x80,PEN	
	bank0
	return
	
I2CRead:
	call I2CWaitForIdle
	bank1
	bsf SSPCON2^0x80,RCEN	
	bank0
	call I2CWaitForIdle
	movf SSPBUF,W
	movwf I2CData
	call I2CWaitForIdle
	bank1
	bsf SSPCON2^0x80,ACKDT
	bsf SSPCON2^0x80,ACKEN
	bank0	
	return

I2CReadwAck:

	call I2CWaitForIdle
	bank1
	bsf SSPCON2^0x80,RCEN	
	bank0
	call I2CWaitForIdle
	movf SSPBUF,W
	movwf I2CData
	call I2CWaitForIdle
	bank1
	bcf SSPCON2^0x80,ACKDT
	bsf SSPCON2^0x80,ACKEN
	bank0	
	return

I2CWrite:
	movwf I2CData	
	call I2CWaitForIdle
	movf I2CData,W
	movwf SSPBUF
	call I2CWaitForIdle
	return
		  

Copyright(c) 2005-2010 sixca.com, All rights reserved.
Best view @ 800X600, IE 6.0 up    Terms of Use  Privacy Policy