當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]unsigned char eeprom_read(unsigned char addr);void eeprom_write(unsigned char addr, unsigned char value);這兩個(gè)函數(shù)是PIC內(nèi)部函數(shù),可以直接調(diào)用;-----------------------------以下內(nèi)容是baidu空間的一位博

unsigned char eeprom_read(unsigned char addr);void eeprom_write(unsigned char addr, unsigned char value);這兩個(gè)函數(shù)是PIC內(nèi)部函數(shù),可以直接調(diào)用;

-----------------------------以下內(nèi)容是baidu空間的一位博主寫的-------http://hi.baidu.com/wxg923/item/17d65d23942ea9fd50fd8788---------

-上周在做一個(gè)項(xiàng)目時(shí),需要對(duì)測(cè)試數(shù)據(jù)實(shí)時(shí)的保存,以被重新上電后讀取.采用了PIC的內(nèi)部EEPROM,正常讀取時(shí)沒(méi)有什么問(wèn)題.反復(fù)上電掉電就出現(xiàn)了EEPROM被清0(改寫).

查閱相關(guān)資料:EEROM寫過(guò)程包括兩個(gè)階段:先擦除(電壓為20V) 再寫入(電壓18V);EEPROM在寫入過(guò)程中如果電壓不穩(wěn)定,很容易導(dǎo)致錯(cuò)誤.先使用了軟件冗余法,同一個(gè)data寫在連續(xù)3個(gè)地址,使用時(shí)比較,只有2個(gè)相同時(shí)才使用.這樣做,反復(fù)上電掉電出錯(cuò)幾率小了很多,但是還是會(huì)出錯(cuò).在反復(fù)上電100多次時(shí)還是出錯(cuò).另一個(gè)解決辦法就是使能BOD,寫EEPROM時(shí),先檢測(cè)BOD.網(wǎng)上一位兄弟使用此方法反復(fù)上電2000多次才錯(cuò)誤一次.

上述方法有兩個(gè)致命缺陷:1.EEPROM壽命短,EEPROM按最低10萬(wàn)次算,我的項(xiàng)目每2s寫一次EEPROM,連續(xù)使用2周后EEPROM就可能壽命以盡.2還是有錯(cuò)誤,沒(méi)有100%正確.

解決方案:使用掉電檢測(cè),如果成本許可還可以使用法拉電容.


電源電壓掉電時(shí),產(chǎn)生一個(gè)INT信號(hào),PIC進(jìn)入外部中斷程序:首先將IO清零以降低電流損耗,此時(shí)利用電容C1的放電時(shí)間將要保存的數(shù)據(jù)寫入EEPROM.470uF D型鉭電容可供PIC工作20ms左右,足夠?qū)?bety EEPROM.

---------------------以下內(nèi)容是我實(shí)驗(yàn)內(nèi)容--------摘自博客園的--“業(yè)精于勤,荒于嬉;行成于思,毀于隨---------

/******************************************
******PIC16F877A 內(nèi)部EEPROM讀寫實(shí)驗(yàn)*******
Author:hnrain
Date:2010-12-25
Version:V0.1
Email:hnrain1004@gmail.com
Forum:http://bbs.cepark.com
_______________________________
實(shí)驗(yàn)現(xiàn)象:先給內(nèi)部EEPROM的0~7字節(jié)寫數(shù)據(jù)1~8,再讀出第0字節(jié)的
內(nèi)容,并判斷讀出來(lái)的數(shù)據(jù)是不是1,如果是1則點(diǎn)亮RD0口的LED。

重點(diǎn)內(nèi)容:
內(nèi)部EEPROM的操作主要通過(guò)4個(gè)寄存器
EECON1,EECON2,EEDATA,EEADR

EEDATA寄存器存放8位讀寫數(shù)據(jù)
EEADR存放EEPROM被訪問(wèn)過(guò)的地址

EECON1寄存器定義:
bit7:5 未用;讀為0
bit4 EEIF:EEPROM寫操作中斷標(biāo)志位
1 = 寫操作完成(必須軟件清零)
0 = 寫操作未完成或還未開(kāi)始
bit3 WRERR:EEPROM錯(cuò)誤標(biāo)志位
1 = 寫操作過(guò)早終止
0 = 寫操作已完成
bit2 WREN:EEPROM寫使能位
1 = 允許寫入
0 = 禁止寫入EEPROM
bit1 WR:寫操作控制位
1 = 啟動(dòng)寫周期,一旦寫入完成,該位將被硬件清零
寫操作控制位只能用軟件置"1"
0 = EEPROM的寫周期已完成
bit0 RD:讀控制位
1 = 啟動(dòng)EEPROM讀操作。讀需要一個(gè)周期,RD由硬件清零
RD只能用軟件置“1”
0 = 未啟動(dòng)EEPROM讀操作

寫入EEPROM有一個(gè)特定的過(guò)程:將55H寫入EECON2,將AAH寫入EECON2
然后將WR位置1
*******************************************/

#include #define uchar unsigned char#define uint unsigned int// CONFIG#pragma config FOSC = HS // 12MHZ 外部晶振#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT enabled)#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)#define DELAY 200void WriteEE(uchar addr,uchar data);//EEPROM寫函數(shù)uchar ReadEE(uchar addr); //EEPROM讀函數(shù)uchar cydata; //定義全局變量void main(void) //主函數(shù){ uchar k; PORTA = 0x00; //PORTA賦00 TRISA = 0x00;//PORTA為輸出 for(k = 0;k < 7; k++) { WriteEE(k,k+1); //循環(huán)調(diào)用EEPROM寫函數(shù),向地址為0~7的寫入1~8 }while(1){ cydata = ReadEE(0);//讀取EEPROM的地址0數(shù)據(jù) if(cydata == 1) { RA0 = 1; //判斷EEPROM地址0里的數(shù)據(jù)是不是為1,為1則點(diǎn)亮LED0 }}}//EEPROM寫數(shù)據(jù)函數(shù)void WriteEE(uchar addr,uchar data){ do{} while(WR == 1);//等待寫完成 EEADR = addr;//寫入地址信息 EEDATA = data;//寫入數(shù)據(jù)信息 EEPGD = 0;//操作EEPROM WREN = 1; //寫EEPROM允許// --- 此處要disable interrupt EECON2 = 0x55;//寫入特定時(shí)序 EECON2 = 0xaa; WR = 1; //執(zhí)行寫操作 do{} while(WR == 1);//等待寫完成// 可以enable interrupt 功能 WREN = 0;//禁止寫入EEPROM}//EEPROM讀數(shù)據(jù)函數(shù)uchar ReadEE(uchar addr){ uchar num; do{} while(RD == 1);//等待讀完成 EEADR = addr;//寫入要讀的址址 EEPGD = 0;//操作EEPROM RD = 1;//執(zhí)行讀操作 do{} while(RD == 1);//等待讀完成 num = EEDATA; return num;//返回讀取的數(shù)據(jù)}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉