您现在所在的是:

单片机论坛

回帖:5个,阅读:3692 [上一页] [1] [下一页]
2459
sgx
文章数:474
年度积分:50
历史总积分:2459
注册时间:2001/11/22
发站内信
发表于:2005/8/15 10:48:00
#0楼
大家是不是有时需要将一个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编辑过]
骐骥一跃,不能十步;
驽马十驾,功在不舍
963
紫薇自控
文章数:29
年度积分:50
历史总积分:963
注册时间:2004/3/7
发站内信
发表于:2005/8/16 9:28:00
#1楼
非常有用。谢谢斑竹
2459
sgx
文章数:474
年度积分:50
历史总积分:2459
注册时间:2001/11/22
发站内信
发表于:2005/8/16 10:51:00
#2楼
其实本程序在合分浮点数时最能体现它的优越性
骐骥一跃,不能十步;
驽马十驾,功在不舍
914
ddllxxrr
文章数:7
年度积分:50
历史总积分:914
注册时间:2007/4/11
发站内信
发表于:2007/4/11 8:51:00
#3楼
谢了!正需要这方面的东东
963
zzhj86
文章数:20
年度积分:50
历史总积分:963
注册时间:2007/11/19
发站内信
发表于:2008/4/10 18:36:00
#4楼
非常感谢,很久没来了,因为找这个方面的资料上的,一看就是好东西。
917
louisignal
文章数:8
年度积分:50
历史总积分:917
注册时间:2006/10/18
发站内信
发表于:2008/6/25 11:17:00
#5楼
也可以这么做:
((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;

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

78.0005