I2C程序(AT24C1024)测试通过的

发布时间 : 星期六 文章I2C程序(AT24C1024)测试通过的更新完毕开始阅读

return(receive_data);

}

//********************************************* //向AT24C1024写入数据 //********************************************* void write_1024(uchar send[]) {

int i; start();

write_byte(0xa0);

check_ACK();

write_byte(0x00); check_ACK(); write_byte(0x00); check_ACK();

for(i=0;i<16;i++)

{

//启动总线 //发送器件地址

//发送器件片内高8位地址 //检查从机是否应答

//发送器件片内低8位地址 //写16个数

//将sind[]数组里面的数据写入AT24C1024

write_byte(send[i]);

check_ACK();

} stop();

//停止总线

}

//********************************************* //从AT24C1024读出数据 //********************************************* void read_1024(uchar receive_data[]) {

uchar i; start(); write_byte(0xa0);

check_ACK(); write_byte(0x00); check_ACK(); write_byte(0x00); check_ACK(); start(); write_byte(0xa1); check_ACK(); for(i=0;i<16;i++)

//启动总线 //发送器件地址

//检查从机是否应答

//发送器件片内高8位地址 //发送器件片内低8位地址

//再次启动总忂

//发读命令

//读16个数

//读出来的数据存到receivedata[]

//是否读完,未读完全部数

{

receive_data[i]=read_byte();

数组中 if(i==15) 据,则应答0

NoACK(); else

ACK(); } stop();

}

void main()

{

uchar send_data[16]={1,9,8,8,0,5,2,3,1,9,8,8,0,9,0,6}; uchar receive_data[16]={0};

while(1) {

delay(300); write_1024(send_data); delay(1000);

read_1024(receive_data);

P3=receive_data[2]; } }

//停止总线

//要写入到AT24C1024数据 //存储从AT24C1024读出的数

//延时等待蕊片复位 //调用写AT24C1024程序 //AT24C1024写入延时

//调用读AT24C1024程序

联系合同范文客服:xxxxx#qq.com(#替换为@)