24C04或24CXX系列EEPROM读写程序 C51的

24C04或24CXX系列EEPROM读写程序 C51的,第1张

我课程设计使用的EEPROM型号为X24C16P(2048字节),使用的X24C16P EEPROM读写程序为姿判AT24C02C修改来的,两者读写原理上基本一致。我先放上一个经粗裤过PROTEUS仿真的程序,可用,我课设的程序在同学电脑上,一时拿不到:#include<reg52.h> //软件模拟IIC的很好的例子,理解实质即可

#include<intrins.h>//程序虽然长,但是不是很复杂岩册简,关键在于理解IIC的工作机理

#define uchar unsigned char

#define uint unsigned int

#define DELAY5US _nop_()_nop_()_nop_()_nop_()_nop_()

sbit VSDA = P1^0

sbit VSCL = P1^1

sbit LED = P1^7

uchar SLAW

void STA() //发现:24C02C 是 256字节*8位的串行EEPROM存储器芯片,注意是ROM只读的

{ //但是这个例子将0-255这些数据写入到了ROM当中,怎么写的,是烧进去的,

VSDA = 1 //这个不是很理解啊

VSCL = 1

DELAY5US

VSDA = 0

DELAY5US

VSCL = 0

}

void STOP()

{

VSDA = 0

VSCL = 1

DELAY5US

VSDA = 1

VSCL = 1

DELAY5US

}

void MACK()

{

VSDA = 0

VSCL = 1

DELAY5US

VSCL = 0

}

void MNACK()

{

VSDA = 1

VSCL = 1

DELAY5US

VSCL = 0

}

void CACK()

{

VSDA = 1

VSCL = 1

F0 = 0

if ( 1 == VSDA )

{

F0 = 1

}

VSCL = 0

}

void WRBYTE(uchar idata *p)

{

uchar idata n = 8, temp

temp = *p

while(n--)

{

if ( 0x80 == (temp&0x80) )

{

VSDA = 1

VSCL = 1

DELAY5US

VSCL = 0

}

else

{

VSDA = 0

VSCL = 1

DELAY5US

VSCL = 0

}

temp = temp<<1

}

}

void RDBYTE(uchar idata *p)

{

uchar idata n = 8, temp = 0

while(n--)

{

VSDA = 1

VSCL = 1

temp = temp<<1

if ( 1 == VSDA )

temp = temp|0x01

else

temp = temp&0xfe

VSCL = 0

}

*p = temp

}

void delayMoreThan5ms()

{

uint i

for ( i = 0i <1000i++ )

{

DELAY5US

}

}

int main()

{

uchar ch, *p

uint i

SLAW = 0xA2//0xA0是slave write地址字节(写),A是1010是器件地址,由厂家决定

for ( i = 0i <= 255i++ ) //1010(A)是24C02C所属系列的器件地址

{ //0000是自己决定的,前3个0由24C02C芯片的A0A1A2决定

STA() //最后一个0是写的意思,1则为读

p = &SLAW //4个(器件地址),3个(引脚地址),一个(读写选择位)。

WRBYTE(p) //应答信号是关键啊

CACK() //发送对应写, 接收对应读

if ( 1 == F0 )

{

LED = 0

while(1)

}

ch = i

p = &ch

WRBYTE(p)

CACK()

if ( 1 == F0 )

{

LED = 0

while(1)

}

WRBYTE(p)

CACK()

STOP()

delayMoreThan5ms()

}

while(1)

return 0

}

你确定你外部电路没有接错么?24c02只有256字节,所以轿芦辩不需要用到高8位地址;只要000h-0ffh就可以直接访问,闭缺24c04就需要用P2连接高8位地址,不然是无法正常访问0ffh以上的地址的哗仿。

存在存储器慎派里面 , 是一个8脚的集成块 ,现在宽陵贺的彩电常用型号有:24C02、24C04、24C08、24C16、24C32等等。

要用专门的编写程序器才能写入,有两汪帆种:一种把集成块插入编写器后直接写入,另一种需要通过USB接口连接电脑写入。一般卖元器件的店子就有卖,还有说明书。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12416580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存