設(shè)置寫使能鎖存器
----------------------------
WREN: CLR SCK
CLR CS
MOV A,#COMMAND
LCALL OUT
CLR SCK
SETB CS
RET
----------------------------
復(fù)位寫使能鎖存器
----------------------------
WRDI: CLR SCK
CLR CS
MOV A,#COMMAND
LCALL OUT
CLR SCK
SETB CS
RET
----------------------------
寫狀態(tài)寄存器
----------------------------
WRSR: CLR SCK
CLR CS
MOV A,#COMMAND
LCALL OUT
CLR SCK
SETB CS
LCALL POLL
RET
----------------------------
讀狀態(tài)寄存器
----------------------------
RDSR: CLR SCK
CLR CS
MOV A,#COMMAND
LCALL OUT
LCALL IN
CLR SCK
SETB CS
RET
----------------------------
字節(jié)寫
----------------------------
WRITE: MOV DPTR,#ADDR
CLR SCK
CLR CS
MOV A,#COMMAND
MOV B,DPH
MOV C,B.0
MOV ACC.3,C
LCALL OUT
MOV A,DPL
LCALL OUT
MOV A,#BYTE_DATA
LCALL OUT
CLR SCK
SETB CS
LCALL POLL
RET
----------------------------
字節(jié)讀
----------------------------
READ: MOV DPTR,#ADDR
CLR SCK
CLR CS
MOV A,#COMMAND
MOV B,DPH
MOV C,B.0
MOV ACC.3,C
LCALL OUT
MOV A,DPL
LCALL OUT
LCALL IN
CLR SCK
SETB CS
RET
----------------------------
復(fù)位看門狗
----------------------------
DOG: CLR CS
SETB CS
RET
----------------------------
寫檢查
----------------------------
POLL: MOV R1,#MAX_POLL
POLL1: LCALL RDSR
JNB ACC.0,POLL2
DJNZ R1,POLL1
POLL2: RET
----------------------------
傳送單字節(jié)
----------------------------
OUT: MOV R0,#08H
OUT1: CLR SCK
RLC A
MOV SI,C
SETB SCK
DJNZ R0,OUT1
CLR SI
RET
----------------------------
接收單字節(jié)
----------------------------
IN: MOV R0,#08H
IN1: SETB SCK
CLR SCK
MOV C,SO
RLC A
DJNZ R0,IN1
RET