|
楼主 |
发表于 2012-1-9 21:43:16
|
显示全部楼层
【进度】
2.片外EEPROM读写
片外存储单元采用AT24C02测试,生成环境可能使用24c16
头文件24C02.H
sbit sda = P0^0;
sbit scl = P0^1;
void start(){sda=1;delayns();scl=1;delayns();sda=0;delayns();}
void stop(){sda=0;delayns();scl=1;delayns();sda=1;delayns();}
void response(){uchar i;scl=1;delayns();while((sda==1)&&(i<250))i++;scl=0;delayns();}
void init(){sda=1;delayns();scl=1;delayns();}
void write_byte(uchar date){uchar i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;scl=0;delayns();sda=CY;delayns();scl=1;delayns();}scl=0;delayns();scl=1;delayns();}
uchar read_byte(){uchar i,k;scl=0;delayns();sda=1;delayns();for(i=0;i<8;i++){scl=1;delayns();k=(k<<1)|sda;scl=0;delayns();}return k;}
void write_add(uchar address,uchar date){start();write_byte(0xa0);response();write_byte(address); response();write_byte(date);response();stop();}
uchar read_add(uchar address){uchar date;start();write_byte(0xa0);response();write_byte(address);response();start();write_byte(0xa1);response();date=read_byte();stop();return date;}
在主函数里调用
display_num(1,0,read_add(1));//使用lcd显示地址1(第一扇区)读出的内容
write_add(3,128);//在地址3写入数据128 |
|