基于AT89C51的AT24C02 IIC 示例程序

 我来答
shelley076
2009-03-28
知道答主
回答量:4
采纳率:0%
帮助的人:6.1万
展开全部
void 24c64_start() //启动读写程序
{
SDA=1;_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=1;_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();
}

void 24c64_stop() //停止操作
{
SDA=0;_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=1;_nop_();_nop_();_nop_();_nop_();_nop_();
}

void 24c64_ack() //应答
{
SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();
}

void 24c64_delay_iic(int n) //延时
{
int i;
for(i=1;i<n;i++)
{;}
}

void shift8(char a) //8位移位输出
{
data uchar i; //在data区定义的无符号字符型局部变量
com_data=a; //a传递给com_data,con_data为bdata区定义的一个字符型全局变量
for(i=0;i<8;i++)
{
SDA=mos_bit;//com_data的最高位mos_bit移位输出
SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//产生时钟脉冲
com_data=com_data*2;//com_data左移一位
}
}

void wr_24c64(char a,char b) //将RAM中b地址单元的数据写入24C64中的a地址单元中
{
data uchar command;
_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=1;_nop_();_nop_();_nop_();_nop_();
SCL=0;_nop_();_nop_();_nop_();_nop_();
24c64_start();
command=160;
shift8(command);
24c64_ack;
shift8(a);
24c64_ack;
shift8(b);
24c64_ack;
24c64_stop;
_nop_();_nop_();_nop_();_nop_();_nop_();
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式