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