代码:
#include <mega16.h>
#include <stdio.h>
#include <i2c.h>
#include <delay.h>
// Declare your global variables here
#define EEPROM_BUS_ADDRESS 0xa0
#asm.equ __i2c_port=0x15.equ __sda_bit=1 .equ __scl_bit=0
#endasm
unsigned char eeprom_read(unsigned int address)
{unsigned char data;i2c_start();i2c_write(EEPROM_BUS_ADDRESS);i2c_write(address>>8);i2c_write(address);i2c_start();i2c_write(EEPROM_BUS_ADDRESS|1);data=i2c_read(0);i2c_stop();return data;
}
void eeprom_write(unsigned int address,unsigned char data)
{i2c_start();i2c_write(EEPROM_BUS_ADDRESS);i2c_write(address>>8);i2c_write(address);i2c_write(data);i2c_stop(); delay_ms(10);}
void main(void)
{
// Declare your local variables hereunsigned char i;PORTA=0XFF;DDRA=0XFF;UCSRA=0;UCSRB=0X18;UCSRC=0X86;UBRRH=0X00;UBRRL=0X19;i2c_init();eeprom_write(0x00aa,0x5a);i=eeprom_read(0x00aa);if(i==0x5a)PORTA.7=0;elsePORTA.6=0;
while (1){// Place your code here}
}
仿真效果图: