我所使用的芯片是MC9S12XDP512
在AD的值读取中,我将AD寄存器的值直接赋给放在Paged ram RAM_F8 的变量,读取的值为0
若赋给non-paged RAM中的变量,则读取的值是正确的。
此外,我将non-paged RAM中变量的值赋给Paged ram 中的变量,值也是错误的。
我在编译器中看这些变量的地址都是正确的,为什么会出现这种情况呢?
我在编译器里也加了-D__FAR_DATA的参数
请教如何设置才能利用paged ram中变量读取正确值,难道非要手工指定RPAGE?
[em06]在RAM的定义区可以加上这样的说明试试:
#pragma DATA_SEG __PPAGE_SEG PAGED_RAM
在RAM的定义区可以加上这样的说明试试:
#pragma DATA_SEG __PPAGE_SEG PAGED_RAM
这个我已经在定义变量的.c和声明变量的.h里都加过了
呵呵,
是 #pragma DATA_SEG __PPAGE_SEG PAGED_RAM还是
#pragma DATA_SEG __RPAGE_SEG PAGED_RAM呢?好像应该是后者吧?
不知道为什么一直赋值给paged ram的值都不行。
如果将变量强制转换:例如:
unsigned int AN00_Data;
*((unsigned int *__far)(&AN00_Data)) = ATD0DR6;
这样是可以的
但是如果变量是数组,这样强制转换也不行了。。。。。。
不知道为什么?
[em04]欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |