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

📄 epodmain.asm

📁 U盘原代码,包括FAT16和USB的所有东东都是开放的,请认真看呀.
💻 ASM
字号:
INCLUDE "ET44M210_REG.H"
;INCLUDE "REG_Define.H"    2005-12-18

       ORG  0X0000
       JMP  START     	
       
       ORG	0X0028

       RETI
;;==========================================================
;INCLUDE "DSC_ISR.INC"   	

;INCLUDE	"ET44_USB_LIB.INC"			
;INCLUDE	"ET44_USB_MACRO.INC"
;INCLUDE	"BULK_SETTING.H"
;INCLUDE	"ET83x431_Codec.inc"

///////////////////////////////
Include "u_u_used_reg.h"
INCLUDE "u_u_usb_lib.inc"
INCLUDE "u_u_usb_macro.inc"
INCLUDE "u_u_setting.inc"
		
START:

			Bank 0
			
	
Initial_All:
			
			;JMP		et_music_play
			CALL	Delay30mS
            CALL    IO_INITIAL
            CALL	Delay30mS
            CALL	Delay30mS
		//page	1
			call	read_flash_id
	//	page	0
WAIT_IO_SAVE:
            jbc		KEY_SW,PLAY_STOP_KEY,WAIT_IO_SAVE
            jbc		KEY_SW,NEXT_KEY,WAIT_IO_SAVE
            jbc		KEY_SW,PREV_KEY,WAIT_IO_SAVE
            ;jbc		KEY_SW,MODE_KEY,WAIT_IO_SAVE
            jbc		KEY_VOL,VOL_INC_KEY,WAIT_IO_SAVE
            ;jbc		KEY_VOL,VOL_DEC_KEY,WAIT_IO_SAVE

			//jbs		PF,2,SKIP_hardwave_test
if_e_pod:
			jbs		KEY_SW,MODE_KEY,SKIP_hardwave_test
			jbs		KEY_VOL,VOL_DEC_KEY,SKIP_hardwave_test
			bs		X_POD_E_POD,X_E_POD_change
			jmp		hardwave_test
			//jbc		KEY_M_PS,MODE_KEY,hardwave_test
SKIP_hardwave_test:			

			CALL	searchbbitable
			JBS		STATUS,C,SKIP_hardwave_test
			clr		swapaddl
			clr		swapaddh

		bank	0	
Initial_All_1:			
			MOV		A,#0X01
			MOV		RAMBS1,A
			MOV		A,#GCNTR
			MOV		IAP1,A				
			NOP
			BS		iac1,RESET					
			N_NOP
			bc		GCNTR,PLUG//off usb	
			N_NOP
			bc		iac1,4
			
			mov		a,#0x00	
			mov		ROW_ADD_buffer1,a	
			clr		ROW_ADD_buffer2				
			clr		ROW_ADD_buffer3	
			clr		COL_ADD_buffer1				
			clr		COL_ADD_buffer2	
			
			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
			
		;	CALL	CHANGE_TO_XP_MODE
		;	TRAP
		;	CALL	CHACK_BPB_RsvdSecCn
			CLR		a2000_to_xp_flag
			CLR		READY_COUNT
			BANK 0
			

;IF usb ON  			
		//	Jbs		KEY_VOL,VOL_INC_KEY,EASY_KEY_SCAN
			//JBc		PC,3,EASY_KEY_SCAN
			//删除MUSIC快进表
			//CALL	J2A_DIR_ADD_BUF
			//CALL	ERASE_BLOCK
			
		;	JBS		PTC,3,EASY_KEY_SCAN
No_Erase:			
			
			DISI			;USB Mode ? LED Detect hi
							;PC,3 = Hi > USB Mode
			CLR		PRIE
			CLR		INTE
			CLR		INTF
			CLR		BULK_STATE
			_ADD_USB_INITIAL_SUB
			ENI
			BANK 0
		;	jmp		et_music_play
			clr		count3

;======================================================

WAIT_BULK_CONFIG:
			JBc		BULK_STATE,CONFIG,WAIT_BULK_CONFIG
			bc		prie,tcce
			bc		inte,tccoe
			;mov		a,#100
			;clr		tempslp2
			clr		count3					
BULK_CBW:	
	//	CALL	RED_LIGHT_FLASH_LOOP

BULK_CBW_1:
			;JBc		KEY_SW,PLAY_STOP_KEY,et_music_play
			;JBC		KEY_M_PS,MODE_KEY,EASY_KEY_SCAN
			JBC		BULK_STATE,OUT_USB_FIFO_FULL,BULK_CBW
			BC		BULK_STATE,OUT_USB_FIFO_FULL
			BANK	0
			MOV		A,#0xA0
			MOV		IAP0,A
			
			MOV		A,TEMP1
			XOR		A,#31
			JBC		STTS,Z,BULK_CBW		

			_ADD_USB_EP2_WORK_SUB
			
			mov		a,0xa0
			xor		a,#0x55
			jbc		stts,z,bulk_cbw
			mov		a,0xa1
			xor		a,#0x53
			jbc		stts,z,bulk_cbw
			mov		a,0xa2
			xor		a,#0x42
			jbc		stts,z,bulk_cbw
			mov		a,0xa3
			xor		a,#0x43
			jbc		stts,z,bulk_cbw


OTHERS_2A:	MOV		A,0xAF			
			XOR		A,#0x2A
			JBC		STTS,Z,OTHERS_28
			call	WRITE_2A_swap_area
				JMP		BULK_CBW

OTHERS_28:	MOV		A,0xAF			
			XOR		A,#0x28
			JBC		STTS,Z,OTHERS_12
			bc		count3,7
			clr		COL_ADD_buffer1
			clr		COL_ADD_buffer2
			mov		a,0xb2
			mov		ROW_ADD_buffer3,a
			mov		a,0xb3
			mov		ROW_ADD_buffer2,a
			mov		a,0xb4
			mov		ROW_ADD_buffer1,a
			
			mov		a,0xb7			// to be improved
			mov		read_block_NO,a
			
loop_read_block_NO:			
			CALL	READ10_28H
			djz		read_block_NO,loop_read_block_NO_exit
			jmp		loop_read_block_NO
loop_read_block_NO_exit:

		CALL	READ10_28H_csw
		;	jbc		count3,7,BULK_CBW
		;	call	delay180ms
		;	clr		count3
		;	jmp		start
		;trap
			JMP		BULK_CBW
OTHERS_12:
			MOV		A,0xAF
			XOR		A,#0x12
			JBC		STTS,Z,OTHERS_23
			BC		a2000_to_xp_flag,READY_FLAG
			CALL	INQUIRY
			JMP		BULK_CBW

OTHERS_23:	MOV		A,0xAF
			XOR		A,#0x23
			JBC		STTS,Z,OTHERS_03
			BC		a2000_to_xp_flag,READY_FLAG
			call	READ_FORMAT_CAPACITY
			JMP		BULK_CBW
			
OTHERS_03:	MOV		A,0xAF
			XOR		A,#0x03
			JBC		STTS,Z,OTHERS_25
			BC		a2000_to_xp_flag,READY_FLAG
			CALL	REQUEST_SENSE
			JMP		BULK_CBW

OTHERS_25:	MOV		A,0xAF
			XOR		A,#0x25
			JBC		STTS,Z,OTHERS_00
			BC		a2000_to_xp_flag,READY_FLAG
			CALL	READ_CAPACITY
			JMP		BULK_CBW
			
OTHERS_00:	MOV		A,0xAF
			XOR		A,#0x00
			JBC		STTS,Z,OTHERS_1A
			CALL	TEST_UNIT_READY
			
			//u-disk 空闲标志
			/*
			JBC		a2000_to_xp_flag,READY_FLAG,OTHERS_00_1
			
			INC		READY_COUNT
			MOV		A,#0X06
			XOR		A,READY_COUNT
			JBC		STATUS,Z,BULK_CBW
			bs		a2000_to_xp_flag,in_the_TEST_UNIT_READY
OTHERS_00_1:
			BS		a2000_to_xp_flag,READY_FLAG
			CLR		READY_COUNT
			*/
			JMP		BULK_CBW
			
OTHERS_1A:	
			MOV		A,0xAF			
			XOR		A,#0x1A
			JBC		STTS,Z,OTHERS_04
			BC		a2000_to_xp_flag,READY_FLAG
			CALL	MODE_SENSE_1A
			JMP		BULK_CBW	

OTHERS_04:	MOV		A,0xAF			
			XOR		A,#0x04
			JBC		STTS,Z,OTHERS_2F
			BC		a2000_to_xp_flag,READY_FLAG
			CALL	FORMAT_UNIT_04
			JMP		BULK_CBW
				

OTHERS_2F:	MOV		A,0xAF			
			XOR		A,#0x2F
			JBC		STTS,Z,OTHERS_1E
			BC		a2000_to_xp_flag,READY_FLAG
			CALL	TEST_UNIT_READY
			JMP		BULK_CBW

OTHERS_1E:	MOV		A,0xAF			
			XOR		A,#0x1e
			JBC		STTS,Z,BULK_CBW
			BC		a2000_to_xp_flag,READY_FLAG
			CALL	MEDIA_REMOVAL_CSW
			JMP		BULK_CBW

 JMP	$//et_music_play

//=============硬件测试================
//ET44R210_PASS			0
//NAND FLASH_PASS		1
//ET83X432_PASS			2
//5_KEY_PASS			3
//BAD BLOCK_PASS		4		
//=====================================
hardwave_test:
		//=====ET44R210_TEST======
			CALL	Delay30mS
            CALL    IO_INITIAL
            CALL	Delay30mS
           
            MOV		A,#0X00
            MOV		TEST_COUNT,A
            ;CALL	TEST_LCD_DISPLAY
            
            //JMP		key_test
		//=====ET44R210_PASS====== 
		   //=========TCC============
			BS		HARD_TEST_OR_PLAY_FLAG,1
			CLR		VOL_DEC_KEY_COUNT
			
			CLR		PRIE
			CLR		INTE
			CLR		INTF			
			
;	jmp		BAD_BLOCK_TEST_OK_LCD_DISPLAY
			//========================         
		//====NAND FLASH_TEST=====
flash_test:
			clr		temp1
		//page	1
			call	read_flash_id
	//	page	0
		//K9F1G08U0A	  	F1 h ;Yes
		//K9K2G08U0M		DA h ;Yes
			mov		a,temp1
			xor		a,#0xf1
			JBS		STATUS,Z,pass_flash_test
			
			mov		a,temp1
			xor		a,#0xDA
			JBC		STATUS,Z,flash_test
pass_flash_test:						
			MOV		A,#0X01
            MOV		TEST_COUNT,A
            ;CALL	TEST_LCD_DISPLAY

		//=====BAD BLOCK_test=====
		//page	1
			call	read_flash_id
	//	page	0
		
		bank	2
			mov		a,#0x01
			mov		tableaddressrow3,a
			mov		a,#0xfb
			mov		tableaddressrow2,a
			mov		a,#0xc2
			mov		tableaddressrow1,a
			clr		tableaddresscol1
			clr		tableaddresscol2
			call	load_bbi_table_address
			
			call	FlashBlockErase2G
			
		    CALL	searchbbitable//BAD_BLOCK
            call	search_a_good_block_for_creating_table	
			call	create_bbi_table
            clr		swapaddl
			clr		swapaddh   
			
			DISI
			NOP     
		//=====BAD BLOCK_PASS=====
BAD_BLOCK_TEST_OK_LCD_DISPLAY:			
			MOV		A,#0X02
            MOV		TEST_COUNT,A
            
            ;CALL	TEST_LCD_DISPLAY
            	
          //  JMP		BAD_BLOCK_TEST_OK_LCD_DISPLAY
		//ALL_PASS   
				nop	
		//	jmp		$

			jbC		PF,2,BAD_BLOCK_TEST_OK_LCD_DISPLAY
BATTY_VALUE_TEST_LOOP:	

		//CALL	BATTY_VALUE_TEST_MODE
BATTY_VALUE_TEST_LOOP_1:		
			MOV		A,#0X05
            MOV		TEST_COUNT,A
            
            ;CALL	TEST_LCD_DISPLAY
            JMP		BATTY_VALUE_TEST_LOOP_1
            
            NOP
            JMP		$

		




/////////////////////////////////////////////////////////////////////
//DELAY
//////////////////////////////////////////////////////////////
Delay30mS:
			Call	DELAY_3ms
			Call	DELAY_3ms
			Call	DELAY_3ms
			Call	DELAY_3ms
			Call	DELAY_3ms
			
			Call	DELAY_3ms
			Call	DELAY_3ms
			Call	DELAY_3ms
			Call	DELAY_3ms
			Call	DELAY_3ms
			Ret


DELAY_3ms:
			CALL	DELAY_1ms
DELAY_2ms:
			CALL	DELAY_1ms
			CALL	DELAY_1ms
			RET	
DELAY_1ms:
			CALL	DELAY_100us
			CALL	DELAY_100us
			CALL	DELAY_100us

DELAY_700us:
			CALL	DELAY_100us
			CALL	DELAY_100us
DELAY_500us:
			CALL	DELAY_100us
			CALL	DELAY_100us

DELAY_300us:
			CALL	DELAY_100us
			CALL	DELAY_100us
			CALL	DELAY_100us
			RET

Delay_100us:
            CALL    Delay_10us
			CALL	Delay_10us
            CALL    Delay_10us
			CALL	Delay_10us
			CALL	Delay_10us
Delay_50us:
            CALL    Delay_10us
			CALL	Delay_10us
Delay_30us:
            CALL    Delay_10us
			CALL	Delay_10us
			CALL	Delay_10us
			RET	
Delay_25us:			
			CALL	Delay_10us
			CALL	Delay_10us
			CALL	Delay_5us
			RET
Delay_10us:
			CALL	Delay_1us
			CALL	Delay_1us
			CALL	Delay_1us
			CALL	Delay_1us
			CALL	Delay_1us			
Delay_5us:
			CALL	Delay_1us
			CALL	Delay_1us
			CALL	Delay_1us
			CALL	Delay_1us
			CALL	Delay_1us
			RET	
Delay_1us:		;12
			NOP	;3
			NOP	;4
			NOP	;5
			NOP	;6
			NOP	;7
			NOP	;8
	;		NOP	;9
	;		NOP	;10
	;		NOP	;11
	;		NOP	;12
	;		NOP	;13
	;		NOP	;14
	;		NOP	;15
	;		NOP	;16
	;		NOP	;17
	;		NOP	;18
	;		NOP ;19
N5_NOP:
	;		NOP	;20
			NOP	;21
			NOP	;22
			NOP	;23
			RET	;24

;=========================================================

            BANK    0

;;==========================================================
INCLUDE	"FLASH.INC"
;;==========================================================
INCLUDE	"CBW_PROCESS.H"
INCLUDE "BAD_BLOCK.INC"

		
read_flash_id:
FlashRead2GID:
	//page	0
		BS		Flash_Ctrl_Port_B,CLE
			MOV		A,#0x90
			CALL	FlashWriteData
		BC		Flash_Ctrl_Port_B,CLE
		BS		Flash_Ctrl_Port_B,ALE
			MOV		A,#0x00
			CALL	FlashWriteData
		
		BC		Flash_Ctrl_Port_B,ALE
;		BC	PortF,0	;test

		MOV		A,#0xFF			;INPUT
		MOV		Flash_Data_Port_IO,A
		
		
		CALL	FlashReadData	;EC h
		Mov		TEMP0,A

		CALL	FlashReadData	;Device ID
								;K9F1G08Q0A 	A1 h
								;K9F1G08U0A  	F1 h ;Yes
								;K9K2G08U0M		DA h ;Yes
								;K9K4G08U0M		DC h
		Mov		TEMP1,A
;		CALL	FlashReadData
;		CALL	FlashReadData
;		CALL	FlashReadData
	BANK	2
		MOV		A,#0XDA
		XOR		A,TEMP1
		JBs		STATUS,Z,read_flash_id_end
		Bc		bank2_check_flag,is_128_or_256
	//page	1
	bank	0
		Ret		
		/*
		CALL	FlashReadData
		Mov		TEMP2,A

		CALL	FlashReadData
		Mov		TEMP3,A

		CALL	FlashReadData
		Mov		TEMP4,A
		*/
read_flash_id_end:
		Bs		bank2_check_flag,is_128_or_256
	//page	1
	bank	0
		Ret

INCLUDE "DBR_table.INC"

			ORG 0X2000
			
			
ORG 0X2FFF
            DW      0b0100000000010101


ORG 0X3FFF
            DW      0b0100000000010101
;         xPxxxxxxxxxURRSS  ; RF 12M, SYS:12M , Protect, USB
;; Bit 14: Protect  None Protect / Protect , 1/0
;; Bit  4: USB Clock Enabled / Disabled    , 1/0
;; Bit 3:2:RF CLOCK           >> 00:6 , 01:12 ,10:24,11:48
;; Bit 1:0:System Clock (MHz) >> 00:6 , 01:12 ,10:24,11:48

⌨️ 快捷键说明

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