打印

关于AT45DB081的问题

[复制链接]
1780|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zylou|  楼主 | 2008-5-7 14:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用AT45DB081遇到问题,写进去的数据和 读出来的不一样啊,谁帮我 解决一下呀,看 下是不是 程序有问题
代码如下:

P1.4--CS       P1.5--MISO    P1.6--MOSI   P1.7--SCK

 ORG 0000H
   LJMP MAIN
ORG 0030H
  MAIN:
   MOV SP,#5FH
   CLR EA             ;所有中断关 


MOV R0,#84H                     ;写BUFFER1命令
LCALL BYTE_WRITE
MOV R0,#00H
LCALL BYTE_WRITE
MOV R0,#00H
LCALL BYTE_WRITE
MOV R0,#00H
LCALL BYTE_WRITE
MOV R0,#66H             ;向BUFFER1中写如66H
LCALL BYTE_WRITE

SETB P1.4               ;片选

MOV R0,#0D4H                     ;读BUFFER1命令
LCALL BYTE_WRITE
MOV R0,#00H
LCALL BYTE_WRITE
MOV R0,#00H
LCALL BYTE_WRITE
MOV R0,#00H
LCALL BYTE_WRITE

LCALL BYTE_READ                ;读一BYTE

M0:
MOV P1,R0
MOV P2,R0
AJMP M0



BYTE_WRITE:         ;向MEMORY中写入一个字节的数据,要写入的数放在R0中
SETB  P1.7             ;1.7(时钟)输出为1
CLR    P1.4            ;片选
MOV   R1,#08H          ;置循环次数
MOV   A,R0             ;输出的数据在R0中
BYTE_OUT:
CLR  P1.7              ;1.7(时钟)输出0
NOP                   
NOP
RLC  A                 ;左移一位(先输出高位)
MOV   P1.6,C         
SETB   P1.7            
DJNZ   R1,BYTE_OUT

RET                     ;注意:片选信号并没有在此程序中拉高


BYTE_READ:            ;从MEMORY中读取一个字节的数据,并将这个数据放在R0中
SETB  P1.7            ;1.7(时钟)输出为1
CLR  P1.4             ;片选
MOV  R1,#08H         ;置循环次数
BYTE_IN: 
CLR    P1.7           ;1.7(时钟)输出0
NOP                       
NOP
MOV  C,P1.5            
RLC  A                ;左移一位(先输出高位)
SETB   P1.7               
DJNZ   R1,BYTE_IN          
MOV   R0,A            
SETB P1.7
RET                   ;注意:片选信号并没有在此程序中拉高

相关帖子

沙发
yellow_fox| | 2008-5-7 17:58 | 只看该作者

Hmm.....

我用过45D041,是IC卡形式的,现在早就停产了,买都买不到,艾。

现在在卖的都是45DB041,是低电压系列的,放在5V的系统中根本就不能用,

读写经常出错。

不知道LZ是不是这样的问题。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

16

帖子

0

粉丝