24C02 EEPROM存储器的C语言操作.docx
- 文档编号:12890836
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:8
- 大小:14.82KB
24C02 EEPROM存储器的C语言操作.docx
《24C02 EEPROM存储器的C语言操作.docx》由会员分享,可在线阅读,更多相关《24C02 EEPROM存储器的C语言操作.docx(8页珍藏版)》请在冰点文库上搜索。
24C02EEPROM存储器的C语言操作
#include
#ifndef false
#define false0
#endif
#ifndef true
#definetrue1
#endif
#defineWriteDeviceAddress0xa0
#defineReadDviceAddress0xa1
sbit SDA = P3^5;//根据实际连接的管脚定义
sbit SCL = P3^4;
sbit led =P1^0;
sbit led2=P1^1;
unsignedcharcodeNum[21]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,
0x10,0x89};
unsignedcharcodeDisdigit[4]={0x7F,0xBF,0xDF,0xEF};
unsignedcharDisbuf[4];
unsignedcharcodewrite_data[5]={5,2,5,1,8};
unsignedcharread_data[5];
//--------------------------------------------------------------------------
voidDelayus(unsignedintnumber)
{
for(;number!
=0;number--)
{
}
}
//--------------------------------------------------------------------------
voidDelayMs(unsignedintnumber)
{
unsignedchartemp;
for(;number!
=0;number--)
{
for(temp=112;temp!
=0;temp--)
{
}
}
}
//--------------------------------------------------------------------------
voidStart()
{
SDA=1;
Delayus(4);
SCL=1;
Delayus(4);
SDA=0;
Delayus(4);
SCL=0;
Delayus(4);
}
//--------------------------------------------------------------------------
voidStop()
{
SCL=0;
Delayus(4);
SDA=0;
Delayus(4);
SCL=1;
Delayus(4);
SDA=1;
Delayus(4);
}
//--------------------------------------------------------------------------
voidAck()
{
SDA=0;
Delayus(4);
SCL=1;
Delayus(4);
SCL=0;
Delayus(4);
SDA=1;
Delayus(4);
}
//--------------------------------------------------------------------------
voidNoAck()
{
SDA=1;
Delayus(4);
SCL=1;
Delayus(4);
SCL=0;
Delayus(4);
SDA=0;//
}
//--------------------------------------------------------------------------
bitTestAck()
{
bitErrorBit;
SDA=1;
Delayus(4);
SCL=1;
Delayus(4);
ErrorBit=SDA;
Delayus(4);
SCL=0;
return(ErrorBit);
}
//--------------------------------------------------------------------------
voidWrite8Bit(unsignedcharinput)
{
unsignedchartemp;
for(temp=8;temp!
=0;temp--)
{
SDA=(bit)(input&0x80);
Delayus(4);
SCL=1;
Delayus(4);
SCL=0;
Delayus(4);
input=input<<1;
}
}
//--------------------------------------------------------------------------
unsignedcharRead8Bit()
{
unsignedchartemp,rbyte=0;
for(temp=8;temp!
=0;temp--)
{
SCL=1;
Delayus(4);
rbyte=rbyte<<1;
rbyte=rbyte|((unsignedchar)(SDA));
SCL=0;
}
return(rbyte);
}
voidWrite24c02(unsignedchar*Wdata,unsignedcharRomAddress,unsignedcharnumber)
{
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(RomAddress);
TestAck();
for(;number!
=0;number--)
{
Write8Bit(*Wdata);
TestAck();
Wdata++;
}
Stop();
DelayMs(10);
}
voidRead24c02(unsignedchar*RamAddress,unsignedcharRomAddress,unsignedcharbytes)
{
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(RomAddress);
TestAck();
Start();
Write8Bit(ReadDviceAddress);
TestAck();
while(bytes!
=1)
{
*RamAddress=Read8Bit();
Ack();
RamAddress++;
bytes--;
}
*RamAddress=Read8Bit();
NoAck();
Stop();
}
voidDisplay(void) //显示
{
unsignedinti=0;
unsignedinttemp,count;
temp=Disdigit[count];
P2=temp;
temp=Disbuf[count];
temp=Num[temp];
P0=temp;
count++;
if (count==4)
count=0;
}
voidtime1()interrupt3using2
{
Display();
TH1=(65535-2000)/256;
TL1=(65535-2000)%256;
}
voidmain()
{
TMOD=0x15;
TR1=1;
EA=1;
ET1=1;
Write24c02(write_data,0x00,3);
DelayMs(200);
Read24c02(read_data,0x00,4);
while
(1)
{
Disbuf[0]=read_data[0];
Disbuf[1]=read_data[1];
Disbuf[2]=read_data[2];
Disbuf[3]=read_data[3];
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 24C02 EEPROM存储器的C语言操作 24 C02 EEPROM 存储器 语言 操作