«

»

Aug 30

Memprogram EEPROM I2C dengan Bahasa C

Berikut adalah contoh bagaimana meng-akses I2C EEPROM Atmel 24C02 menggunakan CodeVision-AVR:

/* bus I2C dihubungkan dengan PORTB */
/* sinyal SDA pada bit 3 */
/* sinyal SCL pada bit 4 */

#asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm

#include <i2c.h>
#include <delay.h>
#define EEPROM_BUS_ADDRESS 0xa0

/* membaca satu byte dari EEPROM */
unsigned char eeprom_read(unsigned char address) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}

/* menulis satu byte ke EEPROM */
void eeprom_write(unsigned char address, unsigned char data) {

i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();

/* jeda 10ms untuk menyelesaikan penulisan */
delay_ms(10);
}

void main(void) {
unsigned char i;

/* inisialisasi bus I2C */
i2c_init();

/* menulis byte 55h pada alamat AAh */
eeprom_write(0xaa,0x55);

/* membaca byte dari alamat AAh */
i=eeprom_read(0xaa);

while (1); /* loop selamanya */
}