AT24C02读写与显示.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AT24C02读写与显示

#include reg51.h #include intrins.h //包含有函数_nop_()的头文件 #define uchar unsigned char #define uint unsigned int #define out P2 //发送缓冲区的首地址 sbit scl=P1^1; sbit sda=P1^0; sbit key1=P3^2; sbit key2=P3^3; uchar data mem[4]_at_ 0x55; //发送缓冲区的首地址 uchar mem[4]={0x41,0x42,0x43,0xaa}; //欲发送的数据数组 uchar data rec_mem[4] _at_ 0x60 ; //接收缓冲区的首地址 void start(void); //起始信号函数 void stop(void); //终止信号函数 void sack(void); //发送应答信号函数 bit rack(void); //接收应答信号函数 void ackn(void); //发送无应答信号函数 void send_byte(uchar); //发送一个字节函数 uchar rec_byte(void); //接收一个字节函数 void write(void); //写一组数据函数 void read(void); //读一组数据函数 void delay4us(void); //延时4μs void main(void) //主函数 { EA=1;EX0=1;EX1=1; //总中断开,外中断0与外中断0允许中断 while(1); } void ext0()interrupt 0 //外中断0中断函数 { write(); //调用写数据函数 } void ext1()interrupt 2 //外中断1中断函数 { read(); //调用读数据函数 } void read(void) //读数据函数 { uchar i; bit f; start(); //起始函数 send_byte(0xa0); //发从机的地址 f=rack(); //接收应答 if(!f) { start(); //起始信号 send_byte(0xa0); f=rack(); send_byte(0x00); //设置要读取从器件的片内地址 f=rack(); if(!f) { start(); send_byte(0xa1); f=rack(); if(!f) { for(i=0;i3;i++) { rec_mem[i]=rec_byte(); sack(); } rec_mem[3]=rec_byte();ackn(); } } } stop();out=rec_mem[3];while(!key2); } void write(void) //写数据函数 { uchar i; bit f; start(); send_byte(0xa0); f=rack(); if(!f){ send_byte(0x00); f=rack(); if(!f){ for(i=0;i4;i++) { send_byte(mem[i]); f=rack(); if(f)break; } } } stop();out=0xc3;while(!key1); } void start(void) //起始信号 { scl=1; sda=1; delay4us(); sda=0; delay4us(); scl=0; } void stop(void) //终止信号 { scl=0; sda=0; delay4us(); scl=1; delay4us(); sda=1; delay5us(); sda=0; } bit rack(void) //接收一个应答位 { bit flag; scl=1; delay4us(); flag=sda; scl=0; return(flag); } void sack(void) //发送接收应答位 { sda=0; delay4us(); scl=1; delay4us(); scl=0; delay4us(); sda=1; delay4us(); } void ackn(void) //发送非接收应答位 { sda=1; delay4us(); scl=1;

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档