ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:39.30KB ,
资源ID:2470635      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2470635.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机操作at24c02c程序.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机操作at24c02c程序.docx

1、单片机操作at24c02c程序#include #include#define uchar unsigned char sbit SCK=P30; /串行时钟端sbit SDA=P31;/串行数据端/*/*start();stop();write_b();read_b();ACKwrite();/写入一个字节数据接收IC的低电平响应信号ACKread();/读出一个字节数据,MCU给出一个低电平的响应信号给ICreadbyte(); /从指定地址读出一个数据read_byte(); /从指定地址读出一串数据writebyte(); /向指定地址内写入一位数据write_byte(); /从指定

2、地址写入1页数据,at24c02每页一次只能写入4个字节数据,写入地址为高六位(低两位均视为0)(at24c04每页可写入16个数据)cur_addr_read();/从当前地址中读出多位数据sequential_read();/从指定地址中读出连续的多位数据 */*/ void delay(int x)uchar i;for(;x0;x-)for(i=110;i0;i-);/*/void start()SCK=0;SDA=1;SCK=1;_nop_();SDA=0; _nop_();SCK=0;/*/void stop()SCK=0;SDA=0;SCK=1;_nop_();SDA=1;_no

3、p_();SCK=0;/*/void ACKread()/ 读出一个数据,MCU给出一个低电平的响应信号SDA=0;SCK=1;_nop_();_nop_();SCK=0;bit ACKwrite() /写入一个数据,检测24C02返回的响应信号 bit error;_nop_();SCK=1;_nop_();_nop_();_nop_();error=SDA;SCK=0;return error;/*/void write_b(uchar dat) /写数据char i;SCK=0;for(i=0;i8;i+) dat=1; SDA=CY; SCK=1; _nop_(); _nop_();

4、SCK=0; ACKwrite();/*/uchar read_b() /读数据char i;uchar temp=0;SDA=1; /读数据需释放总线 让总线处于空闲(很重要嫠逫C可以进行读写操作,否则芯片没有动作for(i=0;i8;i+) SCK=1; _nop_(); _nop_(); temp=temp1|SDA; /高电平后数据稳定,开始读操作 SCK=0; _nop_(); _nop_(); return temp;/*/uchar readbyte(uchar addr) /从任意地址中读出数据start();write_b(0xa0);write_b(addr);start(

5、);write_b(0xa1);ACC=read_b();SDA=1;SCK=1;stop();return ACC;/*/void current_addr_read(uchar count,uchar q) /从当前地址开始读出多个数据uchar i;start();write_b(0xa1);for(i=0;icount-1;i+)qi=read_b();ACKread();qi=read_b();SDA=1;_nop_();SCK=1;SCK=0;stop(); /*/ void sequential_read(uchar addr,uchar i,uchar *p) /从当前地址AD

6、DR连续读出i个数据,放在P数组中 start(); write_b(0xa0); write_b(addr); current_addr_read(i,p);/*/void writebyte(uchar addr,uchar dat ) /单个字节写入指定地址addrstart();write_b(0xa0);write_b(addr);/stop();/start();/write_b(0xa0); 也可以这么写,只是浪费MCU时间write_b(dat);stop();delay(10); /*/void page_write(uchar addr,uchar *p) /page wr

7、ite 每次可写入4字节数据char i;start();write_b(0xa0);write_b(addr&0xfc);for(i=0;i4;i+)write_b(*p);p+;stop();delay(10);/*/*/void main()int i;uchar *p;uchar t8=0,0,0,0;p=abcd1234;writebyte(0x00,0x11);for(i=0;i8;i+)writebyte(i,0xff);sequential_read(0x00,8,t);/current_addr_read(8,t);page_write(0,p);page_write(0x04,p+4);sequential_read(0x00,8,t);while(1)for(i=0;i8;i+) /测试写入的与读出的是否相等P1=ti;delay(100);P2=readbyte(0x00+i);if(ti=readbyte(0x00+i)P0=0;elseP0=0xff;Proteus里的仿真图片

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1