EEPROM------AT24C01A_IIC总线驱动读写程序.doc_第1页
EEPROM------AT24C01A_IIC总线驱动读写程序.doc_第2页
EEPROM------AT24C01A_IIC总线驱动读写程序.doc_第3页
EEPROM------AT24C01A_IIC总线驱动读写程序.doc_第4页
EEPROM------AT24C01A_IIC总线驱动读写程序.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*河北工程大学信电学院自动化系调试成功EEPROM-AT24C01A_IIC总线驱动读写程序晶振:6MHz目标板:STC90C52AD编译环境:Keil C uVision V2.38a*/#include #include /由于是01A,1Kbit,故此这里第一个字节的读写格式是1010,A2,A1,A0,R/W#define Read_Addr 0xa1#define Write_Addr 0xa0 #define uchar unsigned char/总线的定义,时钟线P1.0,数据线P1.1sbit SCL=P10;sbit SDA=P11;/短码数组uchar tab=2,5,6;void Start() SDA=1; _nop_(); SCL=1; _nop_(); SDA=0; _nop_(); SCL=0; /可以视作第一个SCL=0void Stop() SDA=0; _nop_(); SCL=1; _nop_(); SDA=1;/-bit Write_Byte(uchar DATA) bit Ack; uchar i; for(i=0;i8;i+) SDA=(bit)(DATA&0x80);_nop_();SCL=1;_nop_();_nop_();SCL=0; /第九个SCL=0DATA=1; SDA=1; /主机释放SDA _nop_(); _nop_(); SCL=1; /第九个SCL=1 _nop_(); /SDA=1; /对程序好像没出来影响 Ack=SDA; /前面是否先置1,特别注意是否是准双向口 SCL=0; /下一个字节的第一个SCL=0 return (Ack);uchar Read_Byte() uchar DATA,i; for(i=0;i8;i+) SCL=1;DATA=1;/注意强制类型转换SDA=1; /对程序好像没出来影响DATA|=(uchar)SDA;/前面是否先置1,特别注意是否是准双向口SCL=0; return(DATA);/-/读当前地址的数据uchar Read_Current_Addr() uchar DATA; Start(); Write_Byte(Read_Addr); DATA=Read_Byte(); Stop(); return(DATA);/向指定地址读数据uchar Read_Random_Addr(uchar addr) /256*8byte=1024Kbit,uchar类型正好合适 uchar DATA; Start(); Write_Byte(Write_Addr); Write_Byte(addr); DATA=Read_Current_Addr(); return(DATA);/*-功能:从EEPROM中给定一个地址连续读NLEN个字节数据存放在以指针nContent开头的往下内容。bit Read_Flash ( unsigned char *nContent, unsigned char nAddr, unsigned char nLen );bit Write_Flash ( unsigned char *nContent, unsigned char nAddr, unsigned char nLen );-*/向指定地址写数据void Write_Random_Addr(uchar addr,uchar DATA) Start(); Write_Byte(Write_Addr); Write_Byte(addr); Write_Byte(DATA); Stop();/-/数码管显示延时void delay(void) uchar i,j; for(i=0;i5;i+) for(j=0;j150;j+);/显示void display(void) P0=tab0; P2=1; delay(); P0=tab1; P2=2; delay(); P0=tab2; P2=4; delay();/-/主程序void main() SDA=1; SCL=1; Write_Random_Addr(0x02,0x08); delay(); /延时一定需要加,特别应该是毫秒级别上下 Write_Random_Addr(0x03,0x06); delay(); /延时一定需要加,特别应该是毫秒级别上下 Write_Random_Addr(0x04,0x04); delay(); /延时一定需要加,特别应该是毫秒级别上下 /for(i=0;i3;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论