ee2prom擦除 c语言,浮点数在E2PROM中的存取方法.doc
PAGE
PAGE 1
浮點數(shù)據(jù)在E2PROM中的存取方法
摘 要 介紹了C51語言的浮點數(shù)在E2PROM中的存取方法。
關(guān)鍵詞 浮點數(shù) 非易失存儲器 存取方法 C51編程
1 引言
由于C語言的高效性和易維護性,因而C51語言在工程中得到了廣泛應(yīng)用。以下所討論的問題中的程序舉例就是用C51語言編寫來實現(xiàn)其功能和目的。在我們設(shè)計產(chǎn)品的過程中,通常要將一些儀器參數(shù)保存起來,作為儀器正常工作的保障,這些浮點參數(shù)一般都保存在非易失性存儲器(E2PROM)中,以防丟失。
2 浮點數(shù)在E2PROM中的存取
2.1 浮點數(shù)在并行E2PROM中的存取
MCS-51單片機在智能化儀器儀表的設(shè)計中得到了廣泛的應(yīng)用,同時C51單片機開發(fā)語言方便靈活的接口編程能力和強大的數(shù)據(jù)處理能力,在單片機的開發(fā)中占有重要地位。其特有的浮點數(shù)處理能力為智能化儀器儀表的非線性矯正、數(shù)字化校準提供了方便。在C51中,如果浮點數(shù)被分配在RAM存儲空間,如6264、6116、62256、62128等,其數(shù)據(jù)的存取由C51自動編譯完成,不必編寫專門的程序。而非易失性存儲器2817A、2864等雖然硬件接口沒有特殊要求,但寫周期與RAM不同,因此必須為浮點數(shù)存儲編寫專門的存儲程序。
一般情況下,用戶定義的浮點數(shù)在RAM中的地址、存儲方式對用戶是未知的。但是用戶可以通過C51的指針實現(xiàn)對C51浮點數(shù)的按字節(jié)訪問,C51語言的指針是它的一大特色,表現(xiàn)出很強的數(shù)據(jù)處理能力和靈活性。使用指針可以有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),動態(tài)分配存儲器,直接處理內(nèi)存地址等,簡化程序設(shè)計。浮點數(shù)在內(nèi)存中的存儲方式如表1所示。
地址
0
1
2
3
內(nèi)容
MMMMMMMM
MMMMMMMM
EMMMMMMM
SEEEEEEE
表1 浮點數(shù)在內(nèi)存中的存儲
其中,S 符號位,1表示負,0表示正;
????? E 階碼(在兩個字節(jié)中)偏移最大為127;
????? M 23位尾數(shù),最高位為1。
例如浮點數(shù)變量k=-12.5的十六進制表示為:0xC1 48 00 00,它按如下方式保存于內(nèi)存RAM的連續(xù)4個字節(jié)中。
地址 內(nèi)容
ADD+00H 0x00
ADD+01H 0x00
ADD+02H 0x48
ADD+03H 0xC1
通過以下語句可以直接對變量進行讀寫操作。
float xdata k, s ;定義浮點數(shù)k,s位于外部RAM
k=-12.5 ;為變量k賦值為-12.5
s= k ;為變量s賦值為-12.5
由于非易失性存儲器2817A、2864等的讀操作與RAM類似,而擦、寫時間周期比隨機存儲器RAM要長得多,一般一個字節(jié)的擦除和寫訪問時間為200μS或1 mS,最大的寫入周期(包括擦除和寫入)時間不超過10mS,典型時間為5mS。因此在實際應(yīng)用中要滿足擦、寫周期時間要求,應(yīng)根據(jù)芯片的要求設(shè)置等待或中斷、查詢。每個C51浮點數(shù)占用連續(xù)的4個字節(jié)的存儲單元,浮點數(shù)的存儲也必須是連續(xù)的4個字節(jié)存儲單元。以上語句不能完成浮點數(shù)在2817、2864等E2PROM中的保存,因此必須為浮點數(shù)存儲編寫專門的存儲程序。
定義ap是指向非易失性存儲器2817A、2864的指針,非易失性存儲器2817A、2864分配的地址為0x2200。利用指針將RAM中的浮點數(shù)依次取出,按字節(jié)依次連續(xù)存儲在非易失性存儲器2817A、2864中。也可以使用聯(lián)合(共用體)將RAM中的浮點數(shù)依次取出,按字節(jié)依次連續(xù)存儲在非易失性存儲器2817A、2864中。程序執(zhí)行后,浮點數(shù)s的值就自動變?yōu)?#xff0d;12.5,并可以由浮點變量xx直接引用或參與運算。程序流程框圖如圖1所示,程序如下:
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define d2864 XBYTE[0x2200]
開始市
開始市
從RAM中按字節(jié)取浮點數(shù)
是否取完
按字節(jié)寫入EEPROM
是否寫完
延 時
從EEPROM中讀
是否讀完
結(jié) 束
N
Y
N
Y
N
Y
圖1 并行EEPROM2864程序框圖
#define s XFLOAT[0x0880]
/*4*0x880=0x2200浮點數(shù)占用4個字節(jié)*/
float xdata k=-12.5;
u
總結(jié)
以上是生活随笔為你收集整理的ee2prom擦除 c语言,浮点数在E2PROM中的存取方法.doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 绝地求生第一人称
- 下一篇: 第九代处理器什么意思(第的文言文解释及意