; Orange programmer module v1.6 ; June 03. 2000-2005 V. G. & CnCLab ; ; CHIP=X24C01,128x8 ; X24C01 (XICOR) SOCKET=1 ;"I2C" PING=SCL,0 PING=SDA,1 ;PINO=TEST,2 ;PINO=A0, 3 ;PINO=A1, 4 ;PINO=A2, 5 CDELAY = 5 ; one set delay [!#SETUP] $WDELAY=15000 [INIT] ; Section RESET ( EEPROM ATMEL ) ;A0=0,A1=0,A2=0 ;TEST=0 ; pin TEST = 0 (Dont't care XICOR) P=100 SCL=0,SDA=1 ; set SDA=1 P=1000 [READ] SDA=1,SCL=1,SDA=0,SCL=0 ; Start LOOP=(6,0){SDA=ADR[I],SCL=P} ; out 7 bits Adr SDA=1,SCL=P ; out 1 bit, 1=Read Mode SDA=1,SCL=1,SDA?0 ; ACKN check SCL=0 ; end out Adr LOOP=(7,0) {SCL=1,DATA[I]=SDA,SCL=0} ; read byte Data SDA=1,SCL=P ; out master NO_ACKN SCL=0,SDA=0,SCL=1,SDA=1 ; Stop [WRITE] SDA=1,SCL=1,SDA=0,SCL=0 ; Start LOOP=(6,0) {SDA=ADR[I],SCL=P} ; out 7 bits Adr SDA=0,SCL=P ; out 1 bit, 0=Write Mode SDA=1,SCL=1,SDA?0 ; ACKN check SCL=0 ; end out Adr LOOP=(7,0) {SDA=DATA[I],SCL=P} ; out 8 bits Data SDA=1,SCL=1,SDA?0 ; ACKN check SCL=0 ; end out Data SCL=0,SDA=0,SCL=1,SDA=1 ; Stop (WriteBegin) P=$WDELAY ; delay: 10 ms (Write Time)