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

📄 code.a51

📁 telephone line control telephone line control
💻 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 + -