华维科技 单片机程序 单片机开发板 单片机学习板 单片机编程  

 

 

 

 

 

 

                        51 AVR PIC 三星 义隆 合泰 十速 松翰 现代
                                          EEPROM的读写
           日期: 2008-06-28             发表人: 比尔熊           文章来源:本站原创,如有转载请注明出处
#include <reg51.h>
#include <intrins.h>
#include <absacc.h>
#include "iic.h"


#define IIC_Delay(); {_NOP();_NOP();}

sbit SDA=P3^4;
sbit SCL=P3^3;

void DelayShortms(uchar ms)
{
uchar i,j;
for(i=0;i<ms;i++)
for(j=0;j<120;j++)
;
}

void IIC_Init(void)
{
SDA=1;
SCL=1;
}

void IIC_Start(void)
{
SDA=1;
SCL=1;
IIC_Delay();
SDA=0;
IIC_Delay();
SCL=0;
}

void IIC_Stop(void)
{
SDA=0;
IIC_Delay();
SCL=1;
IIC_Delay();
SDA=1;
}

bit IIC_Send(uchar Send_Dat)
{
uchar i;
bit ack;
for(i=0;i<8;i++)
{
SDA=(bit)(Send_Dat&0x80);
Send_Dat<<=1;
IIC_Delay();
SCL=1;
IIC_Delay();
SCL=0;
IIC_Delay();
}
SDA=1;
IIC_Delay();
SCL=1;
IIC_Delay();
ack=SDA;
SCL=0;
IIC_Delay();
return ack;
}

uchar IIC_Receive(void)
{
uchar i,Receive_Dat=0;
for(i=0;i<8;i++)
{
SCL=1;
IIC_Delay();
Receive_Dat<<=1;
Receive_Dat|=SDA;
SCL=0;
IIC_Delay();
}
return Receive_Dat;
}

void WrAddDat(uchar Add,Dat)
{
IIC_Start();
IIC_Send(0xA0);
IIC_Send(Add);
IIC_Send(Dat);
IIC_Stop();
DelayShortms(10);
}

uchar WrAddRdDat(uchar Add)
{
uchar Dat;
IIC_Start();
IIC_Send(0xA0);
IIC_Send(Add);
IIC_Start();
IIC_Send(0xA1);
Dat=IIC_Receive();
IIC_Stop();
return Dat;
}


测试通过

                                     返回首页

 

                                          版权所有@华维科技
                                        建议浏览分辨率1024*768