|
| 楼主: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 |
|
 |
|