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相关推荐

  1. 英语语言用计算机研究什么软件,高中英语新课程标准词汇习得研究—多媒体计算机辅助语言软件在教学中的应用.doc...

    高中英语新课程标准词汇习得研究 -多媒体计算机辅助语言软件在教学中的应用 [摘要]本文根据新颁<普通高中英语课程标准(实验)>(简称高中新课程标准)的精神,探讨如何通过校本教育研究的合作模 ...

  2. 【C语言进阶】③探究浮点数在内存中的存储方式

    文章目录 一.例题 二.浮点数在内存中存储方式 2.1国际标准IEEE(电气和电子工程协会)754规定: 2.2实际上,浮点数在内存的存储形式为: 2.3具体M和E是怎么算的呢? 三.题解 3.1刚开 ...

  3. 浮点数c语言,C语言浮点数运算

    C语言标准C89里规定了3种浮点数,float型.double型和long double型,常见的浮点型长度为float型占4个字节,double型占8个字节,long double型长度要大于等于d ...

  4. 64位浮点数_【C语言教程】C语言浮点数及其应用

    浮点型常量 浮点型即生活中使用的小数类型(例如3.14),例如账户的余额,银行的存款利率等等都是浮点型. C语言中按照精度的不同分别使用float,double和long double表示,默认浮点类 ...

  5. 浮点数在内存中的表示

    2011年4月9日10:09:19 c语言中的浮点数在内存中的表示(VC++编译器中): char:1个字节 short:2个字节 int:4字节 long:4字节 float:4字节(单精度) do ...

  6. python 浮点数比较_Python中的浮点数

    浮点数在计算机中表达为二进制(binary)小数.例如:十进制小数: 0.125 是 1/10 + 2/100 + 5/1000 的值. 类似地,二进制小数: 0.001 是 0/2 + 0/4 + ...

  7. 计算机浮点数格式化表示方法,浮点数在计算机中是如何表示的

    原标题:浮点数在计算机中是如何表示的 来源:编程珠玑 前言 相比int等整型,float等浮点类型的表示和存储较为复杂,但它又是一个无法回避的话题,那么就有必要对浮点一探究竟了.在计算机中,一般用IE ...

  8. c语言 准确赋值浮点数,C语言浮点数

    浮点数的概念 浮点数也称小数或实数.例如,0.0.75.0.4.023.0.27.-937.198 都是合法的小数.这是常见的小数的表现形式,称为十进制形式. C语言中采用float和double关键 ...

  9. 梦开始的地方 —— C语言数据在内存中的存储(整形+浮点型)

    文章目录 整形在内存中的存储 1. 数值类型的基本分类 2. 整形在内存中的存储 1. 原码.反码.补码 2. 内存中为什么要存放补码? 3. 大小端存储 4. 无符号有符号数练习 5. 有符号数无符 ...

最新文章

  1. Apache commons-io
  2. 随机森林OOB score作用
  3. r语言做绘制精美pcoa图_R语言统计与绘图:绘制QQ图
  4. W10系统配置java环境变量
  5. Redis简介(1)
  6. 书单|互联网企业面试案头书之产品经理篇
  7. centos7查看设置IP地址
  8. 系统虚拟化与虚拟机的区别
  9. 还在使用集合类完成这些功能?不妨来看看 Guava 集合类!!!
  10. 山寨版学子商城——成功上线!
  11. 中国银行手机银行登入显示服务器,中国银行手机银行登录指南
  12. vue项目运用繁体字
  13. 1、RFID标签介绍
  14. 创建自己的个人网站(一)
  15. java如何编写响应_Java开发人员的反应编程介绍 - Fernando Almeida
  16. 在DialogFragment的onStop(完全不可见)时调用dismiss退出界面报错解决办法
  17. MATLAB之物理场可视化
  18. React-Native笔记--Debugger and device times had drifted by more than 60s.
  19. DSP F28069 build 出现warning : creating output section “xxxx“ without a SECTIONS
  20. 2017计算机考研参考书目推荐,2017年中山大学085211计算机技术考研参考书目推荐...

热门文章

  1. php stortime,文件存储 | 综合话题 | Laravel 5.3 中文文档
  2. 看完这个你还不理解右值引用和移动构造 你就可以来咬我(中)
  3. Android开发之虹软人脸识别活体检测SDK包Bitmap转NV21方法
  4. Android通过广播实现强制下线功能
  5. 【第五单元】vim与文件管理(10.1)
  6. c#设计模式-建造者模式
  7. kerberos的故事2
  8. Mocha BSM产品亮点——以Portal为展现中心的监控管理平台
  9. JS跳转手机QQ的聊天页面
  10. laravel-admin 中怎么给 grid 的列添加行数序号