标题: 还是关于CW访问外设的问题 [打印本页]
作者: raina2006 时间: 2006-8-8 09:07 标题: 还是关于CW访问外设的问题
根据版主的建议修改定义如下:
#pragma DATA_SEG EXT_SEGMENT
UINT8 EXT_SEG00;
UINT8 EXT_SEG01;
#pragma DATA_SEG DEFAULT
引用时定义指针和临时变量如下:
UINT8 temp;
UNIT8 *pt1;
pt1=&EXT_SEG00;
temp=*pt1;
编译后果然没有错了,可是执行时,并没有自动把PAGE(应该是0x0F)置上,以访问0X0F8000地址的外设,而是直接访问了0x8000,所有没有正确地返回。
请问这个问题应该怎么解决?应该如何访问扩展地址的外设?
谢谢!
作者: strongchen 时间: 2006-8-8 10:00
前面已经说过,执行pt1=&EXT_SEG00指令时,pt1已经变成了一个16位的数据,而高位地址的信息就丢失了。
可以这样修改,将数据申明改为:
#pragma DATA_SEG __PPAGE_SEG EXT_SEGMENT
char EXT_SEG00;
char EXT_SEG01;
对数据的操作:
int temp;
temp = EXT_SEG00;
另外,可以在Target Settings Panels,选Compiler for HC12的Options,在Code Generation里勾上PPAGE Regiseter is used for paging,然后在下面的参数栏里填上RUNTIME。这个不做也可以。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |