Em loay hoay mãi từ sáng tới giờ mà vẫn chưa hiểu sai ở đâu. các bác chỉ giúp em xem em sai ở đâu với!
Code:
#include <mega128.h>
#include <delay.h>
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <i2c.h>
#define EEPROM_BUS_ADDRESS 0xa0
void eeprom_write(unsigned char address, unsigned char data)
{
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();
delay_ms(10);
}
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);
return data;
}
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
i2c_init();
while (1)
{
eeprom_write(0x55,0x18);
PORTA = eeprom_read(0x55);
};
}
Em muốn ghi vao 24C04 rồi đọc ra và hiển thị cấp giá trị ấy lên port A. khi mô phỏng port A bằng 1 tất (giá trị = 255) ((((((((
Code:
#include <mega128.h>
#include <delay.h>
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <i2c.h>
#define EEPROM_BUS_ADDRESS 0xa0
void eeprom_write(unsigned char address, unsigned char data)
{
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();
delay_ms(10);
}
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);
return data;
}
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0x00;
i2c_init();
while (1)
{
eeprom_write(0x55,0x18);
PORTA = eeprom_read(0x55);
};
}
Em muốn ghi vao 24C04 rồi đọc ra và hiển thị cấp giá trị ấy lên port A. khi mô phỏng port A bằng 1 tất (giá trị = 255) ((((((((
Comment