;*********************************
;入口
;DPH FM25040中的地址
;DPL 单片机中的地址
;R2 发送或接收的数据字节数
WREN: CLR CS
MOV A,#006H ;FM写使能
LCALL RLMOVE
SETB CS
RET
RLMOVE: MOV R1,#08H ;单字节数据写入
RLMOVE1:CLR C
RLC A
MOV SI,C
SETB SCK
NOP
CLR SCK
DJNZ R1,RLMOVE1
RET
READ25040:CLR CS
MOV A,#03H ;读FM内存单字节
LCALL RLMOVE
MOV A,DPH
LCALL RLMOVE
LCALL RRMOVE
SETB CS
RET
RRMOVE: ;读单字节
MOV @R0,#00H
MOV R1,#08H
RRMOVE1:SETB SCK ;
MOV A,@R0
RRMOVEA:JB SO,RRMOVE2
CLR C
JMP RRMOVE3
RRMOVE2:SETB C
RRMOVE3:RLC A
MOV @R0,A
CLR SCK ;
DJNZ R1,RRMOVE1
RET
READFM: MOV R0,DPL
READFM1CALL WREN ;读FM内存多字节
LCALL READ25040
INC DPH
INC R0
DJNZ R2,READFM1
RET
WRITEFM: MOV R0,DPL
WRITEFM1CALL WREN
LCALL WRITE25040
INC R0
INC DPH
DJNZ R2,WRITEFM1
RET
WRITE25040:CLR CS
MOV A,#02
LCALL RLMOVE
MOV A,DPH
LCALL RLMOVE
MOV A,@R0
LCALL RLMOVE
SETB CS
RET
|