Board logo

标题: 还是关于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