📄 flash.asm
字号:
.define C_D12CS 0x0100//IOB8
.define C_RB 0x0200//IOB9
.define C_CLE 0x0800//IOB11
.define C_ALE 0x1000//IOB12
.define C_WE 0x2000//IOB13
.define C_RE 0x4000//IOB14
.define C_CE 0x8000//IOB15
M_WriteToFlash: .MACRO
R2&=~C_WE
[P_IOB_Buffer]=R2
R3&=0x00FF
R3|=R1
[P_IOA_Buffer]=R3
R2|=C_WE
[P_IOB_Buffer]=R2
.ENDM
M_ReadFromFlash: .MACRO
R2&=~C_RE
[P_IOB_Buffer]=R2
R1=[P_IOA_Data]
R1=[P_IOA_Data]
R2|=C_RE
[P_IOB_Buffer]=R2
.ENDM
M_ReadRB: .MACRO
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
L_WaitRB#:
R1=[P_IOB_Data]
R1&=C_RB
JZ L_WaitRB#
.ENDM
.PUBLIC _R_TESTBuffer
.IRAM
_R_TESTBuffer: .DW 1056 DUP(?)
R_RowAddr1: .DW 0
R_RowAddr2: .DW 0
R_ColAddr0: .DW 0
R_RDCount0: .DW 0
R_BufPoint: .DW 0
.include spce.inc
.code
.PUBLIC _SP_Flash_Initial;
.PUBLIC _SP_Flash_ReadBuffer;
.PUBLIC _SP_Flash_WritePage;
.PUBLIC _SP_Flash_EraseBlock;
.PUBLIC _SP_Flash_ReadType;
.PUBLIC _SP_ClearWatchDog;
.PUBLIC _SP_Flash_ReadStatus
_SP_Flash_Initial:
R1=C_D12CS+C_ALE+C_WE+C_RE+C_CE
[P_IOB_Attrib]=R1
[P_IOB_Dir]=R1
R1=C_D12CS+C_CE+C_RE+C_WE+C_RB
[P_IOB_Data]=R1
R1=0xFF00
[P_IOA_Attrib]=R1
[P_IOA_Dir]=R1
[P_IOA_Data]=R1
R1=0X08
[P_SystemClock]=R1
RETF
_SP_Flash_EraseBlock:
PUSH BP,BP TO [SP]
BP = SP
PUSH R1,R4 TO [SP]
R1=[BP+4]
R2=[BP+5]
CALL F_SetAddress
[R_RowAddr2]=R3
R2&=0xFFC0
[R_RowAddr1]=R2
R2=[P_IOB_Buffer]
R3=[P_IOA_Buffer]
R2&=~C_CE
[P_IOB_Buffer]=R2 //CE=0
R2|=C_CLE
[P_IOB_Buffer]=R2
R1=0x6000
M_WriteToFlash//Write Byte 00H
R2&=~C_CLE
[P_IOB_Buffer]=R2
R2|=C_ALE
[P_IOB_Buffer]=R2
R1=[R_RowAddr1]
R1=R1 LSL 4
R1=R1 LSL 4
R1&=0xFF00
M_WriteToFlash//Write row addr1
R1=[R_RowAddr1]
R1&=0xFF00
M_WriteToFlash//Write row addr2
R1=[R_RowAddr2]
R1&=0xFF00
M_WriteToFlash//Write row addr3
R2&=~C_ALE
[P_IOB_Buffer]=R2
R2|=C_CLE
[P_IOB_Buffer]=R2
R1=0xD000
M_WriteToFlash//Write Byte 10H
R2&=~C_CLE
[P_IOB_Buffer]=R2
// M_ReadRB
R2|=C_CE
[P_IOB_Buffer]=R2
POP R1,R4 FROM [SP]
POP BP,BP FROM [SP]
RETF
//-------------------------------------------------------------------------//
// Function Name : _SP_Flash_WritePage
// Input : R_Address,R_BufPoint
// OutPut : R_BufPoint
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -