ctof.c

来自「51单片机浮点数存放到EEPROM中的程序范例」· C语言 代码 · 共 67 行

C
67
字号
/********************************************************************************************************
                                     浮点数存放到EEPROM中的程序范例

                                  The Small RTOS Kernel(For Keil c51)

                                     (c) Copyright 2006, Gaojie
                                          All Rights Reserved

                                               V1.00.0


*********************************************************************************************************
备注:

/********************************************************************************************************/
#include <STC89C52GJ.H>
#define uchar unsigned char
#define uint unsigned int

uchar idata c1,c2,c3,c4;
float idata a1=0;

void FtoC(void)
{
   float a;
   uchar i,*px;
   uchar x[4];       //定义字符数组,准备存储浮点数的四个字节
   void *pf;
   px=x;             /*px指针指向数组x*/
   pf=&a;            /*void 型指针指向浮点数首地址*/
   a=34.526;
   for(i=0;i<4;i++)
    { 
    	*(px+i)=*((char *)pf+i);        /*强制void 型指针转成char型,因为*/
    }                                 /*void型指针不能运算*/

	c1 = x[0];   //通过软件仿真查看存放到数组中的数据
    c2 = x[1];
	c3 = x[2];
	c4 = x[3];
}

//如果已将数存入EEPROM,要将其取出合并,方法也是一样,可参考下面的程序。


void CtoF(void)
{ 
  float a;
  uchar i,*px;
  uchar x[4]={0xb5,0x00,0x00,0x00};
  void *pf;
  px=x;
  pf=&a;
  for(i=0;i<4;i++)
    { 
    	*((char *)pf+i)=*(px+i);
    }

  a1=a;
}


main()
{
    	CtoF();
        FtoC();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?