
			ORG 0000H
			LJMP MAIN
			ORG 0030H
			SCL EQU P3.5
			SDA EQU P3.4
			LED EQU P3.3
			LED2 EQU P3.2
			TST EQU P1.2
			DYTA EQU R5
			ADDRE EQU R6
			COUNT EQU R7
MAIN:		CLR TST
			SETB LED
			CLR LED2
			CLR A
			MOV DYTA,A
			MOV ADDRE,A
			MOV COUNT,A
AGAIN:		SETB TST
			JB TST,$
			JNB TST,$
			SETB LED
;============================
			MOV DPTR,#MYDATA
			MOV ADDRE,#000H
			CALL PAGE_WRITE
;============================			
			
UNUSUAL:	CLR LED
			SJMP AGAIN

START:		SETB SDA
			SETB SCL
			JNB SDA,END_E
			JNB SCL,END_E
			NOP
			CLR SDA
			NOP
			NOP
			NOP
			NOP
			NOP
			CLR SCL
			CLR C
			JMP END_N
END_E:		SETB C
END_N:		RET

STOP:		CLR SDA
			NOP
			NOP
			SETB SCL
			NOP
			NOP
			NOP
			NOP
			NOP
			SETB SDA
			RET

NAK:		SETB SDA
			NOP
			NOP
			SETB SCL
			NOP
			NOP
			NOP
			NOP
			CLR SCL	
			RET

SEND_DATA:	PUSH B
			MOV B,#8
BACK:		RLC A
			MOV SDA,C
			NOP
			SETB SCL
			NOP
			NOP
			NOP
			NOP
			CLR SCL
			DJNZ B,BACK
			SETB SDA
			NOP
			NOP
			SETB SCL
			NOP
			NOP
			NOP
			NOP
			MOV C,SDA
			MOV LED2,C
			CLR SCL
			POP B
			RET
			
READ_DATA:	SETB SDA
			PUSH B
			MOV B,#8
BACK_2:			NOP
			NOP
			NOP
			SETB SCL
			NOP
			NOP
			MOV C,SDA
			RLC A
			CLR SCL
			DJNZ B,BACK_2
			POP B
			RET
			
WRITE_BYTE:	CALL START
			JC	END_2			;IF BUS NOT READY THEN CLOSE
			MOV A,#0A0H
			CALL SEND_DATA
			JC END_1			;IF NO ACK THEN ISSUE STOP AND CLOSE
			MOV A,ADDRE
			CALL SEND_DATA
			JC END_1
			MOV A,DYTA
			CALL SEND_DATA
			JC END_1
			CLR C
END_1:		CALL STOP
END_2:		RET

PAGE_WRITE:	CALL START
			JC	END_2			;IF BUS NOT READY THEN CLOSE
			MOV A,#0A0H
			CALL SEND_DATA
			JC END_1			;IF NO ACK THEN ISSUE STOP AND CLOSE
			MOV A,ADDRE
			CALL SEND_DATA
			JC END_1
P_LOOP:			CLR A
			MOVC A,@A+DPTR
			JZ END_3		
			CALL SEND_DATA
			JC END_3
			INC DPTR
			SJMP P_LOOP
			CLR C
END_3:		CALL STOP
END_4:		RET


DELAY:		MOV R7,#100
AGN:		MOV R6,#250
HRE:		NOP
			NOP
			DJNZ R6,HRE
			DJNZ R7,AGN
			RET
						
MYDATA:		DB "DAREDEVIL",0			
			END					
