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

📄 bad_block.inc

📁 U盘原代码,包括FAT16和USB的所有东东都是开放的,请认真看呀.
💻 INC
📖 第 1 页 / 共 2 页
字号:
;==================================================================			
searchbbitable:
			bank	2
			mov		a,#0x01
			mov		tableaddressrow3,a
			mov		a,#0xfb
			mov		tableaddressrow2,a
			mov		a,#0xc2
			mov		tableaddressrow1,a
			clr		tableaddresscol1
			clr		tableaddresscol2
find55aa55aataginnextblock:
			call	load_bbi_table_address
			/*
		BANK	2	
			clr		bank2_temp
find55aa55aataginnextblock_jfkdsafrh3:					
			inc		bank2_temp
			jbs		KEY_VOL,VOL_INC_KEY,find55aa55aataginnextblock_AA//$+3//===================
			CALL	DELAY_1ms
			JBS		KEY_SW,MODE_KEY,find55aa55aataginnextblock_AA
			call	Delay30mS		
			jbc		bank2_temp,5,find55aa55aataginnextblock_jfkdsafrh3
			call	FlashBlockErase2G
			*/
find55aa55aataginnextblock_AA:
			call	FlashContinueReadWriteAddress2G
			bank	2
			call	flashreaddata
			xor		a,#0xaa
			jbc		stts,z,needtocreateatable
			call	flashreaddata
			xor		a,#0x55
			jbc		stts,z,needtocreateatable
			call	flashreaddata
			xor		a,#0xaa
			jbc		stts,z,needtocreateatable
			call	flashreaddata
			xor		a,#0x55
			jbc		stts,z,needtocreateatable
			call	flashreaddata
			mov		tableaddressrow3,a
			call	flashreaddata
			mov		tableaddressrow2,a
			call	flashreaddata
			mov		tableaddressrow1,a
			
			call	flashreaddata
			mov		fatendaddressrow3,a
			call	flashreaddata
			mov		fatendaddressrow2,a
			xor		a,#0xff
			jbs		stts,z,needtocreateatable
			call	flashreaddata
			mov		fatendaddressrow1,a
			xor		a,#0xff
			jbs		stts,z,needtocreateatable
			BC		STATUS,C
			ret
			
needtocreateatable:
		bank	2
			mov		a,#0x40
			sub		tableaddressrow1,a
			jbs		stts,c,finishnextblockaddress
			dec		tableaddressrow2
			jbs		stts,c,finishnextblockaddress
			dec		tableaddressrow3
finishnextblockaddress:
		//BANK	2
		//	JBC		bank2_check_flag,is_128_or_256,finishnextblockaddress_1
			mov		a,tableaddressrow3
			and		a,#0x01
			jbc		stts,z,find55aa55aataginnextblock
finishnextblockaddress_1:
			mov		a,tableaddressrow2
			jbc		stts,z,find55aa55aataginnextblock
			mov		a,tableaddressrow1
			and		a,#0xc0
			jbc		stts,z,find55aa55aataginnextblock
			//call	search_a_good_block_for_creating_table	
			//call	create_bbi_table
			BS		STATUS,C
			ret	
;=================================================================			
address_conversion_according_to_bbitable://=====查表变化地址====
		//ret
			bank	2
			mov		a,flashrowadd1
			mov		addressconversiontemprow1,a
			mov		a,flashcoladd1
			mov		addressconversiontempcol1,a
			mov		a,flashcoladd2
			mov		addressconversiontempcol2,a
			
			rlc		flashrowadd1,#1
			rlc		flashrowadd2,#1
			rlc		flashrowadd3,#1
			
			rlc		flashrowadd1,#1
			rlc		flashrowadd2,#1
			rlc		flashrowadd3,#1
			
			rlc		flashrowadd2,#1
			rlc		flashrowadd3,#1
			
			mov		a,flashrowadd2
			and		a,#0xfe
			mov		flashcoladd1,a
			
			mov		a,flashrowadd3
			and		a,#0x07
			mov		flashcoladd2,a

			
			mov		a,tableaddressrow1
			and		a,#0xc0
			mov		flashrowadd1,a
			jbc		flashrowadd3,3,$+3
			bs		flashrowadd1,0
			
			mov		a,tableaddressrow2
			mov		flashrowadd2,a
			mov		a,tableaddressrow3
			mov		flashrowadd3,a
	;		CALL	FlashReset
			call	FlashContinueReadAddress2G//FlashContinueReadWriteAddress2G
			call	flashreaddata
			mov		flashrowadd2,a
			call	flashreaddata
			mov		temp,a
			and		a,#1
			mov		flashrowadd3,a
			
			mov		a,#0xc0
			and		temp,a
			
			bank	2
			nop
			mov		a,addressconversiontemprow1
			and		a,#0x3f
			xor		a,temp
			mov		flashrowadd1,a
			
			mov		a,addressconversiontempcol1
			mov		flashcoladd1,a
			mov		a,addressconversiontempcol2
			mov		flashcoladd2,a	
			bank	0
			ret
;==========================================================
PAGE_ADDR_CHK_READ_fat:
			ADD		FlashRowAdd1,a
			JBC		STTS,C,exitPAGE_ADDR_CHK_READ_fat
			INC		FlashRowAdd2
			JBC		STTS,C,exitPAGE_ADDR_CHK_READ_fat
			INC		FlashRowAdd3
			jbc		FlashRowAdd3,1,exitPAGE_ADDR_CHK_READ_fat
			clr		FlashRowAdd3
exitPAGE_ADDR_CHK_READ_fat:
			Ret

;============================================================			
blocktest55h:
			clr		temp2
retryeraseagain:				
			call	FlashBlockErase2G
			jbs		temp1,0,FlashblockEraseFailed
			
			mov		a,#3       ///64
			mov		temp3,a			
looptestpage55:
			call	FlashPageProgramWriteAddress
			clr		temp1
			mov		a,#8
			mov		temp2,a
loopwrite55:
			mov		a,#0x55
			CALL	FlashWriteData
			djz		temp1,$+3
			jmp		loopwrite55
			djz		temp2,$+3
			jmp		loopwrite55
			
			call	FlashPageProgramWriteDataOK
			
			
			call	FlashContinueReadWriteAddress2G
			clr		temp1
			mov		a,#8
			mov		temp2,a
loopread55:
			call	flashreaddata
			xor		a,#0x55
			jbc		stts,z,setbadblocktag
			djz		temp1,$+3
			jmp		loopread55
			djz		temp2,$+3
			jmp		loopread55
			
			mov		a,#1
			call	PAGE_ADDR_CHK_read_fat
			djz		temp3,$+3
			jmp		looptestpage55	
			
			bs		stts,z
			ret
			
setbadblocktag:
			bc		stts,z
			ret
			
FlashblockEraseFailed:
			inc		temp2
			jbs		temp2,1,$+3      
			jmp		retryeraseagain
			clr		temp2
			jmp		setbadblocktag
;==================================================================
			
blocktestAAh:
			clr		temp2
retryeraseagainAA:				
			call	FlashBlockErase2G
			jbs		temp1,0,FlashblockEraseFailedAA
			
			mov		a,#3       ///64
			mov		temp3,a			
looptestpageAA:
			call	FlashPageProgramWriteAddress
			clr		temp1
			mov		a,#8
			mov		temp2,a
loopwriteAA:
			mov		a,#0xaa
			CALL	FlashWriteData
			djz		temp1,$+3
			jmp		loopwriteAA
			djz		temp2,$+3
			jmp		loopwriteAA
			
			call	FlashPageProgramWriteDataOK
			
			
			call	FlashContinueReadWriteAddress2G
			clr		temp1
			mov		a,#8
			mov		temp2,a
loopreadAA:
			call	flashreaddata
			xor		a,#0xaa
			jbc		stts,z,setbadblocktagAA
			djz		temp1,$+3
			jmp		loopreadAA
			djz		temp2,$+3
			jmp		loopreadAA
			
			mov		a,#1
			call	PAGE_ADDR_CHK_read_fat
			djz		temp3,$+3
			jmp		looptestpageAA	
			
			bs		stts,z
			ret
			
setbadblocktagAA:
			bc		stts,z
			ret


FlashblockEraseFailedAA:
			inc		temp2
			jbs		temp2,1,$+3      
			jmp		retryeraseagainAA
			clr		temp2
			jmp		setbadblocktagAA
;======================================================
load_bbi_table_address:
			bank	2
			mov		a,tableaddressrow3
			mov		flashrowadd3,a
			mov		a,tableaddressrow2
			mov		flashrowadd2,a
			mov		a,tableaddressrow1
			mov		flashrowadd1,a
			mov		a,tableaddresscol1
			mov		flashcoladd1,a
			mov		a,tableaddresscol2
			mov		flashcoladd2,a
			bank	0
			ret
			
			
bbi_table_address_check:
			bank	2
			add		tableaddresscol1,a
			jbc		stts,c,exit_bbi_table_address_check
			inc		tableaddresscol2
			jbc		tableaddresscol2,3,exit_bbi_table_address_check
			clr		tableaddresscol2
			inc		tableaddressrow1
			jbc		stts,c,exit_bbi_table_address_check
			inc		tableaddressrow2
exit_bbi_table_address_check:	
			bank	0
			ret	
			
load_fat_end_address:
			bank	2
			mov		a,fatendaddressrow3
			mov		flashrowadd3,a
			mov		a,fatendaddressrow2
			mov		flashrowadd2,a
			mov		a,fatendaddressrow1
			mov		flashrowadd1,a
			mov		a,fatendaddresscol1
			mov		flashcoladd1,a
			mov		a,fatendaddresscol2
			mov		flashcoladd2,a
			bank	0
			ret
;==============================================================
search_a_good_block_for_creating_table:
			bank	2
			mov		a,#0x01
			mov		tableaddressrow3,a
			mov		a,#0xfb
			mov		tableaddressrow2,a
			mov		a,#0xc0
			mov		tableaddressrow1,a
			clr		tableaddresscol1
			clr		tableaddresscol2
checknextblockforbbitable:			
			call	load_bbi_table_address
			call	blocktest55h
			jbc		stts,z,searchnextblockfortable
			call	load_bbi_table_address
			call	blocktestAAh
			jbc		stts,z,searchnextblockfortable
			
			call	load_bbi_table_address
			call	FlashBlockErase2G
			mov		a,#0x02
			xor		flashrowadd1,a	
			call	FlashPageProgramWriteAddress
			mov		a,#0xaa
			CALL	FlashWriteData

⌨️ 快捷键说明

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