在CW中怎么实现*(word *)(0xffa0)呢?
- UID
- 139262
- 性别
- 男
|
在CW中怎么实现*(word *)(0xffa0)呢?
a=*(word *)(0xffa0);编译成汇编后是
LDHX 160 STHX a
把高位地址给忽略了,这是哪里的问题? |
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
*(word *)(0xffa0);这个定义最好有变量名
|
|
|
|
|
|
- UID
- 139262
- 性别
- 男
|
您的意思是?
volatile unsigned char test @0xffa0;
这样?
然后 调用a=test; |
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
要确认你定义的变量的类型长度
比如word是unsigned int类型的16bit长度,这个在CW中可以设置,变量a也要定义成同样的长度
另外,应用的时候加上volatile修饰符,a=*(volatile word *)(0xffa0); |
|
|
|
|
|
- UID
- 340075
- 性别
- 男
|
请问:
a=*(volatile word *)(0xffa0);
这条语句的目的是给变量a分配确定的地址吗?
|
|
|
|
|
|
- UID
- 340118
- 性别
- 男
|
这语句是指针吧,意思是a指向地址0xffa0.
如:#define AA(x) {\
*(volatile unsigned char *)0x026A = (unsigned char)x;\
}
即定义AA(x)指向0x026A,可以通过写x的值来写入地址0x026A |
|
|
|
|
|