AT24C1024 proteus 2-wire Serial EEPROM 1
注意,读数据时候 if((TWSR & 0xF8) != 0x10)//0x10 重复START 已发。。。不是0x08.还有2次读写之间稍微延时一会。否则不出结果
avr的数据手册写得很好,好多程序源码都有,怪不得这么流行
1
#include
#include "1602.c"
#define uint unsigned int
#define uchar unsigned char
#define START TWCR=(1 void iic_init() uint write_B(uchar page,uint addr,uchar data )//page 0 . 1. 代表17位地址最高位 return 0xffff; return 0xffff; uint read_B(uchar page,uint addr) if((TWSR & 0xF8) != 0x08) return 0xffff; if((TWSR & 0xF8) != 0x10)//0x10 重复START 已发 return 0xffff; void main()
{
TWBR=32;//8mhz/80= 100khz
TWCR=0;
TWSR=0;
//DDRC|=0X03;
//PORTC|=0X03;
}
{
uchar s=0xa0|(page<1);//at24 从地址
START;
while(!(TWCR & (1
return 0xffff;
////////////////
TWDR=s;
TWCR = (1
return 0xffff;
//// /////////
TWDR = (addr>>8); //先发高地址
TWCR = (1
if((TWSR & 0xF8) != 0x28)
return 0xffff;
////////////////
TWDR = (addr&0xff); //地址低8位
TWCR = (1
if((TWSR & 0xF8) != 0x28)//数据已发送接收到ACK
/////////////////
TWDR = data; //数据
TWCR = (1
if((TWSR & 0xF8) != 0x28)//数据已发送接收到ACK
STOP;
}
{
uchar data,s=0xa0|(page<1);//at24 从地址.。@@写最后一位为0
START;
while(!(TWCR & (1
return 0xffff;
////////////////
TWDR=s;
TWCR =(1
return 0xffff;
//// /////////
TWDR = (addr>>8); //先发高地址
TWCR = (1
if((TWSR & 0xF8) != 0x28)
return 0xffff;
////////////////
TWDR = (addr&0xff); //地址低8位
TWCR = (1
if((TWSR & 0xF8) != 0x28)//数据已发送接收到ACK
//重复START
START;
while(!(TWCR & (1
return 0xffff;
TWDR=s|(1);//最后一位1,读
TWCR = (1
//DDRC&=~(0X03);
TWCR = (1
STOP;
//DDRC|=(0X03);
return data;
}
{
uint i,j,k,r;
uchar temp[4], temp1[7]="t[ ]";
uchar table[255];
iic_init();
init_1602();
for(k=0;k<255;k++)
table[k]=k;
for(k=0;k<255;k++)
{
write_B(0,k,k);//第k地址写k
for(i=0;i<10;i++)//一定要延时
for(j=0;j<1141;j++);
}
for(i=0;i<1000;i++)//延时
for(j=0;j<1141;j++);
for(k=0;k<255;k++)
{
r=read_B(0,k);
r=r&0xff;
temp[0]=r/100+0;
temp[1]=r%100/10+0;
temp[2]=r%10+0;
temp[3]=0;
LCD_write_string(1,1,temp);
temp1[2]=k/100+0;
temp1[3]=k%100/10+0;
temp1[4]=k%10+0;
temp1[6]=0;
LCD_write_string(2,0,temp1);
for(i=0;i<1000;i++)
for(j=0;j<1141;j++);
}
while(1);
}
AT24C1024proteus2-wireSeria 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)