这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 综合技术» 基础知识» EEPROM,25AA640,VC33 【求助】串行EEPROM 25AA640

共2条 1/1 1 跳转至

EEPROM,25AA640,VC33 【求助】串行EEPROM 25AA640与VC33的C语言读写程序

院士
2006-09-17 18:14:16 打赏
EEPROM,25AA640,VC33 【求助】串行EEPROM 25AA640与VC33的C语言读写程序



关键词: EEPROM 25AA640 求助 串行 语言

院士
2006-12-22 22:43:00 打赏
2楼
问 十万火急!!!我现在正在调试 25AA640,已经整了两个星期了还没调通,不知道问题出在哪里了?请各位大虾帮忙检查一下下面的程序!!小弟不胜感激。。。
我的接线如下:
SI--->FSX0;
SO--->FSR0;
SCK-->XF0;
CS--->XF1;
附程序:
#define SET_ DSP_IO0 SERIAL_PORT_CONTROL1 |= 0x0400
#define CLR_ DSP_IO0 SERIAL_PORT_CONTROL1 &= (0xffff-0x0400)

#define SO SERIAL_PORT_CONTROL2 &= 0x0800

#define SET_SCK IOF|= 0x04
#define CLR_SCK IOF&= (0xff-0x04)
#define SET_CS IOF|= 0x40
#define CLR_CS IOF&= (0xff-0x40)

void main(void)
{ int a;
a=0;
SERIAL_PORT_CONTROL1 = 0x0222;
SERIAL_PORT_CONTROL2 = 0x0022;
IOF=0x22;

CLR_SCK;
CLR_CS;
Write EEPROM(8,0x06);
SET_CS;
CLR_SCK;
CLR_CS;
Write EEPROM(8,0x02);
CLR_SCK;
Write EEPROM(16,0x0100);
CLR_SCK;
Write EEPROM(8,0x55);
CLR_SCK;
SET_CS;

CLR_SCK;
CLR_CS;
Write EEPROM(8,0x03);
SET_SCK;
CLR_SCK;
Write EEPROM(16,0x0100);
a=Read EEPROM(8)& 0xff;
SET_CS;
CLR_SCK;
}

void WR_EN(void)
{
CLR_CS;
Write EEPROM(8,0x06);
SET_CS;
}

int RD_SR(void)
{ int j;
CLR_CS;
Write EEPROM(8,0x05);
j=Read EEPROM(8);
SET_CS;
return j;
}

void WR_SR(void)
{
CLR_CS;
Write EEPROM(8,0x06);
SET_CS;
CLR_CS;
Write EEPROM(8,0x01);
Write EEPROM(8,0x00);
SET_CS;
Stop EEPROM();
}

void Write EEPROM(int iBits,int iValue)
{

do {
CLR_SCK;
Delay_100NS();
ADDR_ EEPROM= iValue >> (iBits - 1);
iBits--;
if((ADDR_ EEPROM&0x01)==0)
CLR_ DSP_IO0;
else
SET_ DSP_IO0;
SET_SCK;
Delay_100NS();
}while(iBits != 0);
}

int Read EEPROM(int iBits)
{
int iData;
iData=0x00;
ADDR_ EEPROM=0x00;
do{
SET_SCK;
Delay_100NS();
CLR_SCK;
Delay_100NS();
CLR_SCK;
Delay_100NS();
ADDR_ EEPROM=SERIAL_PORT_CONTROL2>>11;
iData|=(ADDR_ EEPROM& 0x01)<<(iBits-1);
iBits--;
CLR_SCK;
Delay_100NS();
}while(iBits !=0 );
return iData;
}

void Stop EEPROM(void) /* 等待8位数据写完 */
{
int iData;
do {
CLR_CS;
iData=RD_SR();
SET_CS;
}while((iData & 0x01)!=0); /*fake check the last bit */
}

void Delay_100NS()
{
unsigned int i,j;
for(i=0;i<10;i++) {j=i;}
}
1: 个人觉得应该是程序有问题最好还是自己单步调试程序,发现问题, 2: 我知道程序有问题,可我找不出来阿! 大哥,我已经找了2个多星期了还是没有找出问题来!能不能帮我检查检查啊。。。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]