电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

单片机读写24C01

单片机读写24C01_第1页
1/6
单片机读写24C01_第2页
2/6
单片机读写24C01_第3页
3/6
单片机读写 24C01~24C16程序 51 单片机 2009-08-14 10:13 阅读150 评论0 字号: 大 中 小 单片机读写24C01~ 24C16 程序 AT89S52 晶振频率为11.0592MHz 指令周期:1.0852us 功能说明:24C01-16 程序,能读写:24C01、24C02、24C04、24C08、24C16 读出的数据 送 P1 口显示 #include "reg52.h" #include "intrins.h" #define uchar unsigned char #define uint unsigned int sbit sda=P3^7;//;模拟 I2C 数据传送位 sbit scl=P3^6;//;模拟 I2C 时钟控制状态标志 void delay1(uint z)//延时为 1ms { uchar x,x1; for(;z>0;z--) { for(x=0;x<114;x++) { for(x1=0;x1<1;x1++); } } } void delay()//5us 延时 { _nop_(); _nop_(); _nop_(); } void star()//开始 { sda=1; delay();//5us 延时 scl=1; delay();//5us 延时 sda=0; delay();//5us 延时 } void stop()//停止 { sda=0; delay();//5us 延时 scl=1; delay();//5us 延时 sda=1; delay();//5us 延时 } void ack()//应答 { uchar z=0; while((sda==1)&&(z<50))z++;//条件判断, sda=1,则没有应答。如果没有应答则延时:z<50,z++;后返回 scl=0; delay();//5us 延时 } ///写一个数据函数 //器件写地址 slave_write_address //字节地址 byte_address //待写入数据 data_data void write(uchar slave_write_address,uchar byte_address,uchar data_data)//写一个数据 { uchar temp,temp1,i,ii; star();//开始 for(ii=0;ii<3;ii++)//根据 24CXX 文档资料,和时序图,按顺序送:器件写地址,字节地址,数据 { if(ii==0) { temp=slave_write_address;//送 器件写地址 temp1=slave_write_address; } else if(ii==1) { temp=byte_address;//送 字节地址 temp1=byte_address; } else if(ii==2) { temp=data_data;//送 数据 temp1=data_data; } for(i=0;i<8;i++) { scl=0; delay();//5us 延时 temp=temp1; temp=temp&0x80;// 相 与 后,把不相关的位清零 if(temp==0x80)//根据前面 相 与 后,判断 temp 是否等于0x80,是则该位为 1 sda=1; else sda=0; delay();//5us 延时 scl=1; delay();//5us 延时 scl=0; delay();//5us 延时 temp1=temp1<<1;//向左移出1 位 } sda=1; delay();//5us 延时 scl=1; delay();//5us 延时...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

单片机读写24C01

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部