⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exam.asm

📁 三星公司K9F1608芯片驱动程序
💻 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 + -