C51编程:am29lv160db芯片烧写/擦除判断位d7不够可靠?!
我现在正在用am29lv160db flash芯片,按PDF上的说法可以根据数据位DQ7来判断写或擦*作
是否完成,我写的判断程序如下,但在仿真时总有一些单元明明没有完成写*作,但程序却判断
为写正确了,继续写下一个单元。不知大家遇到过这种情况没有?是否我的程序有问题?
----------------------------------------
STATUS DataPolling(unsigned short *pAddr,unsigned short data,unsigned long time)
{
unsigned long i;
volatile unsigned short *pAddr_tmp = pAddr;
for(i = 0; i < time; i ++)
{
if((*pAddr_tmp & 0x0080) == (data & 0x0080)) /*DQ7 ==DATA?*/
return OK;
else if((*pAddr_tmp & 0x0020) == 0x0020) /*DQ5 ==1?*/
{
if((*pAddr_tmp & 0x0080) == (data & 0x0080))
return OK;
else
return ERROR;
}
}
return ERROR;
}
----------------------------------
入口参数:pAddr为要写入数据的地址,data为要写入的数据,time为写一个单元需要最大
的等待时间。
发表时间:2002年5月24日13:33:00