W77E58内部有1K的XRAM,DataSheet上说是从地址0000-03ff。当使能内部XRAM的时候,如果访问的地址超过了03ff,则自动访问外部RAM空间。
我现在1K RAM正好够用,但是我还要控制外部的一些器件,所以就把它们定义到高地址空间去了,我的这个应用要从内部RAM中读一些数(几十个字节),然后把它输出到外部器件的寄存器中,由于对时间要求比较严格,所以我想采用一些方法来减少搬运每个字节所需的周期。 现在的问题就是,W77E58所谓的双DPTR其实是个假的,如果我每次切换DPTR,则需要多花4个周期,并且INC DPTR也需要两个周期,而如果我用一个R0来作为另一个数据指针,采用 MOVX A,@DPTR INC DPTR
MOVX @R0,A INC R0 的指令的话,就可以比采用切换DPTR的方式少用5个周期,速度提高40%,刚刚可以满足时间要求。
但是现在的问题就是,普通的51采用MOVX @R0 ,A这种方式,高地址是由P2决定的,可是在这里,由于我使能了内部RAM,那么此时这种方式访问的是哪一段内存呢?(事先设置了P2的情况下) 到底是访问内部RAM,还是访问外部RAM,或是根据P2的值来切换呢? (对于我来说后两种情况都可以) DataSheet上没有明确的说明,希望知道的高人指点一下。 |