📄 epodmain.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 + -