📄 recplay.asm
字号:
clr rec_cbit
mov play_mem,#2
mov play_m,#0
lcall jxctl
play_ctl3: ret
;
;
nop
nop
ljmp start
nop
nop
;
ffw_ctl:
;快进控制
jb p_sw,w_c0
setb ffw_cbit
clr rew_cbit
clr play_cbit
clr rec_cbit
mov play_mem,#3
mov play_m,#0
lcall jxctl
w_c0: ret
;
rec_ctl_x: jb p_sw,rec_ctl_x3 ;录音
jb rec_sw,rec_ctl_x3
setb rec_cbit
clr ffw_cbit
clr rew_cbit
clr play_cbit
mov play_mem,#1
mov play_m,#0
lcall jxctl
rec_ctl_x3: ret
;
;
nop
nop
ljmp start
nop
nop
;
rec_ctl: mov a,play_mem ;录音及暂停控制
cjne a,#01h,rec_ctl2
jb moto_on,rec_ctl1
mov au_to,#0 ;暂停
setb moto_on
mov play_m,play_mem
sjmp rec_ctl3
rec_ctl1: mov au_to,#0 ;重启
clr moto_on
mov play_m,#0
sjmp rec_ctl3
;
rec_ctl2: jb p_sw,rec_ctl3 ;录音
jb rec_sw,rec_ctl3
setb rec_cbit
clr ffw_cbit
clr rew_cbit
clr play_cbit
mov play_mem,#1
mov play_m,#0
lcall jxctl
rec_ctl3: ret
;
rew_ctl: ;快倒控制
jb p_sw,ew_c0
setb rew_cbit
clr ffw_cbit
clr play_cbit
clr rec_cbit
mov play_mem,#4
mov play_m,#0
lcall jxctl
ew_c0: ret
;
stop_ctl: clr rec_cbit ;停机控制
clr play_cbit
clr ffw_cbit
clr rew_cbit
mov play_mem,#0
mov play_m,#0
lcall jxctl
ret
;
;
nop
nop
ljmp start
nop
nop
;
key_test: clr kl1_pad ;键扫程序
setb kl2_pad
jnb kh1_pad,tstop_p
jnb kh2_pad,trew_p
jnb kh3_pad,tffw_p
setb kl1_pad
clr kl2_pad
jnb kh1_pad,tplay_p
jnb kh2_pad,trec_p
jnb kh3_pad,tclear_p
sjmp tkey_end2 ;无键按下
;
tstop_p: lcall delay_5ms
jnb kh1_pad,tstop_p1
sjmp tkey_end
tstop_p1: mov k_num,#06h ;停止6
setb key_stop
sjmp tkey_end
;
trew_p: lcall delay_5ms
jnb kh2_pad,trew_p1
sjmp tkey_end
trew_p1: mov k_num,#05h ;快倒5
clr p0.4
setb key_rew
sjmp tkey_end
;
tffw_p: lcall delay_5ms
jnb kh3_pad,tffw_p1
sjmp tkey_end
tffw_p1: mov k_num,#04h ;快进4
clr p0.3
setb key_ff
sjmp tkey_end
;
tplay_p: lcall delay_5ms
jnb kh1_pad,tplay_p1
sjmp tkey_end
tplay_p1: mov k_num,#03h ;放音3
clr p0.2
setb key_play
sjmp tkey_end
;
trec_p: lcall delay_5ms
jnb kh2_pad,trec_p1
sjmp tkey_end
trec_p1: mov k_num,#02h ;录音2
clr p0.1
setb key_rec
sjmp tkey_end
;
tclear_p: lcall delay_5ms
jnb kh3_pad,tclear_p1
sjmp tkey_end
tclear_p1: mov k_num,#01h ;清零1
setb key_clr
;
tkey_end: mov a,p2 ;等待按键松开
anl a,#38h ;读3根行线
cjne a,#38h,tkey_end
tkey_end2: setb kh1_pad
setb kh2_pad
setb kh3_pad
setb p0.1
setb p0.2
setb p0.3
setb p0.4
ret
;
;
nop
nop
ljmp start
nop
nop
;
;
jxctl: ;机芯控制
jnb rec_cbit,jxctl2
mov c,p_sw
orl c,rec_sw
jnc jx_11
lcall stop
mov play_mem,#0
ret
jx_11: lcall play
mov play_mem,#1
ret
jxctl2: jnb play_cbit,jxctl3
jnb p_sw,jx_21
lcall stop
mov play_mem,#0
ret
jx_21: lcall play
mov play_mem,#2
ret
jxctl3: jnb ffw_cbit,jxctl4
jnb p_sw,jx_31
lcall stop
mov play_mem,#0
ret
jx_31: lcall ff
mov play_mem,#3
ret
jxctl4: jnb rew_cbit,jxctl5
jnb p_sw,jx_41
lcall stop
mov play_mem,#0
ret
jx_41: lcall rew
mov play_mem,#4
ret
jxctl5: lcall stop
mov play_mem,#0
ret
;
jxc: ;cmos开关控制
jnb rec_cbit,jxc2
mov c,p_sw
orl c,rec_sw
jnc jxc_11
lcall close_cmos
ret
jxc_11: lcall rec_cmos
ret
;
jxc2: jnb play_cbit,jxc3
jnb p_sw,jxc_21
lcall close_cmos
ret
jxc_21: lcall play_cmos
ret
;
jxc3: lcall close_cmos
ret
;
;
nop
nop
ljmp start
nop
nop
;
rec_cmos: clr rec_c ;录音时的开关设置
setb play_c
clr comm1
ret
;
play_cmos: setb rec_c ;放音时的开关设置
clr play_c
setb comm1
ret
;
close_cmos: setb rec_c ;关闭时的开关设置
setb play_c
clr comm1
ret
;
autostop: mov a,play_m
jnz at4
mov a,play_mem
cjne a,#01h,stpa1
sjmp at3
stpa1: cjne a,#02h,at2
at3: mov a,au_to ;放录音时
cjne a,#200,at0
sjmp at1
at2: mov a,au_to ;进倒时
cjne a,#80,at0
at1: clr rec_cbit
clr play_cbit
clr ffw_cbit
clr rew_cbit
mov play_mem,#0
lcall jxctl ;停机
lcall jxc
at4: ret
at0: jnc at1
ret
;
;
nop
nop
ljmp start
nop
nop
;
b_int1: mov wo_t,#00h ;握手计时器=0
inc woshou ;握手计数器+1
reti
;
;
nop
nop
ljmp start
nop
nop
;
b_int0: push acc ;录音机计数中断
push psw
setb rs0
mov au_to,#00h
;
jb fang,exi1
sjmp exi6
;
exi1: mov r0,#count0 ;计数+
mov a,@r0
cjne a,#04h,b_i12
;
b_i11: clr a
mov @r0,a
sjmp exi2
b_i12: jnc b_i11
inc a
mov @r0,a
ljmp exi5
;
exi2: inc r0
mov a,@r0
cjne a,#09h,b_i22
b_i21: clr a
mov @r0,a
sjmp exi3
b_i22: jnc b_i21
inc a
mov @r0,a
ljmp exi5
;
exi3: inc r0
mov a,@r0
cjne a,#09h,b_i32
b_i31: clr a
mov @r0,a
sjmp exi4
b_i32: jnc b_i31
inc a
mov @r0,a
ljmp exi5
;
exi4: inc r0
mov a,@r0
cjne a,#09h,b_i42
b_i41: clr a
mov @r0,a
ljmp exi5
b_i42: jnc b_i41
inc a
mov @r0,a
ljmp exi5
;
exi6: mov r0,#count0 ;计数-
mov a,@r0
jnz d_i12
mov a,#04h
mov @r0,a
sjmp exi7
d_i12: dec a
mov @r0,a
ljmp exi5
;
exi7: inc r0
mov a,@r0
jnz d_i22
mov a,#09h
mov @r0,a
sjmp exi8
d_i22: dec a
mov @r0,a
ljmp exi5
;
exi8: inc r0
mov a,@r0
jnz d_i32
mov a,#09h
mov @r0,a
sjmp exi9
d_i32: dec a
mov @r0,a
ljmp exi5
;
exi9: inc r0
mov a,@r0
jnz d_i42
mov a,#09h
mov @r0,a
ljmp exi5
d_i42: dec a
mov @r0,a
ljmp exi5
;
exi5: pop psw
pop acc
reti
;
;
nop
nop
ljmp start
nop
nop
;
wait_400ms: mov tim,#40 ;等待400ms
lcall wait
ret
;
wait_300ms: mov tim,#30 ;等待300ms
lcall wait
ret
;
wait_190ms: mov tim,#19 ;等待190ms
lcall wait
ret
;
wait_130ms: mov tim,#13 ;等待130ms
lcall wait
ret
;
wait_100ms: mov tim,#10 ;等待100ms
lcall wait
ret
;
wait_120ms: mov tim,#12 ;等待120ms
lcall wait
ret
;
wait_110ms: mov tim,#11 ;等待110ms
lcall wait
ret
;
wait_450ms: mov tim,#45 ;等待450ms
lcall wait
ret
;
wait_35ms: mov tim,#3 ;等待35ms
lcall wait
lcall delay_5ms
ret
;
delay_5ms: mov r6,#10
dey0: mov r5,#230
dey1: djnz r5,dey1
djnz r6,dey0
ret
;
wait_30ms: mov tim,#3 ;等待30ms
lcall wait
ret
;
wait: mov a,tim
mov au_to,#0
cjne a,#00h,wait
ret
;
;
nop
nop
ljmp start
nop
nop
;
open_dct: clr moto_on
clr cdct ;启动电磁铁
lcall wait_30ms
setb cdct ;关闭电磁铁
ret
;
reset: mov r7,#6 ;机芯复位
clr moto_on ;马达启动
lcall wait_400ms
reset0: jnb mode_sw,reset1
reset0a: setb moto_on ;关闭马达, 复位完成
clr play_cbit
clr rec_cbit
clr ffw_cbit
clr rew_cbit
mov play_mem,#0
mov play_m,#0 ;退出暂停状态
mov ff_old,#0
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -