浮点数在E2PROM中的存取方法.doc

浮点数在E2PROM中的存取方法.doc

ID:48638906

大小:417.50 KB

页数:12页

时间:2020-01-30

浮点数在E2PROM中的存取方法.doc_第1页
浮点数在E2PROM中的存取方法.doc_第2页
浮点数在E2PROM中的存取方法.doc_第3页
浮点数在E2PROM中的存取方法.doc_第4页
浮点数在E2PROM中的存取方法.doc_第5页
资源描述:

《浮点数在E2PROM中的存取方法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、浮点数据在E2PROM中的存取方法摘要介绍了C51语言的浮点数在E2PROM中的存取方法。关键词浮点数非易失存储器存取方法C51编程1引言由于C语言的高效性和易维护性,因而C51语言在工程中得到了广泛应用。以下所讨论的问题中的程序举例就是用C51语言编写来实现其功能和目的。在我们设计产品的过程中,通常要将一些仪器参数保存起来,作为仪器正常工作的保障,这些浮点参数一般都保存在非易失性存储器(E2PROM)中,以防丢失。2浮点数在E2PROM中的存取2.1浮点数在并行E2PROM中的存取MCS-51单片

2、机在智能化仪器仪表的设计中得到了广泛的应用,同时C51单片机开发语言方便灵活的接口编程能力和强大的数据处理能力,在单片机的开发中占有重要地位。其特有的浮点数处理能力为智能化仪器仪表的非线性矫正、数字化校准提供了方便。在C51中,如果浮点数被分配在RAM存储空间,如6264、6116、62256、62128等,其数据的存取由C51自动编译完成,不必编写专门的程序。而非易失性存储器2817A、2864等虽然硬件接口没有特殊要求,但写周期与RAM不同,因此必须为浮点数存储编写专门的存储程序。一般情况下,用

3、户定义的浮点数在RAM中的地址、存储方式对用户是未知的。但是用户可以通过C51的指针实现对C51浮点数的按字节访问,C51语言的指针是它的一大特色,表现出很强的数据处理能力和灵活性。使用指针可以有效地表示复杂的数据结构,动态分配存储器,直接处理内存地址等,简化程序设计。浮点数在内存中的存储方式如表1所示。12地址0123内容MMMMMMMMMMMMMMMMEMMMMMMMSEEEEEEE表1浮点数在内存中的存储其中,S符号位,1表示负,0表示正;     E阶码(在两个字节中)偏移最大为127;  

4、   M23位尾数,最高位为1。例如浮点数变量k=-12.5的十六进制表示为:0xC1480000,它按如下方式保存于内存RAM的连续4个字节中。地址内容ADD+00H0x00ADD+01H0x00ADD+02H0x48ADD+03H0xC1通过以下语句可以直接对变量进行读写操作。floatxdatak,s;定义浮点数k,s位于外部RAMk=-12.5;为变量k赋值为-12.5s=k;为变量s赋值为-12.5由于非易失性存储器2817A、2864等的读操作与RAM类似,而擦、写时间周期比随机存储器R

5、AM要长得多,一般一个字节的擦除和写访问时间为200μS或1mS,最大的写入周期(包括擦除和写入)时间不超过10mS,典型时间为5mS。因此在实际应用中要满足擦、写周期时间要求,应根据芯片的要求设置等待或中断、查询。每个C51浮点数占用连续的4个字节的存储单元,浮点数的存储也必须是连续的4个字节存储单元。以上语句不能完成浮点数在2817、2864等E2PROM中的保存,因此必须为浮点数存储编写专门的存储程序。12定义ap是指向非易失性存储器2817A、2864的指针,非易失性存储器2817A、286

6、4分配的地址为0x2200。利用指针将RAM中的浮点数依次取出,按字节依次连续存储在非易失性存储器2817A、2864中。也可以使用联合(共用体)将RAM中的浮点数依次取出,按字节依次连续存储在非易失性存储器2817A、2864中。程序执行后,浮点数s的值就自动变为-12.5,并可以由浮点变量xx直接引用或参与运算。程序流程框图如图1所示,程序如下:#include#include#include#include#defin

7、eucharunsignedchar#defineuintunsignedint#defined2864XBYTE[0x2200]开始市从RAM中按字节取浮点数是否取完按字节写入EEPROM是否写完延时从EEPROM中读是否读完结束NYNYNY图1并行EEPROM2864程序框图#definesXFLOAT[0x0880]/*4*0x880=0x2200浮点数占用4个字节*/floatxdatak=-12.5;uchar*ap=&d2864;uchar*k_ap=&k;floatxdataxx;vo

8、iddelay(uinttt)/*延迟1mS子程序*/{uintk;while(tt--!=0){for(k=0;k<72;k++)continu12e;}}voidwritef_P2864(uintbyte_address,floatvalue){uchari;union{floata;/*定义一个联合*/ucharb[4];}y;y.a=value;/*将要写入的浮点数送给联合型变量*/for(i=0;i<4;i++)/*写浮点数的四个字节数据至指定的地址*/{X

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。