資源簡介
針對EEPROM編寫的C語言控制程序,實現(xiàn)了寫入和讀取,EEPROM其實現(xiàn)在已經(jīng)不多了,傳上來以防有人需要

代碼片段和文件信息
#include?“io430.h“
#include?“in430.h“
//?用符號定義25lc020A?各命令
#define??c_READ??3???????????//讀命令?
#define??c_WRITE?2???????????//寫命令
#define??c_WRDI??4???????????//寫禁止
#define??c_WREN??6???????????//寫允許
#define??c_RDSR??5???????????//讀狀態(tài)寄存器
#define??c_WRSR??1???????????//寫狀態(tài)寄存器
//?用符號定義狀態(tài)寄存器中的狀態(tài)位
#define ?BP1????BIT3
#define ?BP0????BIT2
#define ?WEL????BIT1
#define ?WIP????BIT0 ???
?
//?用符號定義使用的端口和管腳,可據(jù)具體的連線進行修改
#define??PeSEL??P3SEL
#define??PeDIR??P3DIR
#define??PeOUT??P3OUT
#define??PeIN?? P3IN
#define??eeCS?? BIT0
#define??eeSI?? BIT1
#define??eeSO?? BIT2
#define??eeSCK? BIT3
//?用符號定義待寫和待讀EEPROM的起始單元地址、單元數(shù),可據(jù)具體的情況修改
#define????EEaddressW???0x00????????????//?待寫起始單元為00h?
#define????EEnumberW??? 24 ????????//?待寫單元數(shù)為24個字節(jié)
#define????EEaddressR???0x00 //?待讀起始單元為00h,即剛才寫入信息的空間
#define????EEnumberR??? 24??????????????//?待讀單元數(shù)為24個字節(jié)
//?函數(shù)名稱:send_SI_byte
//?函數(shù)功能:通過SI向EEPROM傳送一個字節(jié)的數(shù)據(jù)
//?函數(shù)參數(shù):向EEPROM發(fā)送的指令、地址或者數(shù)據(jù)(均為一字節(jié))
//?函數(shù)返回值:無
void?send_SI_byte(unsigned?int?a);
//?函數(shù)名稱:read_SO_byte
//?函數(shù)功能:通過SO從EEPROM讀取一個字節(jié)的數(shù)據(jù)
//?函數(shù)參數(shù):無
//?函數(shù)返回值:讀取到的數(shù)據(jù)(一字節(jié))
unsigned?int?read_SO_byte();
//?函數(shù)名稱:chk_WIP
//?函數(shù)功能:查詢EEPROM轉(zhuǎn)臺寄存器的WIP位值,直到不忙時返回
//?函數(shù)參數(shù):無
//?函數(shù)返回值:無
void?chk_WIP();
//?函數(shù)名稱:send_SCK
//?函數(shù)功能:向EEPROM的SCK引腳輸出一個正脈沖信號
//?函數(shù)參數(shù):無
//?函數(shù)返回值:無
void?send_SCK();
//?函數(shù)名稱:p_WREN
//?函數(shù)功能:設置EEPROM寫允許命令
//?函數(shù)參數(shù):無
//?函數(shù)返回值:無
void?p_WREN();
//?函數(shù)名稱:p_WRDI
//?函數(shù)功能:設置EEPROM寫禁止命令
//?函數(shù)參數(shù):無
//?函數(shù)返回值:無
void?p_WRDI();
//?函數(shù)名稱:EE_byte_read
//?函數(shù)功能:從EEPROM中讀出指定地址單元的一個字節(jié)內(nèi)容
//?函數(shù)參數(shù):指定EEPROM單元的地址
//?函數(shù)返回值:指定EEPROM單元的內(nèi)容
unsigned?int?EE_byte_read(unsigned?int?address);
//?函數(shù)名稱:EE_byte_write
//?函數(shù)功能:向EEPROM指定單元寫入一個字節(jié)內(nèi)容
//?函數(shù)參數(shù):指定EEPROM單元的地址address、指定寫入單元的內(nèi)容data
//?函數(shù)返回值:無
void?EE_byte_write(unsigned?int?addressunsigned?int?data);
//?函數(shù)名稱:rd_status
//?函數(shù)功能:讀EEPROM狀態(tài)寄存器
//?函數(shù)參數(shù):無
//?函數(shù)返回值:EEPROM狀態(tài)寄存器的值
unsigned?int?rd_status();
//?函數(shù)名稱:wr_status
//?函數(shù)功能:寫EEPROM狀態(tài)寄存器
//?函數(shù)參數(shù):待寫入EEPROM的狀態(tài)值
//?函數(shù)返回值:無
void?wr_status(unsigned?int?data);
const?unsigned?char?data[]={……} //?利用const關(guān)鍵字在ROM中預置要寫入的內(nèi)容(char類型),寫入格式為‘h‘‘e‘‘l‘‘l‘‘o‘等等
unsigned?char?buffer; //?聲明RAM緩沖區(qū),存放讀取到的EEPROM內(nèi)容
unsigned?char?*p=&buffer; //?聲明指針指向buffer,便于后續(xù)操作
void?main(?void?)
{
??//?Stop?watchdog?timer?to?prevent?time?out?reset
??WDTCTL?=?WDTPW?+?WDTHOLD;
??……??????????????????????????????????//?用戶自編EEPROM讀/寫主程序部分
??……
??……
??LPM0;
}
void?send_SI_byte(unsigned?int?a)
{
??unsigned?int?ib;
??for(i=0;i<8;++i)
??{
????b=a<????switch(b&0x0080){
????case?0x0080:?PeOUT=PeOUT|eeSI;?break;?//?a中第(8-i)位為1,置SI=1.
????case?0:?PeOUT=PeOUT&(~eeSI);?break;???//?a中第(8-i)位為0,置SI=0.
????default:;
????}
????send_SCK();???????????????????????????//?通過SCK輸出一個clock
??}
}
unsigned?int?read_SO_byte()
{
??unsigned?int?ia=0;
??for(i=0;i<8;++i)
??{
????a=a<<1;??????????????????????????????//?將a左移一位
????if((PeIN&eeSO)==0)???????a=a&254;???//?置a末位為0
????else?a=a|1;?????????????????????????//?置a末位為1
????se
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5987??2011-12-15?15:37??EEPROM操作指令_C語言版.c
?????文件???????1500??2013-12-28?22:32??說明.txt
-----------?---------??----------?-----??----
?????????????????7487????????????????????2
評論
共有 條評論