?? 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 + -