?? x5043.c
字號:
//****************************************************************************
// 文件名: X5043.C
// 功 能: SPI EEPROM X5043 讀寫C程序
// 作 者: 樂志梅
// 版 本: V1.0
// 日 期: 2007.06.01
// 修 訂:
// 說 明:
//****************************************************************************
//****************************************************************************
// @Project Includes
//****************************************************************************
#include "MAIN.H"
//****************************************************************************
// @Function ubyte Read_Data(unsigned char address)
//
//----------------------------------------------------------------------------
// @Description 從X5043的某個地址讀取一個字節的數據
//
//----------------------------------------------------------------------------
// @Returnvalue 從X5043的某個地址讀取的一個字節數據
//
//----------------------------------------------------------------------------
// @Parameters address X5043的地址
//
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
ubyte Read_Data(unsigned char address)
{
//讀數據序列
CS_X5043 = 0; //片選信號激活(‘0’有效)
delay(50);
SSC0_vSendData(READ); //讀數據指令
delay(500);
SSC0_vSendData(address); //發送地址
delay(500);
SSC0_RIC_IR = 0;
SSC0_vSendData(0xff); //為了產生SCLK信號,發送一個無效的數據
delay(500);
CS_X5043 = 1; //片選信號無效(‘1’無效)
delay(50);
return((ubyte)(SSC0_uwGetData())); //返回從X5043接收到的數據
}
//****************************************************************************
// @Function ubyte Read_Status(void)
//
//----------------------------------------------------------------------------
// @Description 主設備從X5043讀取狀態寄存器的值
//
//----------------------------------------------------------------------------
// @Returnvalue X5043狀態寄存器的值
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
ubyte Read_Status(void)
{
//讀狀態寄存器序列
CS_X5043 = 0; //片選信號激活(‘0’有效)
delay(50);
SSC0_vSendData(RDSR); //讀狀態寄存器指令
delay(500);
SSC0_RIC_IR = 0;
SSC0_vSendData(0xff); //為了產生SCLK信號,發送一個無效的數據
delay(500);
CS_X5043 = 1; //片選信號無效(‘1’無效)
delay(50);
return((ubyte)(SSC0_uwGetData())); //返回從X5043接收到的數據
}
//****************************************************************************
// @Function void Write_Enable(void)
//
//----------------------------------------------------------------------------
// @Description X5043寫使能
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
void Write_Enable(void)
{
//寫使能序列
CS_X5043 = 0;
delay(50);
SSC0_vSendData(WREN); //寫使能指令
delay(500);
CS_X5043 = 1;
delay(500);
}
//****************************************************************************
// @Function void Write_Disable(void)
//
//----------------------------------------------------------------------------
// @Description X5043寫禁止
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
void Write_Disable(void)
{
//寫禁止指令
CS_X5043 = 0;
delay(50);
SSC0_vSendData(WRDI); //寫禁止指令
delay(500);
CS_X5043 = 1;
delay(50);
}
//****************************************************************************
// @Function void Write_Data(unsigned char address,unsigned char input_byte)
//
//----------------------------------------------------------------------------
// @Description 向X5043的某個地址寫入一個字節
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters address X5043的地址
// input_byte 將要寫入X5043的數據
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
void Write_Data(unsigned char address,unsigned char input_byte)
{
//寫數據序列
CS_X5043 = 0;
delay(50);
SSC0_vSendData(WRITE); //寫數據指令
delay(500);
SSC0_vSendData(address); //發送地址
delay(500);
SSC0_vSendData(input_byte); //發送將要寫入X5043的數據
delay(500);
CS_X5043 = 1;
delay(50);
}
//****************************************************************************
// @Function ubyte Read_Data_Page(unsigned int address,unsigned int numBytes)
//
//----------------------------------------------------------------------------
// @Description 從X5043的某個頁地址連續讀取數據
//
//----------------------------------------------------------------------------
// @Returnvalue 從X5043的某個頁地址讀取的數據
//
//----------------------------------------------------------------------------
// @Parameters address X5043的地址
// numBytes 讀取數據的個數
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
ubyte Read_Data_Page(unsigned int address,unsigned int numBytes)
{
unsigned int i,page_read_data[10];
//讀數據序列
CS_X5043 = 0; //片選信號激活(‘0’有效)
delay(50);
SSC0_vSendData(READ); //讀數據指令
delay(500);
SSC0_vSendData(address); //發送地址
delay(500);
SSC0_RIC_IR = 0;
for (i=0;i<numBytes;i++)
{
SSC0_vSendData(0xff); //為了產生SCLK信號,發送一個無效的數據
delay(500);
page_read_data[i]= SSC0_uwGetData();
}
CS_X5043 = 1; //片選信號無效(‘1’無效)
delay(50);
return(page_read_data[2]); //返回從X5043接收到的數據
}
//****************************************************************************
// @Function void Write_Data_Page(unsigned int address,unsigned int numBytes,unsigned char *src)
//
//----------------------------------------------------------------------------
// @Description 向X5043的某個頁地址連續寫入數據
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters address X5043的地址
// numBytes 寫入數據的個數
// *src 寫入數據指針
//----------------------------------------------------------------------------
// @Date 2007-6-1 by lezm
//
//****************************************************************************
void Write_Data_Page(unsigned int address,unsigned int numBytes,unsigned char *src)
{
unsigned int page_write_data[10],i;
//寫數據序列
CS_X5043 = 0;
delay(50);
SSC0_vSendData(WRITE); //寫數據指令
delay(500);
SSC0_vSendData(address); //發送地址
delay(500);
for (i=0; i<numBytes; i++)
{
page_write_data[i] = *src++;
SSC0_vSendData(page_write_data[i]); //發送將要寫入X5043的數據
delay(500);
}
CS_X5043 = 1;
delay(50);
}
//****************************************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -