📄 new0001.asm
字号:
;************************************************************************
; *
; minyunhua write *
; QQ:121758163 *
; *
;************************************************************************
.include "C:\OPENice\Include\Reg\s3c9498.reg"
.include "user_def.reg"
.include "ram.reg"
.ifdef M1988_3VCD
.include "3vcd_key.reg"
.endif
.ifdef M1988_3CDMP3
.include "3cdmp3_key.reg"
.endif
.ifdef M1988_DVD
.include "dvd_key.reg"
.endif
.include "io.reg"
ORG 0000H
VECTOR 00H,INIT_9498
INIT_9498:
tcm P1INT,#01H ;判断是否是外部中断0
jp Z,I_INT0 ;外部中断0
tcm TCCON,#01H
jp Z,TIMER1_INIT ;时间溢出中断C
IRET
;****************************************************************
; 外部中断0
;****************************************************************
I_INT0:
.ifdef TEXT_40K
SET_POP
jp ex_int_ret
.endif
clr time_delay
clr time_delay1
IS_STATE_FIRST_9M
jp Z,state_first
IS_STATE_SECN_2M
jp Z,state_third
SET_FIRST_9M
jp ex_int_ret
ORG 003CH
DB 0FFH
DB 0FFH ;
DB 0C7H ;
DB 0FFH ;
state_first:
cp time_count,#55H
jp UGT,error_return
cp time_count,#32H
jp ULT,error_return
SET_SECN_2M
CLR_FIRST_9M
ld remote_bit_count,#20H
jp ex_int_ret
state_third:
cp time_count,#12H
jr UGT,error_return
cp time_count,#02H
jr ULT,error_return
sub time_count,#08H
rrc remote_cmd_code1
rrc remote_cmd_code0
rrc remote_sys_code1
rrc remote_sys_code0
dec remote_bit_count
jr nz,ex_int_ret
set_ok:
SET_DATA_OK
SET_IR_KEY_IS_DOWN
error_return:
CLR_SECN_2M
SET_FIRST_9M
ex_int_ret:
clr time_count
and P1INT,#11111110B
IRET
;****************************************************
;---------------ext int end----------------
;****************************************************
ORG 0100H
RESET:
DI
ld BTCON,#10100011b ; Disable Watch-dog
ld SP,#0C0H
ld TCNTSEL,#02H
ld CLKCON,#00011000B
ld TCCON,#00101110B ;fxx/8
ld TCDATA,#0C8H ;8/8=1US 1*200=200US
ld R0,#0A0H
CLR_RAM:
dec R0
clr @R0
cp R0,#00H
jr NE,CLR_RAM
call IO_INIT
EI
ld EQ_RAM,#044H
ld volume_val,#20H
ld PT2258_VOL,#14H
SET_REMOTE
.ifdef TEXT_40K
CLR_REMOTE
SET_POWER
.endif
ld FUNCTION_STAT,#Function_Vcd
call DELAY_200MS
MAIN:
;*********************************************************
; invalid when current_key is 0ffh
;*********************************************************
;POWER_IS_LOW
;jp Z,no_delay_150ms
.ifdef TEXT_40K
call Send_40K
;call DELAY_200MS
;CLR_POP
jp MAIN
no_delay_150ms:
.endif
call Get_Key
call power_key_par
call EQ_key_par
call volume_key_par
cp FUNCTION_STAT,#Function_Vcd
jp NE,MAIN
KEY_VALID_IS_LOW
jp Z,MAIN
ld ACC_SEN_VAL,Current_Key
call REMOTE_SEND_CODE
jp MAIN
; 时间C溢出中断
;****************************************************************
TIMER1_INIT:
inc DELAY_200US_VAL
inc time_count
inc KEY_DELAY1
cp KEY_DELAY1,#125
jp ULT,next_even1
clr KEY_DELAY1
inc KEY_DELAY
next_even1:
inc time_delay
cp time_delay,#1EH
jp ULT,return_t_int
inc time_delay1
clr time_delay
cp time_delay1,#12H
jp ULT,return_t_int
clr time_delay1
clr time_delay
and STATE_ALL,#0FCH
CLR_IR_KEY_IS_DOWN
return_t_int:
and TCCON,#0FEH
IRET
;****************************************************************
; 中断结束
;****************************************************************
.IF 0
IO_INIT PROC
.ENDIF
IO_INIT:
ld P0,#00H
ld P0CON,#00101010B
clr P1
ld P1CONH,#10101111B
ld P1CONL,#11111000B
ld P1INT,#00001000B ;ENABLE INT1 INT0
.ifdef TEXT_40K
ld P1CONL,#11111001B
ld P1INT,#00001100B
.endif
clr P2
ld P2CONH,#10101000B
ld P2CONL,#10101010B
clr P3
ld P3,#00H
ld P3CON,#10101010B
;A/D
;ld ADCON,#00100010B
RET
.IF 0
IO_INIT ENDP
.ENDIF
;*********************************************************
.IF 0
volume_key_par proc
.ENDIF
volume_key_par:
POWER_IS_LOW
jp Z,vol_ret
KEY_VALID_IS_LOW
jp Z,vol_ret
cp Current_Key,#IR_VOL_DEC_KEY
jp NE,vol_dec_ir_fun
vol_inc_fun:
;音量加
cp PT2258_VOL,#3cH
jp UGE,show_volu
inc PT2258_VOL
jp vol_fun
vol_dec_ir_fun:
cp Current_Key,#IR_VOL_INC_KEY
jp Z,vol_dec_fun
;clr show_volume
vol_mute:
cp Current_Key,#IR_MUTE_KEY
jp Z,vol_mute_fun
RET
vol_mute_fun:
XOR_MUTE
CLR_KEY_VALID
MUTE_IS_LOW
jp Z,noshow_mute_icon
call DELAY_200MS
call PT2314_MUTE
RET
noshow_mute_icon:
call PT2314_NOMUTE
mute_ret:
RET
vol_dec_fun:
;音量减
cp PT2258_VOL,#00H
jp Z,show_volu
dec PT2258_VOL
vol_fun:
clr PT2314_REP
con_send_2258:
cp PT2314_REP,#10
jp uge,show_volu
inc PT2314_REP
call Pt2258_Send
cp ACC_RET_VAL,#00h
jp z,con_send_2258
show_volu:
MUTE_IS_LOW
jp Z,vol_ret
call PT2314_NOMUTE
CLR_MUTE
CLR_KEY_VALID
vol_ret:
RET
;*********************************************************
;*********************************************************
.IF 0
Check_Channel proc
.ENDIF
Check_Channel:
POWER_IS_LOW
jp Z,set_volume_ret
SET_MUTE
ld ACC_SEN_VAL,#1
call Delay_50ms
CLR_TAPE
CLR_CD
CLR_RADIO
CLR_AUX
cp FUNCTION_STAT,#Function_Radio
jp NE,sel_tape_channel
and EQ_RAM,#0FCH
SET_RADIO
jp sel_channel
sel_tape_channel:
cp FUNCTION_STAT,#Function_Tape
jp NE,sel_vcd_channel
and EQ_RAM,#0FCH
or EQ_RAM,#02H
SET_TAPE
jp sel_channel
sel_vcd_channel:
cp FUNCTION_STAT,#Function_Vcd
jp NE,sel_aux_channel
and EQ_RAM,#0FCH
or EQ_RAM,#01H
SET_CD
ld ACC_SEN_VAL,#10
call Delay_50ms
jp sel_channel
sel_aux_channel:
cp FUNCTION_STAT,#Function_Aux
jp ne,sel_channel
SET_AUX
and EQ_RAM,#0fch
or EQ_RAM,#03h
sel_channel:
clr PT2314_REP
con_send:
ld ACC_SEN_VAL,#10
call Delay_50ms
ld ACC_SEN_VAL,#0C0H
call PT2314_SEND
inc PT2314_REP
cp ACC_RET_VAL,#0
jp ne,send_next
cp PT2314_REP,#10
jp ult,con_send
send_next:
ld ACC_SEN_VAL,#0E0H
call PT2314_SEND
call Pt2258_Send
ld ACC_SEN_VAL,EQ_RAM
call PT2314_SEND
call SEND_EQ_VAL
ld ACC_SEN_VAL,#15
call Delay_50ms
CLR_MUTE
set_volume_ret:
RET
;*******************************************************************
.IF 0
power_key_par proc
.ENDIF
power_key_par:
KEY_VALID_IS_LOW
jp Z,power_ret
cp Current_Key,#IR_POWER_KEY
jp NE,power_ret
CLR_KEY_VALID
clr FUNCTION_STAT
SET_MUTE
CLR_FLAT
CLR_POP
CLR_ROCK
CLR_JAZZ
ld ACC_SEN_VAL,#5
call Delay_50ms
CLR_TAPE
CLR_CD
CLR_RADIO
CLR_AUX
XOR_POWER
POWER_IS_LOW
jp Z,power_ret
ld PT2258_VOL,#14h
ld ACC_SEN_VAL,#5
call Delay_50ms
power_ret:
RET
;*******************************************************************
;**********************************************************************
.IF 0
Get_Remote_Key PROC
.ENDIF
;**********************************************************************
Get_Remote_Key:
ld Current_Key,#0FFH
IR_KEY_DOWN_IS_LOW
jp Z,get_rem_key
ld Current_Key,Current_Key_Bak
get_rem_key:
DATA_OK_IS_HIGH
jp Z,get_ir_key
RET
get_ir_key:
CLR_DATA_OK
COM remote_cmd_code0
ld REMOTE_CODE_BAK,remote_cmd_code0
cp remote_cmd_code0,remote_cmd_code1
jp Z,get_code
RET
get_code:
ld Current_Key,REMOTE_CODE_BAK
ld Current_Key_Bak,Current_Key
RET
;**********************************************************************
;**********************************************************************
.IF 0
Get_Key PROC
.ENDIF
;**********************************************************************
Get_Key:
ld PREVIOUS_KEY,Current_Key
cp PREVIOUS_KEY,#0FFH
jp NZ,NO_CLR_KEY_DELAY
clr KEY_DELAY
CLR_REP_KEY
NO_CLR_KEY_DELAY:
call Get_Remote_Key
cp Current_Key,#0FFH
jp EQ,search_ad_key
call Get_Vol_Key
jp IS_OK
search_ad_key:
call Get_AD_Key
;call Get_AD2_Key
call Get_Vol_Key
cp Current_Key,#0FFH
jp NE,IS_OK
ld PREVIOUS_KEY,Current_Key
IS_OK:
CLR_KEY_VALID
cp Current_Key,PREVIOUS_KEY
jp EQ,RET_KEY_FAIL
SET_KEY_VALID
RET_KEY_FAIL:
RET
;**********************************************************************
;**********************************************************************
.IF 0
Get_Vol_Key PROC
.ENDIF
;**********************************************************************
Get_Vol_Key:
;-----------------------------------------------------------------------
JUD_VOL_INC_KEY:
cp Current_Key,#IR_VOL_INC_KEY
jp NE,V_UP_K_I
ld PREVIOUS_KEY,Current_Key;为使后面的按键为无效
cp KEY_DELAY,#TIME_500MS
jp ULT,JUD_VOL_DEC_KEY
ld Current_Key,#IR_VOL_INC_KEY;
ld PREVIOUS_KEY,#0FFH
clr KEY_DELAY
SET_REP_KEY
RET
V_UP_K_I:
cp PREVIOUS_KEY,#IR_VOL_INC_KEY
jp NE,JUD_VOL_DEC_KEY
REP_KEY_IS_DOWN
jp Z,JUD_VOL_DEC_KEY
ld PREVIOUS_KEY,#0FFH
SET_REP_KEY
ld Current_Key,#IR_VOL_INC_KEY
RET
;-----------------------------------------------------------------------
JUD_VOL_DEC_KEY:
cp Current_Key,#IR_VOL_DEC_KEY
jp NE,V_DOWN_K_I
ld PREVIOUS_KEY,Current_Key;为使后面的按键为无效
cp KEY_DELAY,#TIME_500MS
jp ULT,JUD_VOL_DEC_KEY_RET
ld Current_Key,#IR_VOL_DEC_KEY;
ld PREVIOUS_KEY,#0FFH
clr KEY_DELAY
SET_REP_KEY
RET
V_DOWN_K_I:
cp PREVIOUS_KEY,#IR_VOL_DEC_KEY
jp NE,JUD_VOL_DEC_KEY_RET
REP_KEY_IS_DOWN
jp Z,JUD_VOL_DEC_KEY_RET
ld PREVIOUS_KEY,#0FFH
SET_REP_KEY
ld Current_Key,#IR_VOL_DEC_KEY
JUD_VOL_DEC_KEY_RET:
RET
;**********************************************************************
.include "time.asm"
.ifdef M1988_3VCD
.include "3vcd_ad.asm"
.endif
.ifdef M1988_3CDMP3
.include "3cdmp3_ad.asm"
.endif
.ifdef M1988_DVD
.include "dvd_ad.asm"
.endif
.include "3314.asm"
.include "remote.asm"
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -