若使用如下程序对DSl302的RAM1其内容为5AH进行读操作
 READ:MOVA#11000101B;RAM1单元的读地址。
 LCAllDS_READ;调用读子程序。
 则程序执行后A中的数据为2DH,显然读出的数据不正确。若再使用一条RLA指令调整后,则A中为5AH,结果才正确。由此说明:使用上述程序读出的RAM1单元中的第0位数据实为第1位数据,读出的第7位数据实为第0位数据。
 经笔者仔细研究时序图和多次试验得知,问题的原因在于:对于读操作时序,在SCLK出现第8个正脉冲时,上升沿输入地址字节的最后一位数据,而在此正脉冲的下降沿就要输出数据字节的第0位数据。然而笔者的程序中是在第9个正脉冲的下降沿才误认为输出了数据字节的第0位数据,此位数据事实上是第二个下降沿输出的,故实为数据字节的第1位数据。经笔者实验:只要RST保持为高电平,如果超过8个下降沿,它们将重新从第0位输出数据位,因程序中输出的最后一位数据位,是9个下降沿输出的数据位,故实为数据字节的第0位数据位。
 由此可见
 DS_RSUBl:SETBP1.0;为读数据作准备
 MOVR7,#08
~~~~~~~~~~~~~~~~~~~~~~~~~
庚宝生日快乐!
最近越来越觉得对偶像的爱是要分享滴,
有意者欢迎来我的CY小窝坐坐:
http://www.cyworld.com.cn/shuabaocaicaizi