www.pudn.com > IIC_Protocol.rar > IIC_Protocol.asm


/******************************************************** 
*	Author: hq.yin                                  * 
*	Copyright: HQ.YIN MicroProcessor Laboratory     * 
********************************************************/ 
 
SCL EQU P1.0 
SDA EQU P1.1 
 
/*start*/ 
START: 
	SET SDA 
	SET SCL 
	CALL DELAY 
	CLR SDA 
	CALL DELAY 
	CLR SCL 
	CALL DELAY 
	RET 
 
/*stop*/ 
STOP: 
	CLR SDA 
	CLR SCL 
	CALL DELAY 
	SET SCL 
	CALL DELAY 
	SET SDA 
	CALL DELAY 
	RET 
 
/* 
**************************************** 
* send data 
* reference: R6 is you want to send data 
**************************************** 
*/ 
SEND: 
	MOV R7,#0x09 
	MOV A,R6 
	CLR SDA 
	CLR SCL 
	CALL DELAY 
blop:	RRC A		/*8th loop*/ 
	MOV SDA,C 
	CALL DELAY 
	SET SCL 
	CALL DELAY 
	CLR SCL 
	CALL DELAY 
	DJNZ R7,blop 
	RET 
 
/* 
***************************************** 
* receive data 
* reference: R6 is you receive register 
***************************************** 
*/ 
RECEIVE: 
	CLR A 
	CLR C 
	MOV R7,A 
	CLR SCL 
	SET SDA 
	CALL DELAY 
wch:	SET SCL		/*8th loop*/ 
	CALL DELAY 
	INC R7 
	MOV C,SDA 
	RLC A 
	CALL DELAY 
	CLR SCL 
	CALL DELAY 
	CJNE R7,#0x08,wch 
	MOV R6,A 
	RET 
 
/*answer*/ 
ANS: 
	CLR SCL 
	CLR SDA 
	CALL DELAY 
	SET SCL 
	CALL DELAY 
	CLR SCL 
	CALL DELAY 
	RET 
 
/*check ANS*/ 
CANS: 
	RET 
 
/*delay*/ 
DELAY:	/*24 Mhz,total time :0.1 ms*/ 
	MOV A,#0x0c8 
	MOV R7,A 
del:	DJNZ R7,del 
	RET