📄 temp.c.bak
字号:
/********************************************************************************************
**函数名: vSendByte
**功能简介: 向X25645(SPI EEPROM)发送一字节数据
**参数说明: bCh-需发送的数据
**调用函数: 无
**全局变量: 无
**函数返回: 无
**最后修改时间:2003-07-21
**********************************************************************************************/
void vSendByte(BYTE bCh)
{
BYTE bI=8;
while(bI--)
{
SCK = 0;
if((bCh & 0x80) == 0x80)SI = 1;//(bit)(ch&0x80);
if((bCh & 0x80) == 0x00)SI = 0;
SCK = 1;
bCh <<= 1;
}
}
/********************************************************************************************
**函数名: bGetByte
**功能简介: 从X25645(SPI EEPROM)得到一字节数据
**参数说明: bTemp-得到的数据返回
**调用函数: 无
**全局变量: 无
**函数返回: 无
**最后修改时间:2003-07-21
**********************************************************************************************/
BYTE bGetByte(void)
{
BYTE bI=8,bTemp=0;
while(bI--)
{
bTemp <<= 1;
SCK = 1;
SCK = 0;
//ch=|SO;
if(SO == 1)bTemp |= 0x01;
if(SO == 0)bTemp &= 0xfe;
}
SCK = 1;//new add-2003-09-02
return(bTemp);
}
/********************************************************************************************
**函数名: bReadStatus
**功能简介: 为检查忙标志,读X25645(SPI EEPROM)的状态寄存器
**参数说明: 无
**调用函数: vSendByte,bGetByte
**全局变量: 无
**函数返回: bTemp-读出的状态字节
**最后修改时间:2003-07-21
**********************************************************************************************/
BYTE bReadStatus(void)
{
BYTE bTemp;
WORD wTemp;
DWORDS dwI=0;
//CS = 0;
XBYTE[PTR_259_1 + 5] = 0;
vSendByte(RDSR_INST);
wTemp = 0xffff;
////wTemp = 0xa0;
do
{
dwI++;
if( dwI%50 == 0)
{
//WDI = ~WDI;//喂狗
vHitWatchDog();//喂狗 //死机
}
if(--wTemp == 0)break;
bTemp = bGetByte();
}while((bTemp & 0x01) == 0x01);
//CS = 1;
XBYTE[PTR_259_1 + 5] = 1;
return(bTemp);
}
/********************************************************************************************
**函数名: vProgramStatus
**功能简介: 编程X25645(SPI EEPROM)的状态寄存器
**参数说明: bCh-需编程的数据
**调用函数: vSendByte
**全局变量:
*函数返回: 无
**最后修改时间:2003-07-21
**********************************************************************************************/
void vProgramStatus(BYTE bCh)
{
//CS = 0;
XBYTE[PTR_259_1 + 5] = 0;
vSendByte(PRSR_INST);
vSendByte(bCh);
//CS = 1;
XBYTE[PTR_259_1 + 5] = 1;
}
/********************************************************************************************
**函数名: bReadByte
**功能简介: 读X25645(SPI EEPROM)某地址的单字节数据
**参数说明: wAddr-需要读的地址
**调用函数: vSendByte,bGetByte
**全局变量: 无?**函数返回: bTemp-读出的该地址的单字节数据 .
**最后修改时间:2003-07-21
**********************************************************************************************/
BYTE bReadByte(WORD wAddr)
{
BYTE bTemp,bAddrh,bAddrl;
bAddrl = (BYTE)wAddr;
wAddr >>= 8;
bAddrh = (BYTE)wAddr;
//CS = 0;
XBYTE[PTR_259_1 + 5] = 0;
vSendByte(READ_INST);
vSendByte(0x00);
vSendByte(bAddrh);
vSendByte(bAddrl);
bTemp = bGetByte();
//CS = 1;
XBYTE[PTR_259_1 + 5] = 1;
return(bTemp);
}
/********************************************************************************************
**函数名: vProgramEnable
**功能简介: X25645(SPI EEPROM)编程使能
**参数说明: 无
**调用函数: vSendByte
**全局变量: 无
**函数返回: 无
**最后修改时间:2003-07-21
**********************************************************************************************/
void vProgramEnable(void)
{
//CS = 0;
XBYTE[PTR_259_1 + 5] = 0;
vSendByte(PREN_INST);
//CS = 1;
XBYTE[PTR_259_1 + 5] = 1;
}
/********************************************************************************************
**函数名: vProgramDisable
**功能简介: X25645(SPI EEPROM)编程失效复位
**参数说明: 无
**调用函数: vSendByte
**全局变量: 无?**函数返回: 无
**最后修改时间:2003-07-21
**********************************************************************************************/
void vProgramDisable(void)
{
//CS = 0;
XBYTE[PTR_259_1 + 5] = 0;
vSendByte(PRDI_INST);
//CS = 1;
XBYTE[PTR_259_1 + 5] = 1;
}
/********************************************************************************************
**函数名: vBulkErase
**功能简介: 擦除nx25p40
**参数说明: 无
**调用函数: vProgramEnable,vSendByte,bReadStatus
**全局变量: 无**函数返回: 无
**最后修改时间:2004-06-15
**********************************************************************************************/
/*
void vBulkErase(void)
{
//CS = 0;
vProgramEnable();
XBYTE[PTR_259_1 + 5] = 0;
vSendByte(BULK_ERASE);
//CS = 1;
XBYTE[PTR_259_1 + 5] = 1;
bReadStatus();
}
/********************************************************************************************
**函数名: vSectorErase
**功能简介: 扇区擦除nx25p40
**参数说明: bSecNum扇区号0~7
**调用函数: vProgramEnable,vSendByte,bReadStatus
**全局变量: 无?**函数返回: 无
**最后修改时间:2004-06-15
**********************************************************************************************/
void vSectorErase(BYTE bSecNum)
{
//CS = 0;
vProgramEnable();
XBYTE[PTR_259_1 + 5] = 0;
vSendByte(SECTOR_ERASE);
vSendByte(bSecNum);
vSendByte(0x00);
vSendByte(0x00);
//CS = 1;
XBYTE[PTR_259_1 + 5] = 1;
bReadStatus();
}
/********************************************************************************************
**函数名: vProgramByte
**功能简介: 编程X25645(SPI EEPROM)单字节到某地址
**参数说明: wAddr-需编程的地址,bCh-写入的字节数据
**调用函数: vProgramEnable,vSendByte,bReadStatus,vProgramDisable
**全局变量: 无
**函数返回: 无
**最后修改时间:2003-07-21
**********************************************************************************************/
void vProgramByte(WORD wAddr,BYTE bCh)
{
BYTE bAddrh,bAddrl;
vProgramEnable();
bAddrl = (BYTE)wAddr;
wAddr >>= 8;
bAddrh = (BYTE)wAddr;
//CS = 0;
XBYTE[PTR_259_1 + 5] = 0;
vSendByte(PROGRAM_INST);
vSendByte(0x00);
vSendByte(bAddrh);
vSendByte(bAddrl);
vSendByte(bCh);
//CS = 1;
XBYTE[PTR_259_1 + 5] = 1;
bReadStatus();
vProgramDisable();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -