📄 exam.asm
字号:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV P0, #0FFH
MOV P1, #0FFH
MOV P2, #0FFH
MOV P3, #0FFH
LCALL ERBLOCK
LCALL WRITE8
LCALL READ8;
MOV P3, #0FFH
;LCALL ERBLOCK
AJMP $
ERBLOCK:
MOV R5,#60H
LCALL WRITECOM
NOP
MOV R5,#00H
LCALL WRITEADD
MOV R5,#00H
LCALL WRITEADD
LCALL WAITONE
NOP
MOV R5, #0D0H
LCALL WRITECOM
LCALL WAITONE
ERBUSY:
MOV A, P2
JNB ACC.3, ERBUSY
NOP
MOV R5, #70H
LCALL WRITECOM
NOP
ERERR:
LCALL READDATA
MOV A, R6
JNB ACC.0, SUCCESS
SETB F0
SUCCESS:
NOP
RET
WRITE8:
MOV R5,#80H ;Seauential Data Input
LCALL WRITECOM
MOV R5,#00H ;A0--A7
LCALL WRITEADD
MOV R5,#00H ;A8--A15
LCALL WRITEADD
MOV R5,#00H ;A16-A20
LCALL WRITEADD
LCALL WAITONE
MOV R1, #84H
MOV 30H,#0AH
SENDDAT:
MOV R6,30H
LCALL WRITEDAT
INC 30H;
DJNZ R1,SENDDAT
LCALL WAITONE
MOV R5,#10H ;Page Program
LCALL WRITECOM
MOV R5,#70H ;Read Status
LCALL WRITECOM
;LCALL READDATA
;MOV P2,#0FFH
WBUSY:
MOV A,P2
JNB ACC.3, WBUSY
NOP
MOV P0,#0FFH
ERR6:
LCALL READDATA
MOV A,R6
JNB ACC.6,ERR6
RET
READ8:
MOV R5,#00H ;Seauential Data Input
LCALL WRITECOM
MOV R5,#00H ;A0--A7
LCALL WRITEADD
MOV R5,#00H ;A8--A15
LCALL WRITEADD
MOV R5,#00H ;A16-A20
LCALL WRITEADD
LCALL WAITONE
MOV R2, #084H
MOV R1,#30H
READLOOP:
LCALL READDATA
MOV A,R6;
MOV @R1,A
INC R1;
DJNZ R2,READLOOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;WRITECOM;;;;;;;;(FLASH)
;;;;;;;//将命令字(存放在R5中)写入FLASH
WRITECOM: ;INPUT R5
NOP
MOV P2,#0AFH
;CLR P3.6
;SETB P3.7
SETB P3.6
CLR P3.7
MOV P0,R5
;SETB P3.6
NOP
CLR P3.6
NOP
RET
;WRITEADD;;;;;;;;(FLASH)
;;;;;;;//将地址(存放在R5中)写入FLASH
WRITEADD:;INPUT R5
MOV P2,#6FH
NOP
;CLR P3.6
;SETB P3.7
SETB P3.6
NOP
CLR P3.7
NOP
MOV P0,R5
NOP
;SETB P3.6
CLR P3.6
NOP
RET
;WRITEDAT;;;;;;;;(FLASH)
;;;;;;;//将数据(存放在R6中)写入FLASH
WRITEDAT:;INPUT R6
MOV P2,#2FH
NOP
;CLR P3.6
;SETB P3.7
SETB P3.6
NOP
CLR P3.7
NOP
MOV P0,R6
NOP
;SETB P3.6
CLR P3.6
NOP
RET
;READDATA;;;;;;;;(FLASH)
;;;;;;;//将数据读出FLASH,存放在R6中
READDATA:;OUTPUT R6
MOV P2, #2FH
NOP
;SETB P3.6
;SETB P3.7
CLR P3.6
NOP
CLR P3.7
NOP
READBUSY:
MOV A,P2;BUSY
JNB ACC.3, READBUSY
MOV P0,#0FFH
NOP
;CLR P3.7
SETB P3.7
NOP
MOV A, P0
MOV R6,A
NOP
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;WAITONE;;;;;;;;
;;;;;;;//延时1ms
WAITONE:
;3Eh,3Fh protect sence
MOV 3EH, R3
MOV 3FH, R4
MOV R4,#05H ;Delay used r3,r4
WLOOP:MOV R3,#0FFH
DJNZ R3,$
DJNZ R4,WLOOP
MOV R3, 3EH
MOV R4, 3FH
RET
WAITTWO:
LCALL WAITONE
LCALL WAITONE
ret
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -