📄 baojing.dt
字号:
jmp autq ;位数不符合。
;比较密码。
bjzqx:
bs r4,7
bc r4,6
mov a,r0
bc r4,7
bs r4,6
xor a,r0
jbs status,2
jmp autq ;密码错误。
djz some4
jmp bjzqx ;密码正确.
bc r4,6
;=========================================
;密码正确提示。
sezhi:
bs status,6
bs status,5
bs p6,pow_386
call mslm
bc flag,wait ;进入设置状态。
bc p6,pow_386
bc flagbuf,keyxin1
bc flagbuf,keyxin2
bc flagbuf,keyjin1
bc flagbuf,keyjin2
;设置状态下,就检测dtmf,不检测其他。
;====================================
;等待7秒钟,没有命令就挂机。
ddsm:
mov a,@17
mov qcc01,a ;7s
;接收7秒内的dtmf信号。
hkc:
mov a,@255
mov qcc02,a
hkb:
mov a,@255
mov qcc03,a
hka:
jbc p6,ena92
jmp ddk ;有dtmf既退出循环。
djz qcc03
jmp hka
djz qcc02
jmp hkb
djz qcc01
jmp hkc
jmp outx
ddk:
jbc flag,wait
jmp aabx
jbc flagbuf,newcode
jmp aabc1
jbc flagbuf,againcode
jmp mmc1
;等待设置状态----## **
;======================================
yjch:
call atrc ;dtmf解码
jbc flagbuf,keyjin2
jmp keyboardj
jbc flagbuf,keyxin2
jmp keyboardx
mov a,@0x0c ;c是#
xor a,some3
jbc status,zero
jmp jchsa ;有#就解除设定。
mov a,@0x0b ;b是*,*是输入设定。
xor a,some3
jbc status,zero
jmp shrsa
jmp ddsm
jchsa:
jbc flagbuf,keyjin1
jmp jchsb ;有##就解除设定。
bs flagbuf,keyjin1
jmp ddsm
shrsa:
jbc flagbuf,keyxin1
jmp shrsb ;b是*,*是输入设定。
bs flagbuf,keyxin1
jmp ddsm
jchsb:
bs flagbuf,keyjin1
bs flagbuf,keyjin2
jmp ddsm
shrsb:
bs flagbuf,keyxin1
bs flagbuf,keyxin2
jmp ddsm
;##操作码
keyboardj:
bc flagbuf,keyjin1
bc flagbuf,keyjin2
mov a,@0x02 ;##2是报警后无警笛音。
xor a,some3
jbc status,zero
jmp yjyina
mov a,@0x03 ;##3是拨号循环为无限次。
xor a,some3
jbc status,zero
jmp schfa
mov a,@0x05 ;##5是线路故障无提示。
xor a,some3
jbc status,zero
jmp gztsa
mov a,@0x08 ;##8是清空号码!
xor a,some3
jbc status,zero
jmp qkonghm
mov a,@0x06 ;##6是试听录音。
xor a,some3
jbc status,zero
jmp shryina
mov a,@0x0c ;c是#输入设定。
xor a,some3
jbc status,zero
jmp jchsb
jmp ddsm
;**操作码
keyboardj:
bc flagbuf,keyxin1
bc flagbuf,keyxin2
mov a,@0x02 ;**2是报警后有警笛音。
xor a,some3
jbc status,zero
jmp yjyin
mov a,@0x03 ;**3是拨号循环为三次。
xor a,some3
jbc status,zero
jmp schf
mov a,@0x0a ;**0是修改密码
xor a,some3
jbc status,zero
jmp aab0
mov a,@0x05 ;**5是线路故障有提示。
xor a,some3
jbc status,zero
jmp gzts
mov a,@0x06 ;**6是录音。
xor a,some3
jbc status,zero
jmp shryin
mov a,@0x08 ;**8是输入号码。
xor a,some3
jbc status,zero
jmp shhmne
mov a,@0x0b ;b是*,*是输入设定。
xor a,some3
jbc status,zero
jmp shrsb
jmp ddsm
;=========================================================
;修改密码操作。
aab0:
bc flagbuf,keyxin1
bc flagbuf,keyxin2
bc flagbuf,keyjin1
bc flagbuf,keyjin2
bc status,5
bs status,6
bs p6,pow_386
call dusuan ;修改密码,响三声。
bc p6,pow_386
bc status,5
bc status,6
clr some4
bs flagbuf,newcode
mov a,@0x21
mov r4,a
aabc1:
call atrc ;dtmf解码
mov a,some3
bs r4,6
bs r4,7
mov r0,a
bc r4,6
bc r4,7
mov a,@0x0c
xor a,some3
jbc status,zero
jmp mmcf ;出现#再重新输一次。
inc r4
mov a,@1
add some4,a
jmp ddsm
;===================================
;再次输入密码校验。
mmcf:
bs status,5
bs status,6
call di11
bc status,5
bc status,6
bc flagbuf,newcode
bs flagbuf,againcode
mov a,some4
mov m002,a
mov a,@0x21
mov r4,a
mmc1:
call atrc
bs r4,6
bs r4,7
mov a,r0
bc r4,6
bc r4,7
xor a,some3
jbs status,zero
jmp bjeer
inc r4
djz some4
jmp ddsm
jmp mmcc
;两次输入的密码不同。
bjeer:
bs flagbuf,newcode
bc flagbuf,againcode
bs status,6
bc status,5
bs p6,pow_386
call fb709 ;密码与上次不同“嘀,嘀,嘀”五秒。
bc p6,pow_386
bs status,6
bc status,5
jmp ddsm ;重新输码,嘀嘀嘀。
;两次输入的密码相同。
mmcc:
bc flagbuf,againcode
bs status,5
bs status,6
bs p6,pow_386
call mslm
bc p6,pow_386
bc status,6
bc status,5
mov a,m002
mov some4,a
mov a,@1
add some4,a
mov a,@0x20
mov r4,a
mov a,some4
bs r4,6
bs r4,7
mov r0,a
bc r4,6
bc r4,7
mov addr,a
mov a,@0x00
mov chb,a
bs status,5
bs status,6
call wrtbyte
bc status,5
bs status,6
jmp ddsm
;=====================================
;密码初始化。
aabm:
mov a,@0xe0
mov r4,a
mov a,@07 ;6+1=7 包括#
mov r0,a
mov a,@6
mov addr,a
adre1:
inc r4
mov a,@0x0a
mov r0,a
djz addr
jmp adre1
mov a,@0x00
mov chb,a
mov a,@7
mov addr,a
bs status,5
bs status,6
call wrtbyte
bs status,5
bs status,6
bs p6,pow_386
call mslm ;丁
bc p6,pow_386
bc p7,2
bc status,5
bc status,6
jmp loop
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;无警笛音。
yjyina:
bs p6,pow_386
call dudan
bc p6,pow_386
bc face,2
jmp yjch
;有警笛音。
yjyin:
bs p6,pow_386
bs p7,soundj
call sc_ka5
call sc_ka5
call sc_ka5
call sc_ka5
bc p7,soundj
bc p6,pow_386
bs face,2
jmp yjch
;3次循环拨号。
schf:
bs p6,pow_386
call dusuan
bc p6,pow_386
bs face,3
jmp yjch
;无限次循环拨号。
schfa:
bs p6,pow_386
call dudan
bc p6,pow_386
bc face,3
jmp yjch
;断线无提示。
gztsa:
bs p6,pow_386
call dudan
bc p6,pow_386
bc face,5
jmp yjch
;断线有提示。
gzts:
bs p6,pow_386
call dusuan
bc p6,pow_386
bs face,5
jmp yjch
;18s录音。
shryin:
bs p6,pow_386
bc p6,mic
call dusuan
bc p6,pow_386
bs p6,mic
bc p5,ryin
call sc18s
bs p5,ryin
bs p6,pow_386
bc p6,mic
call dudoble
bc p6,pow_386
jmp yjch
;18s放音。
shryina:
bs p6,pow_386
bc p6,mic
call dusuan
bc p5,fyin
call sc18s
bs p5,fyin
call dudoble
bc p6,pow_386
jmp yjch
;清空号码.
qkonghm:
mov a,@0xe0
mov r4,a
mov a,@16
mov addr,a
adre7:
mov a,@0xff
mov r0,a
inc r4
djz addr
jmp adre7
mov a,@10
mov some3,a
mov a,@0x10
mov data,a
mov chb,a
wsome:
bs status,5
mov a,@16
mov addr,a
call wrtbyte
bc status,5
mov a,@0x10
add data,a
mov a,data
mov chb,a
djz some3
jmp wsome
bs status,5
bs p6,pow_386
call dudud
bc p6,pow_386
bc status,5
jmp yjch
;输入号码.
shhmne:
bs p6,pow_386
call dusuan
bc p6,pow_386
shhm:
clr some4
clr addr
call dtmfx
jbc jiance,7 ;十秒内有没有拨号?
jmp outx ;no
mov a,some3
mov chb,a
mov a,@0x0a
xor a,some3
jbc status,zero
jmp shhm
mov a,@0x0b
xor a,some3
jbc status,zero
jmp shhm
mov a,@0x0c
xor a,some3
jbc status,zero
jmp shhm
shhmna:
call dtmfx
jbc jiance,7 ;十秒内有没有拨号?
jmp outx
mov a,@0x0c
xor a,some3
jbc status,zero
jmp mmxf ;出现#,嘀,提示后输入号码。
mov a,some3
mov chb,a
jmp shhmna
mmxf:
bs p6,pow_386
call dudoble
bc p6,pow_386
bc status,5
bc status,6
call sc_003
bs status,6
bc status,5
mov a,@0xe1
mov r4,a
wqbz:
call dtmfx
jbc jiance,7 ;十秒内有没有拨号?
jmp outx ;no
mov a,some3
mov r0,a
mov a,@0x0c
xor a,some3
jbc status,zero
jmp zrcc ;出现#,输号码结束。
inc r4
mov a,@1
add some4,a
jmp wqbz
;转入存储。
zrcc:
inc r4
mov a,@0x0d
mov r0,a ;结尾用0x0d做标志,表示拨完号码。
mov a,@2
add some4,a
mov a,some4 ;号码的位数,some4+2
mov addr,a
mov a,@0xe0
mov r4,a
mov a,some4
mov r0,a
mov a,@0x0f
and chb,a
swap chb
bs status,5
bs status,6
call wrtbyte
bs status,5
bs status,6
call di11;wu
bs status,6
bc status,5
call dtmfx
jbc jiance,7 ;十秒内有没有拨号?
jmp outx ;no
mov a,some3
mov r0,a
mov a,@0x0c
xor a,some3
jbc status,zero
jmp yjch ;出现#,输号码结束。
clr some4
mov a,some3
mov chb,a
mov a,@0x0a
xor a,some3
jbc status,zero
jmp shhm
mov a,@0x0b
xor a,some3
jbc status,zero
jmp shhm
jmp shhmna
dtmfx:
mov a,@38
mov some0,a
dtmfa:
mov a,@250
mov some1,a
dtmfb:
mov a,@250
mov some2,a
dtmfc:
nop
mov a,@0b00001100
iow p5
jbs p5,swshuma
jmp fxqao
mov a,@0b00001000
iow p5
jbc p6,ena92
jmp trca
djz some2
jmp dtmfc
djz some1
jmp dtmfb
djz some0
jmp dtmfa
fxqao:
bs jiance,7
ret
trca:
jbs p6,ena92
jmp aatx
clr some3
jbc p6,q1
bs some3,carry
jbs p6,q1
bc some3,carry
jbc p6,q2
bs some3,pin1
jbs p6,q2
bc some3,pin1
jbc p7,q3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -