⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 baojing.dt

📁 这是电话智能报警器的源程序,不过有点老了,已经生产了6年多.
💻 DT
📖 第 1 页 / 共 5 页
字号:
         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 + -