📄 intercom.a51
字号:
INCLUDE REG_51.PDF
STD EQU P3.0
Q3 EQU P3.1
Q2 EQU P3.2
Q1 EQU P3.3
Q0 EQU P3.4
HOOK2 EQU P3.7
HOOK1 EQU P1.0
RING EQU P1.4
TEL EQU P1.7
TEL1 EQU P1.5
TEL2 EQU P1.6
DSEG ; This is internal data memory
ORG 20H ; Bit adressable memory
DTMF DATA 20H
D0 BIT DTMF.0
D1 BIT DTMF.1
D2 BIT DTMF.2
D3 BIT DTMF.3
STACK: DS 1 ; Stack begins here
CSEG ; Code begins here
;---------==========----------==========---------=========---------
; PROCESSOR INTERRUPT AND RESET VECTORS
;---------==========----------==========---------=========---------
ORG 00H ; Reset
; ---------==========----------==========---------=========---------
; Main routine
; ---------==========----------==========---------=========---------
MOV SP,STACK
MOV P1,#00H
UUP: CLR TEL
CLR TEL1
CLR TEL2
SETB HOOK1
SETB HOOK2
JNB HOOK1,TTEL1
JNB HOOK2,TTEL4
AJMP UUP
TTEL4: AJMP TTEL2
SXS11: AJMP SXS1
TTEL1: SETB TEL2 ;CUT TEL 2
SETB STD
SETB HOOK1
DCD1: JB HOOK1,UUP
JNB STD,DCD1
CALL READ
MOV A,DTMF
CJNE A,#01H,SXS11
SETB STD
JB STD,$
DCD3: JB HOOK1,UUP
JNB STD,DCD3
CALL READ
MOV A,DTMF
CJNE A,#01H,SXS11
SETB TEL ;GIVE RING SIGNAL
CLR TEL2
SETB TEL1
NOP
SETB RING
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CLR RING
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
SETB RING
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CLR RING
CALL DELAY
CLR TEL
CLR TEL1
CLR TEL2
CALL DELAY
SETB HOOK1
JNB HOOK1,$
uup1: AJMP UUP
TTEL2: SETB TEL1 ;CUT TEL 2
SETB STD
SETB HOOK2
DCD2: JB HOOK2,UUP1
JNB STD,DCD2
CALL READ
MOV A,DTMF
CJNE A,#01H,SXS2
SETB STD
JB STD,$
DCD4: JB HOOK2,UUP1
JNB STD,DCD4
CALL READ
MOV A,DTMF
CJNE A,#02H,SXS2
SETB TEL ;GIVE RING SIGNAL
CLR TEL1
SETB TEL2
SETB RING
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CLR RING
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
SETB RING
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
CLR RING
CALL DELAY
CLR TEL
CLR TEL1
CLR TEL2
CALL DELAY
SETB HOOK2
JNB HOOK2,$
AJMP UUP
SXS1: SETB HOOK1 ;WAIT IF OTHER NUMBER DIALLED
JNB HOOK1,$
CLR TEL2
AJMP UUP
SXS2: SETB HOOK2 ;WAIT IF OTHER NUMBER DIALLED
JNB HOOK2,$
CLR TEL1
AJMP UUP
DELAY:
MOV R5,#01H
REP3: MOV R0,#0FFH
REP2: MOV R1,#0FFH
REP1: NOP
DJNZ R1,REP1
DJNZ R0,REP2
DJNZ R5,REP3
RET
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; READ DTMF TONES
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
READ:
MOV DTMF,#00H
SETB Q0
SETB Q1
SETB Q2
SETB Q3
JNB Q0,VB1
SETB D0
VB1: JNB Q1,VB2
SETB D1
VB2: JNB Q2,VB3
SETB D2
VB3: JNB Q3,VB4
SETB D3
VB4: RET
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -