高工在线首页   免费注册 |  登录 
       

高工在线首页 高工论坛 工程软件 困惑:C51中结构体的使用

楼主:HeartFlyFly
困惑:C51中结构体的使用
在写ds18b20驱动程序时,由于读设备64位rom代码,因此想用下结构体。
自定义的结构体为:
struct RomCode
{
uchar FamilyCode;
uchar SerialCode[6];
uchar Crc;
};
测试主函数:
void main()
{
uchar i;
struct RomCode ds; //定义结构体变量

ds.FamilyCode = 0xee; //结构体赋值
for(i=0;i <6;i++)
ds.SerialCode = i;
ds.Crc = 0xff;

LEDPORT = ds.FamilyCode; //用8个LED灯显示ds.FamilyCode的值
}
困惑:观察到LEDPORT显示的并不是0xee,而且不管给ds.FamilyCode赋什么值,最终运行结果显示的都是0x05;
尝试解决的过程:
试着把 for(i=0;i <6;i++)
ds.SerialCode = i;
ds.Crc = 0xff;
屏蔽掉后,发现LEDPORT显示0xee,正确了!~
疑问:为什么会出现这种情况?我在VC6.0中试了下,结构体按上述方法可正常赋值,不会出现前面已赋值的数据被更改的情况。难道在C51中不能对结构体赋值?希望各位大侠能帮我解决下

相关热贴:

 

2008-07-23 02:07:18

  顶部
2楼:HeartFlyFly
补充下:我所用的单片机是NXP的P89V51RD2FN

2008-07-23 02:14:12

  顶部
3楼:匿名用户6002
回复:困惑:C51中结构体的使用
ds.SerialCode,这个是一个数组,给他赋值应该写成ds.SerialCode[X],X应该是0-5的值

2008-10-24 14:08:40

  顶部
 
 
1
1/1页
标 题:
内 容:
验证码:     看不清?换一个 *
用户名: 匿名  提示:匿名发表将不享受高工在线论坛提供的积分奖励。
    

关于高工在线 | 广告服务| 使用条款 | 网站提交 | 推荐给好友 | 友情链接
© 2008 Gaogong123.com 高工在线-工程搜索引擎,保留所有权利