📄 tc9154.dt
字号:
;==========================================================
;define
;include <Emc456.inc>
;================================================
;************************************************
tcc == 0x01
;--------------------------------- --
pc == 0x02
;-------------status----------------
status== 0x03
c == 0x00
dc == 0x01
z == 0x02
intf == 0x0f
iocb == 0x0b
; iocc == 0x0c
; iocd == 0x0d
;-----------port5------------------
port5 == 0x05
led_roc== 0x00
up_down== 0x01
osc_m == 0x02
osc_w == 0x03
;-----------port6-------------------
port6 == 0x06
stb_pin== 0x00
mut_pin== 0x01
POINT1 == 0x02
POINT2 == 0x03
led_m == 0x04
led_w == 0x05
ir == 0x06
led_pop== 0x07
;---------define ------------------
;==================================
r0 == 0x10
r1 == 0x11
r2 == 0x12
r3 == 0x13
r4 == 0x14
r5 == 0x15
r6 == 0x16
count1 == 0x17
keybyte== 0x18
buffer == 0x19
a_buf == 0x1a
r3_buf == 0x1b
; 0x1c
; 0x1d
mvolg == 0x1e
mvolg1 == 0x1f
wvolg == 0x20
wvolg1 == 0x21
DAT_REM== 0X23
REMBYTE== 0X24
TIMES == 0X25
;------------0x28------------------
rembyte1== 0x2b
count2 == 0x2c
;=============================
buf_led== 0x28
;;;;29 2a-------2f
;=============================
REMBUFF== 0X30
ROTAL_Z== 0X31
;==========bit defind==========
flag == 0x1c
keyed == 0x00
key_down== 0x01
power == 0x02
mute == 0x03
r_over == 0x04
ak47 == 0x05
remed == 0x06
addd == 0x07
;==============================
bit_flag== 0x32
POINT11 == 0x00
POINT22 == 0x01
;=========================================================
org 0x00
jmp start
;---------------------------------------------------------
org 0x08
clr 0x0f
mov a_buf,a
swap a_buf
swapa status
mov r3_buf,a
mov a,times
xor a,@0x010
jbs status,z
jmp down_next
clr times
down_next:
inc times
mov a,@0x0
mov tcc,a
swapa r3_buf
mov status,a
swapa a_buf
reti
;;-------------init back--------------------
SW_TAB: ADD PC,a
RETL @00H
RETL @02H
RETL @01H
RETL @00H
RETL @00H
RETL @00H
RETL @00H
RETL @00H
RETL @0H
RETL @0H
RETL @0H
RETL @00H
RETL @00H
RETL @00H
RETL @00H
RETL @00H
;==========================================
irkey:
clr rembyte
add pc,a
retl @0x00
retl @0x11
retl @0x01
retl @0x1f
retl @0x0f
retl @0x41
retl @0x45
retl @0x06
retl @0x5e
;===============================================
tab_yaokon01:
jbs flag,power
jmp loop
jmp tab_yaokon02
table_yaokon:
bs flag,ak47
mov a,rembyte
xor a,@0x02
jbs status,z
jmp tab_yaokon01
tab_yaokon02:
mov a,rembyte
clr rembyte
add pc,a
jmp loop
jmp p_stby
jmp p_mute
jmp p_pop
jmp p_rock
jmp p_insw
jmp p_desw
jmp p_inmvol
jmp p_demvol
;--------------------------------
table_01:
jbs flag,power
jmp loop
jmp table_02
table:
call delay20ms
call delay20ms
mov a,keybyte
xor a,@0x04
jbs status,z
jmp table_01
table_02:
mov a,keybyte
clr keybyte
bs flag,key_down
add pc,a
jmp loop
jmp p_inmvol
jmp p_demvol
jmp p_mute
;;-===========================================
;&&&&&&&&&&&&&&&& start asm &&&&&&&&&&&&&&&&&&
start:
mov a,@10
mov 0x04,a
clr r0
up_start: ;clear 10h---3ffh
clr 0
inc 0x04
inc r0
mov a,r0
xor a,@048
jbs status,z
jmp up_start
mov a,@0x0
iow port5
bs port5,up_down
mov a,@0x4c
iow port6
call delay20ms
call delay20ms
call delay20ms
nop
nop
nop
nop
bc port6,stb_pin;== 0x00
bc port6,mut_pin;== 0x01
bc port6,led_m; == 0x04
bc port6,led_w; == 0x05
bc port6,led_pop;
bs port5,led_roc
;------------------------------------------
mov a,@0x47 ;设定分频器
contw
mov a,@0x0
iow 0x0e ;close wdt
mov a,@0x1
iow 0x0f
eni ;开中断
;------------------------------------------
mov a,@30
mov mvolg,a
mov wvolg1,a
call send_mvol
/* mov a,@20
mov mvolg1,a
mov wvolg1,a
clr mvolg
clr wvolg
call send_mvol */
mov a,@0xf0
mov port6,a
call delay20ms
call delay20ms
call delay20ms
call delay20ms
call delay20ms
call delay20ms
call delay20ms
bc flag,mute ;;;;;;;;;;;
bs flag,power ;;;;;;;;;;
bc flag,remed
jmp loop
;************************************************
;************************************************
loop_rem:
call remote
mov a,rembyte
jbc status,z
jmp loop1
clr count1
mov a,@250
mov count2,a
jmp table_yaokon
loop:
jbs port6,ir
jmp loop_rem
loop1:
eni
call chg_vol
jbs status,z
jmp SELECT_VOL
jmp loop
SELECT_VOL:
jbc flag,addd
jmp p_inmvol
jmp p_demvol
;*************************************************
;--------------key scan--------------------------
;****** ================ROTALLER START====================== ******
CHG_VOL:
clr rotal_z
jbc port5,point1
BS rotal_z,0
jbc port5,point2
BS rotal_z,1
jbc bit_flag,point11
BS rotal_z,2
jbc bit_flag,point22
BS rotal_z,3
mov a,rotal_z
CALL SW_TAB
MOV R0,a
BC bit_flag,point11
jbc port5,point1
BS bit_flag,POINT11
BC bit_flag,point22
jbc port5,point2
BS bit_flag,POINt22
mov a,r0
jbs STATUS,Z
jmp NEXT_NET
RETL @0
NEXT_NET: jbs R0,0
jmp UNWISE
WISE: BS flag,ADDD
RETL @1
UNWISE: jbs R0,1
retl @0
BC flag,ADDD
RETL @1
;==========================================================
;****** ================ROTALLER START====================== ******
;==========================================================
;---------------------------------
;=================================
;========bcd to 10 digital=========================
convert:
clr r1
clr r2
con_01:
mov r2,a
bc status,c
mov a,@10
sub a,r2
jbs status,c
jmp con_02
inc r1
jmp con_01
con_02:
ret
;================================================
;;;;;;;;;;init pt2258;;;;;;;;;;;;;;;;
;=================================
send_mvol:
mov a,mvolg
sub a,mvolg1
jbs status,c
jmp pin_m
pde_m:
bc port5,up_down
; bc port5,osc_m
call key_delay
mov a,mvolg
sub a,mvolg1
mov r3,a
jmp wby0
pin_m:
bs port5,up_down
; bc port5,osc_m
call key_delay
mov a,mvolg1
sub a,mvolg
mov r3,a
wby0:
wby1:
NOP
bs port5,osc_m
call delay20ms
bc port5,osc_m
call key_delay
bS port5,osc_m
; call delay20ms
Bs PORT5,UP_DOWN
nop
ret
;-----------------------------------------
send_wvol:
mov a,wvolg
sub a,wvolg1
jbs status,c
jmp pin_w
pde_w:
bc port5,up_down
bc port5,osc_w
mov a,wvolg
sub a,wvolg1
mov r3,a
jmp wby0
pin_w:
bs port5,up_down
bc port5,osc_w
mov a,wvolg1
sub a,wvolg
mov r3,a
wby0w:
wby1w: bc port5,osc_w
bs port5,osc_w
call key_delay
bc port5,osc_w
call key_delay
djz r3
jmp wby0w
bs port5,up_down
bs port5,osc_w
nop
ret
;-----------------------------------------
key_delay:
mov a,@025
mov r0,a
up_key_delay:
djz r0
jmp up_key_delay
ret
;===============long delay==============================
delay20ms:
mov a,@255
mov r2,a
delay_lp1:
mov a,@200
mov r1,a
delay_lp0:
nop
nop
nop
djz r1
jmp delay_lp0
djz r2
jmp delay_lp1
ret
;===========================================
ak_47:
call delay20ms
call delay20ms
call delay20ms
mov a,rembyte1
mov rembyte,a
ret
r_exit:
jbc flag,ak47
jmp ak_47
ret
r_exit1:nop
nop
ret
r_exit2:nop
nop
ret
;----------------------------====================
;===========remote control software===================
remote:
mov a,@12
mov r2,a
r_loop1:
call delay0
jbs port6,ir
jmp r_loop3
r_loop2:
jmp r_exit2
r_loop3:
djz r2 ;9ms start code
jmp r_loop1
r_loop4:
jbs port6,ir
jmp r_loop4 ;4.5ms code
mov a,@4
mov r2,a
mov a,@rembuff
mov 4,a
r_loop5: ;start read code
call byte_in
jbc flag,r_over
jmp r_exit
mov a,dat_rem
mov 0,a
inc 4
djz r2
jmp r_loop5
mov a,rembuff
xor a,@0x02
jbs status,z
jmp r_exit2
mov a,rembuff+1
xor a,@0xfd
jbs status,z
jmp r_exit2
mov a,@8
mov r3,a
;==============????????====================
rem_bak1:
mov a,r3
call irkey
xor a,rembuff+2
jbc status,z
jmp rem_bak0
djz r3
jmp rem_bak1
jmp r_exit
rem_bak0:
nop
mov a,r3
mov rembyte,a
mov rembyte1,a
nop
ret
;==============????????========================
byte_in:
bc flag,r_over
mov a,@8
mov r1,a
clr dat_rem
byte1:
mov a,@8
mov r3,a
BYTE03:
MOV A,@4
MOV R0,A
byte2:
mov a,@218
mov r5,a
byte3:
jbs port6,ir
jmp byte4
djz r5
jmp byte3
nop
djz r0
jmp byte2
djz r3
jmp byte03
bs flag,r_over
ret
byte4:
jbs port6,ir
jmp byte4
call delay0
bs status,c
jbc port6,ir
jmp byte04
bc status,c
byte04:
rrc dat_rem
djz r1
jmp byte1
ret
;######################################
delay1ms:
mov a,@30
mov r5,a
delay10: ;2clock(32x4x2/3.58)x10=715us
mov a,@30 ;4clock(32x4x4/3.58)x10=715usx2
mov r6,a
delay20:
nop
djz r6
jmp delay20
djz r5
jmp delay10
nop
ret
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
delay0:
mov a,@225 ;
mov tcc,a ;tcc
mov a,@36
mov r5,a
delay1: ;2clock(32x4x2/3.58)x10=715us
mov a,@30 ;4clock(32x4x4/3.58)x10=715usx2
mov r6,a
delay2:
nop
djz r6
jmp delay2
djz r5
jmp delay1
nop
ret
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;======================================
P_mute:
bc flag,ak47
jbc flag,mute
jmp mute_off
jmp mute_on
mute_on:
; bc port6,mup_led
bs flag,mute
jmp P_mu01
mute_off:
; bs port6,mup_led
bc flag,mute
p_mu01:
; call play_mute
jmp loop
;
;===================================
loop99:
jmp loop
;++++++++++++++++++++++++++++++++++++
;++++++++++++++++++++++++++++++++++++
;===================================
p_stby:
p_pop:
p_rock:
jmp loop
p_demvol:
bc flag,key_down
/* bc status,c
mov a,@064
sub a,mvolg
jbc status,c
jmp LOOP
inc mvolg*/
bc port5,up_down
CALL KEY_DELAY
call delay20ms
; call delay20ms
; call delay20ms
; bc port5,osc_m
call wby0
jmp LOOP
jmp p_inm_01
p_inmvol:
/* bc flag,key_down
bc status,c
mov a,@1
sub a,mvolg
jbs status,c
jmp LOOP
dec mvolg*/
p_inm_01:
bs port5,up_down
; bc port5,osc_m
CALL KEY_DELAY
call delay20ms
;; call delay20ms
; call delay20ms
call wby0
; call send_mvol
jmp loop
p_desw:
mov a,wvolg
jbc status,z
jmp p_dew_01
dec wvolg
p_dew_01:
mov a,wvolg
jmp loop99
p_insw:
mov a,@015
bc status,c
sub a,wvolg
jbc status,c
jmp p_dew_01
inc wvolg
jmp p_dew_01
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -