|
ORG 0000H
LJMP SETUP
ORG 0003H
LJMP INEX0P
ORG 000BH
LJMP INET0P
ORG 00013H
LJMP INEX1P
ORG 0030H
SETUP: MOV 7AH,#21
MOV 7BH,#43
;密码初值
MOV R0,#3
;3次密码错挂机
MOV R1,#2
;2声500HZ信号音
MOV R2,#0
MOV R3,#2
MOV 7FH,#0FFH
MOV TMOD,#01H
MOV TH0,#60
MOV TL0,#176
;50ms初值
SETB TR0
SETB P3.2
SETB IT0
SETB IT1
;选择下降沿触发
SETB EX0
SETB EA
MAIN: LCALL
JM
;调解码子程序
LCALL
Password
;调密码校验子程序
LCALL
CONTROL
;调控制子程序
SJMP MAIN
INEX0P: DJNZ R3,CC
LCALL
DELAY
LCALL
DELAY
;延时24s
SETB P3.6
;模拟摘机
CC: CLR EX0
SETB ET0
INET0P: MOV TH0,#60
MOV TL0,#176
INC R2
CJNE R2,#100,NIS
;判断是否到5s,这一步主要判断主叫方是否误操作
SETB EX0
NIS:
RET1
JM:
JB P3.3,NIS1
SETB TOE
;输出Q4~Q1
RET
Password: MOV C,P0.0
MOV 00H,C
MOV C,P0.1
MOV 01H,C
MOV C,P0.2
MOV 02H,C
MOV C,P0.3
MOV 03H,C
MOV C,P0.4
MOV 04H,C
MOV C,P0.5
MOV 05H,C
MOV C,P0.6
MOV 06H,C
MOV C,P0.7
MOV 07H,C
MOV A,20H
CJNE
A,7AH,FALSE
MOV C,P0.0
MOV 08H,C
MOV C,P0.1
MOV 09H,C
MOV C,P0.2
MOV 10H,C
MOV C,P0.3
MOV 11H,C
MOV C,P0.4
MOV 12H,C
MOV C,P0.5
MOV13H,C
MOV C,P0.6
MOV 14H,C
MOV C,P0.7
MOV 15H,C
MOV A,21H
CJNE
A,7BH,FALSE
NIS1: RET
CONTROL: MOV R4,#16
MOV
A,P1
CPL
A
AA:
DJNZ R4,NIS1
DEC 7FH
CJNE A,7FH,AA
MOV P2,7FH
RET
DELAY:
MOV R5,#192
;延时12s
DEL2: MOV R6,#0
DEL1: MOV R7,#0
DEL:
DJNZ R7,DEL
DJNZ R6,DEL1
DJNZ R5,DEL2
RET
FALSE: DJNZ R0,GJ
;3次密码错挂机
MOV TH0,#252
MOV TL0,#24
;1mS定时
CPL P0.0
DJNZ R1,FALSE
;2声500HZ代表“密码错误”(可以在原电路将P0.0引脚连到电话线上)
LJMP Password
GJ: CLR P3.6
;挂机子程序
RET
END
[ 本帖最后由 TSB53 于 2009-4-22 17:49 编辑 ]
|
赞赏
-
1
查看全部赞赏
-
|