|
很多人碰到仿真 m8 出现 PC=0020 is outside of ROM space 的错误。我调试了一下,发现下面简单的代码就会产生这个错误:
static unsigned byte[] font={0x1,0x2,0x3,0x4};
void main()
{
unsigned int number;
number = 0;
test( number );
}
void test( unsigned int num )
{
PORTD = font[num%4];
}
但是如果将 test() 写成:
void test( unsigned int num )
{
unsigned char i = 2;
PORTD = font;
}
这个错误就不会出现。
看来是 Proteus 的一个 bug。根据资料, 代码区 0020 是寄存器的地址。可能 m8 仿真在操作数为变量访问数组时,一些特殊情况下会导致指针指到 0020 处。
不知有没有朋友解决了这个问题请跟帖说一下解决办法。谢谢。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|