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

📄 flash.asm

📁 基于凌阳GPCE061
💻 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 + -