'{$STAMP BS2p} '{$PBASIC 2.5} 'Program description 'use 2 MAX7300 modules to address a DS1248 static ram (128K x 8) 'for write/read test '*******I2C pin numbers **************************************** SDA PIN 0 'I2C serial data line SCL PIN 1 'I2C serial clock line '******* MAX7300 module addresses ****************************** SlvAddr1 CON $80 SlvAddr2 CON $82 '******* Constants ********************************************* Config_addr CON $04 'addresses for 7300 ports Port_config_Adr CON $09 P_Cfg_12_15 CON $0B P_Cfg_16_19 CON $0C P_Cfg_20_23 CON $0D P_Cfg_24_27 CON $0E P_Cfg_28_31 CON $0F Ports_12_19 CON $4C Port_20 CON $34 Ports_20_27 CON $54 Port_28 CON $3C Ports_29_31 CON $5D '******* Varables ********************************************* I2Cdata VAR Byte Wrt_data VAR Byte RAM_Addr VAR Word RAM_addr0 VAR RAM_Addr.BYTE0 RAM_addr1 VAR RAM_Addr.BYTE1 RAM_addr2 VAR Nib Init_7300: 'initialize MAX7300 and data/addr I2COUT sda,SlvAddr1,Config_Addr,[$01] 'take 7300's out of shutdown mode' I2COUT sda,SlvAddr2,Config_Addr,[$01] I2COUT sda,SlvAddr2,Config_Addr,[$01] I2COUT sda,SlvAddr1,Port_config_adr,[REP %01010101\7] 'make all lines outputs I2COUT sda,SlvAddr2,Port_config_adr,[REP %01010101\7] I2COUT sda,SlvAddr2,Ports_29_31,[$7] 'set control lines high (CE,WE,OE ) Wrt_data = $01 RAM_addr0 = $01 Main: 'write to RAM I2COUT sda,SlvAddr2,P_Cfg_12_15, [REP %01010101\2] 'make data lines outputs I2COUT sda,Slvaddr1,Ports_12_19, [RAM_addr0,RAM_Addr1,RAM_Addr2] I2COUT sda,SlvAddr2,Ports_12_19, [Wrt_Data] I2COUT sda,SlvAddr2,Ports_29_31, [$01] 'bring OE & WE low (active) I2COUT sda,SlvAddr2,Ports_29_31, [$07] 'all control lines high (inactive) I2COUT sda,SlvAddr2,P_Cfg_12_15, [REP %10101010\2] 'make data lines inputs Main2: 'read from RAM I2COUT sda,Slvaddr1,Ports_12_19, [RAM_addr0,RAM_Addr1,RAM_Addr2] I2COUT sda,SlvAddr2,Ports_29_31, [$4] 'bring OE & CE low (active) I2CIN sda,SlvAddr2,Ports_12_19, [i2cdata] I2COUT sda,SlvAddr2,Ports_29_31, [$7] 'all control lines high ' IF i2cdata = wrt_data THEN Main4 DEBUG "data1 =",HEX2 i2cdata,TAB Main4: RAM_Addr = RAM_Addr +1 Wrt_Data = Wrt_Data +1 GOTO main