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

📄 bad_block.inc

📁 U盘原代码,包括FAT16和USB的所有东东都是开放的,请认真看呀.
💻 INC
📖 第 1 页 / 共 2 页
字号:
			mov		a,#0x55
			CALL	FlashWriteData
			mov		a,#0xaa
			CALL	FlashWriteData
			mov		a,#0x55
			CALL	FlashWriteData
			bank	2			
			mov		a,tableaddressrow3
			CALL	FlashWriteData
			mov		a,tableaddressrow2
			CALL	FlashWriteData
			mov		a,tableaddressrow1
			and		a,#0xc0
			CALL	FlashWriteData
			call	FlashPageProgramWriteDataOK
			ret
			
searchnextblockfortable:
			bank	2
			mov		a,#0x40
			sub		tableaddressrow1,a
			jbs		stts,c,checknextblockforbbitable
			dec		tableaddressrow2
			jbs		stts,c,checknextblockforbbitable
			dec		tableaddressrow3
			jmp		checknextblockforbbitable
;=================================================================			
create_bbi_table:
			mov		a,#0x00
			mov		ROW_ADD_write3,a
			mov		a,#0x00
			mov		ROW_ADD_write2,a
			mov		a,#0x00
			mov		ROW_ADD_write1,a	
			clr		COL_ADD_write1				
			clr		COL_ADD_write2	
		bank	2
			MOV		A,#0X00
			JBC		bank2_check_flag,is_128_or_256,$+3
			mov		a,tableaddressrow3
			mov		fatendaddressrow3,a
			mov		a,tableaddressrow2
			mov		fatendaddressrow2,a
			mov		a,tableaddressrow1
			mov		fatendaddressrow1,a
			mov		a,tableaddresscol1
			mov		fatendaddresscol1,a
			mov		a,tableaddresscol2
			mov		fatendaddresscol2,a
			clr		bbitablestatus
goontablecreating:			
			bank	0
			call	LOAD_WADDR
			call	blocktest55h
			jbc		stts,z,findablocktoreplacethisbadblock
			call	LOAD_WADDR
			call	blocktestAAh
			jbc		stts,z,findablocktoreplacethisbadblock
			call	load_bbi_table_address
			call	FlashPageProgramWriteAddress
			mov		a,ROW_ADD_write2
			call	flashwritedata
			mov		a,row_add_write3
			and		a,#0x01
			mov		temp0,a
			mov		a,row_add_write1
			and		a,#0xc0
			xor		a,temp0
			call	flashwritedata
			call	FlashPageProgramWriteDataOK
			mov		a,#2
			call	bbi_table_address_check
nextblockaddresscheck:
			mov		a,#64
			call	PAGE_ADDR_CHK_WRITE
			
			bank	2
			jbs		bbitablestatus,swapareatabletag,swapareablockaddressendcheck
			
			mov		a,row_add_write3
			xor		a,fatendaddressrow3
			jbc		stts,z,goontablecreating
			mov		a,row_add_write2
			xor		a,fatendaddressrow2
			jbc		stts,z,goontablecreating
			mov		a,row_add_write1
			xor		a,fatendaddressrow1
			jbc		stts,z,goontablecreating
			mov		a,#0x01
			mov		row_add_write3,a
			mov		a,#0xfc
			mov		row_add_write2,a
			mov		a,#0x00
			mov		row_add_write1,a
			clr		col_add_write1
			clr		col_add_write2
			
			mov		a,#0xe0
			mov		tableaddresscol1,a
			mov		a,#0x07
			mov		tableaddresscol2,a
			bs		tableaddressrow1,0
			bs		bbitablestatus,swapareatabletag
			
swapareablockaddressendcheck:
			mov		a,row_add_write3
			jbc		stts,z,goontablecreating
			mov		a,row_add_write2
			jbc		stts,z,goontablecreating
			mov		a,row_add_write1
			and		a,#0xc0
			jbc		stts,z,goontablecreating
			
			bank	2
			mov		a,#0x40
			sub		fatendaddressrow1,a
			jbs		stts,c,exitfatendaddressminuschkforcapacity
			dec		fatendaddressrow2
			jbs		stts,c,exitfatendaddressminuschkforcapacity
			dec		fatendaddressrow3
exitfatendaddressminuschkforcapacity:
			
			call	load_bbi_table_address
			bank	2
			mov		a,flashrowadd1
			and		a,#0xc0
			mov		tableaddressrow1,a
			xor		a,#0x02
			mov		flashrowadd1,a
			mov		a,#0x07
			mov		flashcoladd1,a
			clr		flashcoladd2
			call	FlashPageProgramWriteAddress
			bank	2
			mov		a,fatendaddressrow3
			call	flashwritedata
			mov		a,fatendaddressrow2
			call	flashwritedata
			mov		a,fatendaddressrow1
			or		a,#0x3f
			mov		fatendaddressrow1,a
			call	flashwritedata
			call	FlashPageProgramWriteDataOK
			bank	0
			ret
;====================================================================			
			
findablocktoreplacethisbadblock:
			bank	2
			mov		a,#0x40
			sub		fatendaddressrow1,a
			jbs		stts,c,exitfatendaddressminuschk
			dec		fatendaddressrow2
			jbs		stts,c,exitfatendaddressminuschk
			dec		fatendaddressrow3
exitfatendaddressminuschk:
			
			call	load_fat_end_address
			call	blocktest55h
			jbc		stts,z,findablocktoreplacethisbadblock
			call	load_fat_end_address
			call	blocktestAAh
			jbc		stts,z,findablocktoreplacethisbadblock
			call	load_bbi_table_address
			call	FlashPageProgramWriteAddress
			bank	2
			mov		a,fatendaddressrow2
			call	flashwritedata
			mov		a,fatendaddressrow3
			and		a,#0x01
			mov		temp0,a
			mov		a,fatendaddressrow1
			and		a,#0xc0
			xor		a,temp0
			call	flashwritedata
			call	FlashPageProgramWriteDataOK
			mov		a,#2
			call	bbi_table_address_check
			jmp		nextblockaddresscheck
			
			
			
			
;======================================================================			

INC_SFL_ADDC1:
		INC		FlashColAdd1
INC_SFL_ADDC1_1:
		JBS		STTS,C,INC_SFL_ADDC2
		RET
INC_SFL_ADDC2:
		INC		FlashColAdd2
INC_SFL_ADDC2_1:		
		JBS		FlashColAdd2,3,INC_SFL_ADDR1_1//INC_SFL_ADDR1
		RET
//INC_SFL_ADDR1:
//		CLR		FlashColAdd1
//		CLR		FlashColAdd2
INC_SFL_ADDR1_1:
		BC		FlashColAdd2,3
		INC		FlashRowAdd1
INC_SFL_ADDR1_2:
		JBS		STTS,C,INC_SFL_ADDR2		
		RET		
INC_SFL_ADDR2:
		INC		FlashRowAdd2
INC_SFL_ADDR2_1:		
		JBS		STTS,C,INC_SFL_ADDR3
		RET
INC_SFL_ADDR3:
		INC		FlashRowAdd3
		JBC		FlashRowAdd3,1,$+3
		CLR		FlashRowAdd3
		RET

DEC_SFL_ADDC1:
		DEC		FlashColAdd1
DEC_SFL_ADDC1_1:
		JBC		STTS,C,DEC_SFL_ADDC2
		RET
DEC_SFL_ADDC2:
		ZCHK	FlashColAdd2
		JBS		STATUS,Z,DEC_SFL_ADDR1
		DEC		FlashColAdd2		
		RET
DEC_SFL_ADDR1:
		MOV		A,#0X0E
		MOV		FlashColAdd2,A
DEC_SFL_ADDR1_2:
		DEC		FlashRowAdd1
DEC_SFL_ADDR1_1:
		JBC		STTS,C,DEC_SFL_ADDR2		
		RET		
DEC_SFL_ADDR2:
		DEC		FlashRowAdd2		
		JBC		STTS,C,DEC_SFL_ADDR3
		RET
DEC_SFL_ADDR3:
		ZCHK	FlashRowAdd3
		JBS		STATUS,Z,$+3
		DEC		FlashRowAdd3
		RET
			
INC_SOURCE_ADD_1:
		INC		SOURCE_ADD_1
INC_SOURCE_ADD:
		JBS		STTS,C,INC_SOURCE_ADD_2		
		RET		
INC_SOURCE_ADD_2:
		INC		SOURCE_ADD_2
		JBS		STTS,C,INC_SOURCE_ADD_3
		RET
INC_SOURCE_ADD_3:
		INC		SOURCE_ADD_3
		JBC		SOURCE_ADD_3,1,$+3
		CLR		SOURCE_ADD_3
		RET	
		
INC_OBJECT_ADD_1:
		INC		OBJECT_ADD_1
INC_OBJECT_ADD:
		JBS		STTS,C,INC_OBJECT_ADD_2		
		RET		
INC_OBJECT_ADD_2:
		INC		OBJECT_ADD_2
		JBS		STTS,C,INC_OBJECT_ADD_3
		RET
INC_OBJECT_ADD_3:
		INC		OBJECT_ADD_3
		JBC		OBJECT_ADD_3,1,$+3
		CLR		OBJECT_ADD_3
		RET	

DEC_fatendaddressrow1:
		bank	2
		mov		a,fatendaddressrow1
		mov		temp2,a
		mov		a,fatendaddressrow2
		mov		temp3,a
		mov		a,fatendaddressrow3
		mov		temp4,a
		
		bank	0
		ret
DEC_fatendaddressrow1_1:
		JBC		STTS,C,DEC_fatendaddressrow2
		mov		temp2,a		
		RET		
DEC_fatendaddressrow2:
		mov		temp2,a
		
		DEC		temp3//fatendaddressrow2		
		JBC		STTS,C,DEC_fatendaddressrow3
		RET
DEC_fatendaddressrow3:
		
		ZCHK	temp4//fatendaddressrow3
		JBS		STATUS,Z,DEC_fatendaddressrow3_1
		dec		temp4
DEC_fatendaddressrow3_1:
		RET
		
		
//=============================================
SAVE_page_copy1:
	BANK	2
		MOV		A,FlashRowAdd3
		MOV		page_copy1_row3,A
		MOV		A,FlashRowAdd2
		MOV		page_copy1_row2,A
		MOV		A,FlashRowAdd1
		MOV		page_copy1_row1,A
	BANK	0
		RET		
		
SAVE_page_copy2:
	BANK	2
		MOV		A,FlashRowAdd3
		MOV		page_copy2_row3,A
		MOV		A,FlashRowAdd2
		MOV		page_copy2_row2,A
		MOV		A,FlashRowAdd1
		MOV		page_copy2_row1,A
	BANK	0
		RET		

LOAD_page_copy1:
	BANK	2
		MOV		A,page_copy1_row3
		MOV		FlashRowAdd3,A
		MOV		A,page_copy1_row2
		MOV		FlashRowAdd2,A
		MOV		A,page_copy1_row1
		MOV		FlashRowAdd1,A
	BANK	0
		RET
		
LOAD_page_copy2:
	BANK	2
		MOV		A,page_copy2_row3
		MOV		FlashRowAdd3,A
		MOV		A,page_copy2_row2
		MOV		FlashRowAdd2,A
		MOV		A,page_copy2_row1
		MOV		FlashRowAdd1,A
	BANK	0
		RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -