呵呵,不好意思,是我keil编译时把它设置成variables in pdata模式了。后来看了看我的51 mini仿真器,好像有集成外置ram的。但板上没有外置ram,就出错了。
其实我上面提问的程序是精简化了的。我要用的程序的功能不是这么简单的,data区占了180多B,超出S52的128B,一开始就是在默认的variables in data模式编译不过,切换成pdata才编译通过。想不到仿真和真机的这个区别导致我以为是定时器这部分出问题。现在看来我要把一些函数里的变量变成公共变量才能在S52上运行了。