日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ee2prom擦除 c语言,浮点数在E2PROM中的存取方法.doc

發布時間:2023/12/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ee2prom擦除 c语言,浮点数在E2PROM中的存取方法.doc 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PAGE

PAGE 1

浮點數據在E2PROM中的存取方法

摘 要 介紹了C51語言的浮點數在E2PROM中的存取方法。

關鍵詞 浮點數 非易失存儲器 存取方法 C51編程

1 引言

由于C語言的高效性和易維護性,因而C51語言在工程中得到了廣泛應用。以下所討論的問題中的程序舉例就是用C51語言編寫來實現其功能和目的。在我們設計產品的過程中,通常要將一些儀器參數保存起來,作為儀器正常工作的保障,這些浮點參數一般都保存在非易失性存儲器(E2PROM)中,以防丟失。

2 浮點數在E2PROM中的存取

2.1 浮點數在并行E2PROM中的存取

MCS-51單片機在智能化儀器儀表的設計中得到了廣泛的應用,同時C51單片機開發語言方便靈活的接口編程能力和強大的數據處理能力,在單片機的開發中占有重要地位。其特有的浮點數處理能力為智能化儀器儀表的非線性矯正、數字化校準提供了方便。在C51中,如果浮點數被分配在RAM存儲空間,如6264、6116、62256、62128等,其數據的存取由C51自動編譯完成,不必編寫專門的程序。而非易失性存儲器2817A、2864等雖然硬件接口沒有特殊要求,但寫周期與RAM不同,因此必須為浮點數存儲編寫專門的存儲程序。

一般情況下,用戶定義的浮點數在RAM中的地址、存儲方式對用戶是未知的。但是用戶可以通過C51的指針實現對C51浮點數的按字節訪問,C51語言的指針是它的一大特色,表現出很強的數據處理能力和靈活性。使用指針可以有效地表示復雜的數據結構,動態分配存儲器,直接處理內存地址等,簡化程序設計。浮點數在內存中的存儲方式如表1所示。

地址

0

1

2

3

內容

MMMMMMMM

MMMMMMMM

EMMMMMMM

SEEEEEEE

表1 浮點數在內存中的存儲

其中,S 符號位,1表示負,0表示正;

????? E 階碼(在兩個字節中)偏移最大為127;

????? M 23位尾數,最高位為1。

例如浮點數變量k=-12.5的十六進制表示為:0xC1 48 00 00,它按如下方式保存于內存RAM的連續4個字節中。

地址 內容

ADD+00H 0x00

ADD+01H 0x00

ADD+02H 0x48

ADD+03H 0xC1

通過以下語句可以直接對變量進行讀寫操作。

float xdata k, s ;定義浮點數k,s位于外部RAM

k=-12.5 ;為變量k賦值為-12.5

s= k ;為變量s賦值為-12.5

由于非易失性存儲器2817A、2864等的讀操作與RAM類似,而擦、寫時間周期比隨機存儲器RAM要長得多,一般一個字節的擦除和寫訪問時間為200μS或1 mS,最大的寫入周期(包括擦除和寫入)時間不超過10mS,典型時間為5mS。因此在實際應用中要滿足擦、寫周期時間要求,應根據芯片的要求設置等待或中斷、查詢。每個C51浮點數占用連續的4個字節的存儲單元,浮點數的存儲也必須是連續的4個字節存儲單元。以上語句不能完成浮點數在2817、2864等E2PROM中的保存,因此必須為浮點數存儲編寫專門的存儲程序。

定義ap是指向非易失性存儲器2817A、2864的指針,非易失性存儲器2817A、2864分配的地址為0x2200。利用指針將RAM中的浮點數依次取出,按字節依次連續存儲在非易失性存儲器2817A、2864中。也可以使用聯合(共用體)將RAM中的浮點數依次取出,按字節依次連續存儲在非易失性存儲器2817A、2864中。程序執行后,浮點數s的值就自動變為-12.5,并可以由浮點變量xx直接引用或參與運算。程序流程框圖如圖1所示,程序如下:

#include

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define d2864 XBYTE[0x2200]

開始市

開始市

從RAM中按字節取浮點數

是否取完

按字節寫入EEPROM

是否寫完

延 時

從EEPROM中讀

是否讀完

結 束

N

Y

N

Y

N

Y

圖1 并行EEPROM2864程序框圖

#define s XFLOAT[0x0880]

/*4*0x880=0x2200浮點數占用4個字節*/

float xdata k=-12.5;

u

總結

以上是生活随笔為你收集整理的ee2prom擦除 c语言,浮点数在E2PROM中的存取方法.doc的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。