?? x25045.c
字號:
/*
;-----------------------------------------
;程序文件名稱:25045.C
;軟件標題:25045操作標準子程序集
;軟件說明:25045串行EEPROM 驅動
;程序最后修改時間: 2007-11-02 20:10
;-----------------------------------------
;原作者: 張 鑫
;程序修改人:張 鑫
;版本號: V1.0.0
;-----------------------------------------
*/
#include <zx.h>
//typedef unsigned char uchar;
//typedef unsigned int uint;
/*
Status register(狀態寄存器),他的意義在于第5,第4位為WDI1,WDI0代表DOG的時間,00為1.4秒,01為600毫秒,10為200毫秒,
11為disabled第3位和第2位為BL1,BL0,是寫保護設置位,00為無保護,01為保護180-1FF,10為保護100-1FF,11為保護000-1FF.
第1位為WEL,當他為1時代表已經"寫使能"設置了,現在可以寫了,只讀位.第0位為WIP,當他為1時代表正在進行寫操作,是只讀.
*/
/* 25045芯片的指令定義 */
#define WREN 0x06 //寫使能指令。
#define WRDI 0x04 //寫復位指令。
#define RDSR 0x05 //讀狀態寄存器指令。
#define WRSR 0x01 //寫狀態寄存器指令。
#define READ0 0x03 //讀低位數據前導指令。
#define READ1 0x0b //讀高位數據前導指令。
#define WRITE0 0x02 //寫低位數據前導指令。
#define WRITE1 0x0a //寫高位數據前導指令。
/*以下各個管腳,需要根據實際連接情況來定義*/
sbit SO = P1^2;/*25045輸出*/
sbit SI = P1^4;/*25045輸入*/
sbit SK = P1^5;/*25045時鐘*/
sbit CS = P1^3;/*25045片選*/
sbit WP = P1^0;/*25045寫保護*/
//*********************************************
//函數功能:讀一個字節數據。
//入口: 無。
//出口: 返回一個字節數據。
//*********************************************
uchar Read8()
{
bit bData;
uchar cloop;
uchar cData;
for(cloop=0;cloop<8;cloop++)
{
SK=1;
SK=0;
bData=SO;
cData<<=1;
if( bData )
cData|=0x01;
}
return cData;
}
//*********************************************
//函數功能:寫一個字節數據。
//入口: 給出一個字節數據。
//出口: 無。
//*********************************************
void Write8( uchar cData )
{
uchar cloop;
for(cloop=0;cloop<8;cloop++)
{
if ((cData&0x80)==0)
SI=0;
else
SI=1;
SK=0;
SK=1;
cData<<=1;
}
}
//*********************************************
//函數功能:讀狀態寄存器。
//入口: 無。
//出口: 返回狀態寄存器狀態。
//*********************************************
uchar ReadSR() //
{
uchar cData;
CS=0;
Write8(RDSR);
cData=Read8();
CS=1;
return cData;
}
//*********************************************
//函數功能:寫狀態寄存器。
//入口: 給出狀態寄存器狀態。
//出口: 正確寫入返回0,沒有寫入返回1。
//*********************************************
uchar WriteSR( uchar cData )
{
uchar cTemp;
cTemp=ReadSR();
if((cTemp&0x01)==1)
return 0;
CS=0;
Write8(WREN);
CS=1;
CS=0;
Write8(WRSR);
Write8(cData);
CS=1;
return 1;
}
//*********************************************
//函數功能:復位看門狗。
//入口:
//出口:
//*********************************************
void RST_WDog()
{
CS=0;
CS=0;
CS=1;
CS=1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -