Board logo

标题: 使用CodeWarrior学习和调试一个例程时的一些令我不解的问题。 [打印本页]

作者: jjs008    时间: 2005-3-27 21:13     标题: 使用CodeWarrior学习和调试一个例程时的一些令我不解的问题。

//main.c文件 #include /* for EnableInterrupts macro */ #include #pragma DATA_SEG BUFFER unsigned char near VarA = 0x02; /* DEFAULT_RAM必须要设置在从低8位地址开始,不然会出现L1907的错误。不知道是为什么?VarA只是一个near变量,它的地址范围应该是从0x00-0xff。像程序中的0x02,0xff这些VarA的赋值也只是个变量值而已,看上去把DEFAULT_RAM照前面那样设置就好像0x02,0xff是地址值似的,所以令人不解。(也许是我的理解错误。) */ byte result2; word result3; byte *result4; byte Array[] = {0x01, 0x02, 0x03, 0x04}; #pragma DATA_SEG DEFAULT void function1(void); byte function2(byte); word function3(word); char *function4(byte); void main(void) { EnableInterrupts; /* enable interrupts */ function1(); result2 = function2(0x07); result3 = function3(0x0096); result4 = function4(0x03); for(;;) { __RESET_WATCHDOG(); /* kicks the dog */ } } void function1(void){ VarA = 0xFF; } byte function2(byte input2){ input2++; return input2; } word function3(word input3){ input3 *= 2; return input3; } char *function4(byte input4){ /*不知为什么当我用P&E simulator调试时 “Data:2”窗口显示input 是128而不是我传进去的3。*/ return &Array[input4]; } //P&E_FCS_Linker.prm文件 /* This is a linker parameter file for the GP32 */ NAMES END SEGMENTS Z_RAM = READ_WRITE 0x0040 TO 0x00FE; RAM = READ_WRITE 0x00FF TO 0x023F; ROM = READ_ONLY 0x8000 TO 0xFDFF; END PLACEMENT DEFAULT_ROM INTO ROM; DEFAULT_RAM INTO RAM; _DATA_ZEROPAGE, MY_ZEROPAGE INTO Z_RAM; END STACKSIZE 0x50 VECTOR 0 _Startup
作者: seuafu2005    时间: 2005-3-28 09:54

感觉你的段的定义有些问题,改成这样试试

#pragma DATA_SEG MY_ZEROPAGE
unsigned char near VarA = 0x02;


#pragma Code_SEG DEFAULT_ROM

void function1(void);
byte function2(byte);
word function3(word);
char *function4(byte);
作者: jjs008    时间: 2005-3-29 22:19

seuafu2005,你好!我照那样改了问题依然存在,而且“#pragma Code_SEG DEFAULT_ROM”似乎有点问题。
作者: 流浪远方百合    时间: 2005-3-30 09:56

在存贮空间地说明里面DEFAULT_ROM,好像是read only吧!
作者: seuafu2005    时间: 2005-3-31 10:01

VarA应该没有什么问题了吧?
关于input4的问题,我试了一下你的code,的确有你说的情况存在。在不同的编译环境下面input4显示的值还不相同。不过,function4的返回的值应该是对的,你可以试一下。至于input4为什么没有显示出你输入的那个值,我想可能是仿真软件的bug。我会继续跟踪这个情况,如果有什么消息会告诉你的。
作者: jjs008    时间: 2005-3-31 20:12

谢谢,seuafu2005!




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0