微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > K9F5608程序

K9F5608程序

时间:11-11 来源:互联网 点击:

void K9FReadPageData(unchar pageh,
unchar pagel,
volatile unchar xdata *xramadd)
{
unint i;
K9FCELOW;

K9FWriteComm(K9FREADCOMMAND); //命令锁存.

K9FWriteAdd(0x00,pageh,pagel); //地址锁存.

K9FDetectBusy();

for (i=0x00 ; i<512 ; i++)
{
*xramadd=K9FADD;
xramadd++;
}

K9FCEHIGH;

}

/*
-------------------------------------------------------------------------------------------
输 入:选择块区;要读出的页数;数据读的开始地址.及读出存放的地址.
输 出:数据存放在指针所指的地址中.返回数据是否读出正确.
功 能:可以实现从A,B,C任意块开始读,可以读一页甚至多页,
-------------------------------------------------------------------------------------------
*/
unchar K9FReadSequenceData(unchar comm, /*选择是A、B、还是C;暂时考虑不使用C*/
unchar pages, /*读出的页数 */
unchar columndata, /*数据的开始位置 */
unchar pageh, /*数据开始的高地址 */
unchar pagel, /*数据开始的低地址 */
volatile unchar xdata *xramadd) /*数据存放的开始地址 */
{
unint max;
unint i;

if (pages==0x00)
{
return FALSE;
}

if (comm==0x00)
{
max=528; //256+256+16;
}
else if (comm==0x01)
{
max=272; //256+16;
}
else if (comm==0x50)
{
max=16;
}
else
{
return FALSE;
}

K9FCELOW;

K9FWriteComm(comm); //0x01或者0x00;

K9FWriteComm(K9FWRITECOMMAND); //0x80;

K9FWriteAdd(columndata,pageh,pagel);

for (i=columndata; i{
*xramadd=K9FADD;
xramadd++;
}

K9FDetectBusy();

pages--;
while (pages!=0x00) //然后读出是一整页的数据.顺序存放在间接地址中.
{
for (i=0; i{
*xramadd=K9FADD;
xramadd++;
}
pages--; //直到要求读的页数为0,则停止.

K9FDetectBusy();
}

K9FCEHIGH; //拉高片选.结束读数据.
}
/*
-------------------------------------------------------------------------------------------
输 入:读一个字节的地址
输 出:字节是否正确读出.
功 能:可以只读一个字节.也可以读N个字节,使用片选线结束继续读下面的数据.返回为数据读出
是否正确.
-------------------------------------------------------------------------------------------
*/
unchar K9FReadNData(
unchar comm, /*A,B,还是C? */
unchar n, /*读出数据的个数 */
unchar columndata, /*单个数据的开始地址 */
unchar pageh, /* */
unchar pagel, /* */
volatile unchar xdata *xramadd) /*读出的数据存放的位置 */
{
unchar i;
i=0;
K9FCELOW; //拉低片选.
if(comm!=0x00)
{
K9FWriteComm(comm);
}
K9FWriteComm(K9FREADCOMMAND);

K9FWriteAdd(columndata,pageh,pagel);

K9FDetectBusy();

while (i{
*xramadd=K9FADD;
xramadd++;
i++;
}

K9FCEHIGH; //拉高片选,完成读数据.
return (TRUE);

}
/*
-------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------
*/
unchar K9FReadAData(unchar comm,
unchar columndata, /*单个数据的开始地址 */
unchar pageh, /* */
unchar pagel) /* */
{
unchar i;

K9FCELOW; //拉低片选.
if (comm!=0x00)
{
K9FWriteComm(comm);
}
K9FWriteComm(K9FREADCOMMAND);

K9FWriteAdd(columndata,pageh,pagel);

K9FDetectBusy();

i=K9FADD;

K9FCEHIGH; //拉高片选,完成读数据.
return (i);

}
/*
-------------------------------------------------------------------------------------------
输 入:void
输 出:厂家号码及型号号码.
功 能:一个UNINT型量,读出是否是正常的芯片码.
-------------------------------------------------------------------------------------------
*/
unint K9FReadID(void)
{
unint a;

K9FCELOW;

K9FWriteComm(K9FREADIDCOMMAND);

ALEHIGH;
K9FADD=0x00;
ALELOW;

a=0x00ff&K9FADD;
a=a*256;
a=a|K9FADD;

K9FCEHIGH;

return (a);
}
/*
-------------------------------------------------------------------------------------------
输 入:要擦除的页高低地址.
输 出:返回是否擦除成功标志.
功 能:共有2048个块,每个块16K(8BIT),
-------------------------------------------------------------------------------------------
*/
unchar K9FEraseBlockData(unchar pageh,unchar pagel)
{

K9FCELOW;

K9FWriteComm(K9FERISESETUPCOMMAND); //0x60 擦除命令.

ALEHIGH;
K9FADD=pagel; //地址,先送低,再送高.
K9FADD=pageh;
ALELOW;

K9F

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top