51单片机的rd输出的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 03:28:36
问题描述如下:
stc89le516rd+,外扩了一个16m的flash,我想往flash里写数据,发现写的数据读出来不对,检查后发现,当我读flash时,也就是执行movx a,@dptr时,应该有RD低信号,这样才能正确读出,可是单片机无论如何也没有rd信号,已经排除硬件的连线问题,可以正常写,也就是说有wr的低信号,但是无法验证写的数据是否正确,有没有哪位高手曾经解决过类似问题,请指教一下,谢谢了
您好,使用movx指令,应该都是指的是外部地址
现在的情况时,我用汇编,写的一小段简单程序
#pragma asm
mov dpl, 0x00
mov dph, 0x00
movx A, @dptr
#pragma endasm
只执行这段程序时,rd有信号。
当我改成c 程序
unsigned char flash_rd(unsigned char xdata *addr)
{
return *addr;
}
时,调用这个子程序,rd就没有信号,您看看我的程序问题还是别的问题,我看过编译后的汇编,没有问题
从汇编上看都是对的。
谢谢

附:内部xram的问题我考虑进去了,我已经把xram给禁止了。

是不是你读的地址不对。
stc89le516rd内部有XRAM,如果你读的地址在内部的XRAM范围内,RD上不会有信号
你那种写法,可能是被优化处理了。
建议你用XBYTE[]来读写外部设备寄存器