51单片机向at24c16EPROM写入一个数据每问题,写入多个数据,读出的数据都一样

#include#defineucharunsignedcharsbitsda=P2^0;sbitscl=P2^1;uchara;voiddelay(){;;}voids... #include #define uchar unsigned char sbit sda=P2^0; sbit scl=P2^1; uchar a; void delay() { ;; } void start() //开始信号 { sda=1; delay(); scl=1; delay(); sda=0; delay(); } void stop() //停止 { sda=0; delay(); scl=1; delay(); sda=1; delay(); } void respons() //应答 { uchar i; scl=1; delay(); while((sda==1)&&(i<250))i++; scl=0; delay(); } void init() { sda=1; delay(); scl=1; delay(); } void write_byte(uchar date) { uchar i,temp; temp=date; for(i=0;i<8;i++) { temp=temp<<1; scl=0; delay(); sda=CY; delay(); scl=1; delay(); // scl=0; // delay(); } scl=0; delay(); sda=1; delay(); } uchar read_byte() { uchar i,k; scl=0; delay(); sda=1; delay(); for(i=0;i<8;i++) { scl=1; delay(); k=(k<<1)|sda; scl=0; delay(); } return k; } void delay1(uchar x) { uchar a,b; for(a=x;a>0;a--) for(b=100;b>0;b--); } void write_add(uchar address,uchar date) { start(); write_byte(0xa0); respons(); write_byte(address); respons(); write_byte(date); respons(); stop(); } uchar read_add(uchar address) { uchar date; start(); write_byte(0xa0); respons(); write_byte(address); respons(); start(); write_byte(0xa1); respons(); date=read_byte(); stop(); return date; } void main() { init(); write_add(23,0xaa); write_add(24,0x6d); write_add(25,0x7d); delay1(100); P1=read_add(23); P2=read_add(24); P3=read_add(25); while(1); } 展开
 我来答
渠湘潮朗
2019-05-06 · TA获得超过1216个赞
知道小有建树答主
回答量:1696
采纳率:100%
帮助的人:7.6万
展开全部
你的程序在每次写入和读出一个数据延时一段时间,我写c02时延时的是5MS,
AT24C16
处理闭滚速度有点慢,如果你有STC的单片机话就用STC内腔弯部的EEPROM吧(伍态闷实际上是FLASH)
牢霜贯游
2019-05-18 · TA获得超过1028个赞
知道小有建树答主
回答量:1738
采纳率:92%
帮助的人:8万
展开全部
你好!
搜一下:51单片机向at24c16EPROM写入一个数据每问题,写入派誉多个数尘仿段据,读出的数据都一样
如果对你有帮助,望采纳大明。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式