[求助]51读AT45DB081错误
CPU读AT45DB081指定地址一个字节数据,应读出25H,但总读出0FFH,地址确认正确,请各位帮忙看看错在那?
ORG 0000H
LJMP MAIN
MAIN:
;;初始化:;;;
MOV 30H,#68H ;30H--37H 为所要读的字节的地址
MOV 31H,#00H
MOV 32H,#018H
MOV 33H,#08H
MOV 34H,#0
MOV 35H,#0
MOV 36H,#0
MOV 37H,#0
LCALL WRI_ADDRESS ;WRI_ADDRESS :写地址
LCALL READ ;读这个地址的数据
RET
;读子程序
READ: MOV R0,#8
RN: SETB SCK ;2TM
CLR SCK ;2TM
MOV C,SO ;2TM
RLC A ;1TM
DJNZ R0,RN
RET
;写地址子程序
WRI_ADDRESS:
MOV R1,#30H
MOV R2,#08H
REA: MOV A,@R1
INC R1
LCALL WRBYT ;WRITE A BYTE TO AT45DB081
DJNZ R2,REA
RET
;********************************
;向AT45DB081写一个字节
;********************************
WRBYT: CLR SCK
CLR CS
NOP
NOP
MOV BIT8,#8
WDA0: RLC A
JC WDA1
CLR SI
LJMP WDA2
WDA1: SETB SI
NOP
NOP
WDA2:
SETB SCK
CLR SCK
DJNZ BIT8,WDA0
RET
END
发表时间:2003年6月5日16:32:40