大家帮我看看以下i2c程序,为何不可
#include <mega128.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x12
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <delay.h>
#include <stdio.h>
#define EEPROM_BUS_ADDRESS 0x0ae
/* 从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;
}
/* 向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();
/* 10 延时等待写操作完成 */
delay_ms(10);
}
main()
{
/* 初始化I2C 总 线 */
i2c_init();
/* 从地址0到127 写入55h */
for(j=0;j <128;j++)
eeprom_write(j,0x55);
/* 从地址AAh 读一个字节 */
for(j=0;j <128;j++)
Read_EEPROM[j] = eeprom_read(j);
for(j=0;j <128;j++)
putchar(Read_EEPROM[j]);
while(1);
}
发表时间:2003年8月6日18:16:28