• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

请教:如何将绝对地址赋予结构变量成员?

请教:在C51中,如何将绝对地址赋给结构变量的成员?请看以下程序段:

 union u{          //定义一个共用体类型
 uint word;
 struct{uchar hi;uchar lo;}bytes;}; //嵌套定义一个结构类型变量

 union u nt0;             //定义一个共用体变量nt0
 nt0.bytes.hi=TH0;     //将TH0的值赋给结构成员hi
 nt0.bytes.lo=TL0;     //将Tl0的值赋给结构成员lo
由于51单片机的定时器T0高字节TH0和低字节TL0地址不连续,无法使用C51的扩展类型SFR16,不得已定义了一个共用体变量,并将TH0和TL0的内容传送到hi和li中,以便作为一个整型数据参与运算,但运算结果还要传回来,降低了运算速度.

能不能在程序的第三行,定义一个结构类型变量的同时,将TH0和TL0的绝对地址赋予变量成员hi和li,或者C51不支持? 

 

全部回复(5)
正序查看
倒序查看
2011-03-29 22:41

发错地方了吧~

这里搞硬件的相对多些。

软件的话,推荐一个不错的网址:http://www.ourdev.cn/

0
回复
无衣
LV.6
3
2011-03-31 20:24
@高等数学
发错地方了吧~这里搞硬件的相对多些。软件的话,推荐一个不错的网址:http://www.ourdev.cn/
谢谢指点,是一个好地方.
0
回复
2011-03-31 20:31
@无衣
谢谢指点,是一个好地方.
我以后也打算学软件的,到时候多向你请教。
0
回复
elex
LV.2
5
2011-04-01 22:53

对于多字节数据类型的存储一般是低字节在前的。

改成下面的试试?

union u{          //定义一个共用体类型
 uint word;
 struct{uchar lo;uchar hi;}bytes;}; //嵌套定义一个结构类型变量

0
回复
无衣
LV.6
6
2011-04-01 23:24
@elex
对于多字节数据类型的存储一般是低字节在前的。改成下面的试试?unionu{         //定义一个共用体类型 uintword; struct{ucharlo;ucharhi;}bytes;};//嵌套定义一个结构类型变量
经过软件仿真,我发现,在VC++6.0中,结构类型各成员是从高地址到低地址顺序存放.而在KEIL uV3集成开发环境中,则是从低地址到高地址顺序存放.
0
回复