登录
首页 单片机论坛
回帖 发帖
正文

主题:一个INT分解为两个CHAR或两个CHAR合并为一个INT的小程序

点击:3712 回复:5

sgx

大家是不是有时需要将一个INT数存储在EEPROM中,或从EEPROM读取两个数合并为一个INT,或在数据传输中要将一个INT数传给另一块单片机,此时你需将此INT分解为两个CHAR,而另一块单片机又要将分解后的数CHAR合并为一个INT。在这些场合都可用到以下的两个小程序,现在本笨笨提供给大家。本程序只做抛砖引玉之用:)
单片机AT89S52 编译环境,Keil uVision3
/********************************************************************
*----------------------1int-2char函数--------------------------------
********************************************************************/
void int2char(uint aint)
{
uchar x[2];
uchar j,*px;
void *pf;
px=x;
pf=&aint;
for(j=0;j<2;j++)
{*(px+j)=*((char*)pf+j);
}
}
*******************************************************************/
void char2int()
{   uint data a;
void *pf;
uchar data j,*px;
uchar data x[2]={dh,dl};

px=x;
pf=&a;
for(j=0;j<2;j++)
{ *((char *)pf+j)=*(px+j);}
time[i]=a;

}
最后修改:2005-8-15 10:51:27
05-08-15 10:48
非常有用。谢谢斑竹
05-08-16 09:28

sgx

其实本程序在合分浮点数时最能体现它的优越性
05-08-16 10:51
谢了!正需要这方面的东东
07-04-11 08:51
非常感谢,很久没来了,因为找这个方面的资料上的,一看就是好东西。
08-04-10 18:36
也可以这么做:
((unsigned char *) &int_data)[0]=char_1;
((unsigned char *) &int_data)[1]=char_0;
将char_1,char_0合并成int_data.
反过来的:
char_1=(unsigned char ) int_data>>8;
char_0=(unsigned char ) int_data;
08-06-25 11:17

工控新闻

更多新闻资讯