?? code.a51
字號:
INCLUDE reg_52.pdf
STD EQU P1.0 ;DTMF OUTPUT
Q3 EQU P1.1
Q2 EQU P1.2
Q1 EQU P1.3
Q0 EQU P1.4
RING EQU P3.7
LED EQU P3.5
LED2 EQU P3.6
RELAY EQU P0.6 ;Hook sim relay
LOADS EQU P0
LOAD1 EQU P0.0 ;Load Relays
LOAD2 EQU P0.1
LOAD3 EQU P0.2
LOAD4 EQU P0.3
LOAD5 EQU P0.4
LOAD6 EQU P0.5
DSEG ; This is internal data memory
ORG 20H ; Bit adressable memory
DTMF: DS 1
D0 BIT DTMF.0
D1 BIT DTMF.1
D2 BIT DTMF.2
D3 BIT DTMF.3
PASS1: DS 1
PASS2: DS 1
PASS3: DS 1
PASS4: DS 1
TEMP1: DS 1
TEMP2: DS 1
TEMP3: DS 1
TEMP4: DS 1
CSEG ; Code begins here
;---------==========----------==========---------=========---------
; PROCESSOR INTERRUPT AND RESET VECTORS
;---------==========----------==========---------=========---------
ORG 00H ; Reset
MOV SP,#60H
MOV LOADS,#00111111B ;Switch Off all relays
CLR LED
CLR LED2
CALL DELAYS
SETB RING
SETB STD
CLR RELAY
SETB LED
SETB LED2
UPP: JB RING,$ ;chk Tele Ring
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
PICK_PHONE:
CALL DELAYS ;Wait for 4 rings
CALL DELAYS
; CALL DELAYS
; CALL DELAYS
MOV R2,#0AH
TP3: MOV R0,#0FFH
TP2: MOV R1,#0FFH
TP1: JNB RING,SDCD1
DJNZ R1,TP1
DJNZ R0,TP2
DJNZ R2,TP3
AJMP DISCONN
SDCD1: SETB RELAY ;take the phone
CLR LED
REPEAT: SETB STD
MOV R2,#30H
OP3: MOV R0,#0FFH
OP2: MOV R1,#0FFH
OP1: JB STD,DOWN3
DJNZ R1,OP1
DJNZ R0,OP2
DJNZ R2,OP3
AJMP DISCONN
DOWN3: CALL READ
MOV A,DTMF
CJNE A,#01H,DAP1
CPL LOAD1
AJMP DOWN
DAP1: CJNE A,#02H,DAP2
CPL LOAD2
AJMP DOWN
DAP2: CJNE A,#03H,DAP3
CPL LOAD3
AJMP DOWN
DAP3: CJNE A,#04H,DAP4
CPL LOAD4
AJMP DOWN
DAP4: CJNE A,#05H,DAP5
CPL LOAD5
AJMP DOWN
DAP5: CJNE A,#06H,DAP6
CPL LOAD6
AJMP DOWN
DAP6: CJNE A,#0AH,DAP7
MOV LOADS,#00111111B ;Switch Off all relays
AJMP DOWN
DAP7: CJNE A,#0CH,DAP8
AJMP DISCONN
DAP8: CJNE A,#09H,DOWN
MOV LOADS,#00000000B ;Switch ON all relays
AJMP DOWN
DOWN: JB STD,$
AJMP REPEAT
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DISCONN: CLR RELAY
CALL DELAY
SETB LED
AJMP UPP
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DELAYS:
MOV R2,#0AH
EP3: MOV R0,#0FFH
EP2: MOV R1,#0FFH
EP1: NOP
DJNZ R1,EP1
DJNZ R0,EP2
DJNZ R2,EP3
RET
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; READ DTMF TONES
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
READ:
CLR LED2
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: CALL DELAY
SETB LED2
RET
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DELAY:
MOV R0,#0FFH
REP2: MOV R1,#0FFH
REP1: NOP
DJNZ R1,REP1
DJNZ R0,REP2
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -