我用飞利浦公司的的P89V51RD2,内部RAM是1K
我在定义一个数组空间时,应该定义为xdata,还是idata?
先谢谢上面这位朋友
可是这1K的RAM是“内部”扩展的啊,而不是外部扩展的啊,外部扩展才定义成xdata把?我定义成idata仿真器通不过,定义成xdata仿真器通过好使(硬件仿真)烧成片子又不好使。这让我把思不得其解
这是费力扑替你着想,把本该你自己外括的ram封进芯片了,你也可以在外面自己再扩,它提供了一个寄存器位控制选择使用内部这1K,还是外面的,但是寻址指令一定都是MOVX,至于烧进芯片有问题要另外查找原因。
片内RAM,当然是IDATA!
片外的XDATA,是用MOVX指令访问的
既然楼上一口咬腚是IDATA,那么试问,1K的IDATA如何访问呢?
肯定是XDATA,IDATA最多只能有256字节,由于MOV @R0指令中的R0是8位的,IDATA那256字节是在51/52的核内,而那1KRAM是在51/52的核外,只是用SOC技术把它们一起封装在P89V51RD2内部,最好还是看看P89V51RD2的datasheet
是XDATA,有一个寄存器来控制MOVX是读片内的还是片外的,具体是哪个寄存器要找相应的数据手册来看。
idata是52单片机有的,52有256字节存储空间,前面128字节是data,后面128字节是idata。