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

📄 dialer.asm

📁 自动拨号器程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                        ret
				
;**************************************************************
Sub_Call:
				acall	Read_EEPROM
                                MOV     R0,Stack_Pointer
                                MOV     @R0,Run_Address
                                MOV     Run_Address,Read_Data
                                INC     Stack_Pointer
				RET
				
;**************************************************************
Sub_Return:
                                DEC     Stack_Pointer
                                MOV     R0,Stack_Pointer
                                MOV     Run_Address,@R0
				RET
				
;**************************************************************
Sub_Wait:
                                MOV     Delay_Counter,Read_Data
                                acall   Delay_Seconds
				RET
				
;**************************************************************
Sub_Ring:

                                SETB    Call_Back
                                clr     disconnect
                                setb    off_hook
                                MOV     Second_Counter,#0
                                MOV     mS_Counter,#0
Wait_Ring:
                                JB      Call_Back,Wait_No_Ring
                                MOV     A,#50
                                CLR     C
                                SUBB    A,mS_Counter
                                JNC     Wait_Ring
                                MOV     mS_Counter,#0
                                INC     Second_Counter
                                MOV     A,Second_Counter
				CJNE	A,#Ring_LTD,Wait_Ring
                                INC     Run_Address
				SJMP	Ring_Over
Wait_No_Ring:
				ACALL	Delay_10mS
                                JB      Call_Back,Wait_No_Ring
				ACALL	Read_EEPROM
                                MOV     Run_Address,Read_data
                                MOV     Delay_Counter,#2
                                ACALL   Delay_Seconds
Ring_Over:
				RET
;***************************************************************
DETECT_200ms:
                Setb    Tone_Detect
                clr     FTone200ms
                clr     FTone200ms1
                mov     AgainCmp,#0
                MOV     ToneTime,#0
                mov     MuteTime,#0
                mov     ToneTime2,#0
                mov     MuteTime2,#0
                MOV     Second_Counter,#0
                MOV     mS_Counter,#0
                jnb     Tone_Detect,Tone11
Mute11:         mov     A,MuteTime
;               cjne    a,#45,Mute12
                MOV     A,#30
                CLR     C
                SUBB    A,mS_Counter
                JNC     Mute12
                MOV     mS_Counter,#0
                INC     Second_Counter
                MOV     A,Second_Counter
                CJNE    A,Ring_LTD,Mute12
                ret
Mute12:         jb     Tone_Detect,Mute11
                mov     MuteTime2,MuteTime
                acall   Tonecmp_1
                jz      Toneend1
                mov     ToneTime,#0
Tone11:         mov     A,ToneTime
;               cjne    A,#45,Tone12
                MOV     A,#30
                CLR     C
                SUBB    A,mS_Counter
                JNC     Tone12
                MOV     mS_Counter,#0
                INC     Second_Counter
                MOV     A,Second_Counter
                CJNE    A,Ring_LTD,Tone12
                ret
Tone12:         jnb    Tone_Detect,Tone11
                mov    ToneTime2,Tonetime
                acall  Tonecmp_1
                jz     Toneend1
                mov    MuteTime,#0
                sjmp   Mute11
Toneend1:
                ret

TERMINAL1:
                ret
;*************************************
Tonecmp_1:
                inc     AgainCMP
                mov     A,AgainCmp
                Cjne    A,#30,Tonecmp11
;                 MOV    DTMF_OUT,#9
;                 ACALL  DIAL_DTMF
;                 MOV    DTMF_OUT,#9
;                 ACALL  DIAL_DTMF
;                 MOV    DTMF_OUT,TONETIME2
;                 ACALL  DIAL_DTMF
;                 MOV    A,TONETIME2
;                 SWAP   A
;                 MOV    DTMF_OUT,A
;                 ACALL  DIAL_DTMF
;                 MOV    DTMF_OUT,MUTETIME2
;                 ACALL  DIAL_DTMF
;                 MOV    A,MUTETIME2
;                 SWAP   A
;                 MOV    DTMF_OUT,A
;                 ACALL  DIAL_DTMF


;                SETB    FTone4
;                SETB    FLAG_UNKNOW
                mov     A,#0h
                RET
ToneCmp11:
                mov     A,ToneTime2
                clr     c
                subb    A,#6
                jc      Findnext11
                mov     A,ToneTime2
                setB     c
                subb    A,#20            ;Ring_Tone                  ;35
                jnc     Findnext11
                mov     A,MuteTime2
                clr     c
                subb    A,#6
                jc     Findnext11
                mov     A,MuteTime2                   ;40
                setb    c
                subb    A,#20       ;Ring_Mute
                jnc     Findnext11

                Setb    FTone200ms
                MOV     FLAG_RED,#5
                CLR     RED_LED
                mov     A,#0

                ret

Findnext11:
                mov     A,#1
                ret
;***************************************************************
Detect_backTone:
Special_Function:

                MOv     FLAG_GREEN,#80
                setB    GREEN_LED
                Mov     Recordnum,#0
                Mov     RecordTime,#0
                MOv     TEMP,RING_LTD
Detect_b1:      Acall   Detect_200ms
                Jnb     FTone200ms,Detect_b2
                mov     ring_ltd,#2
                inc     Recordnum
                sjmp    Detect_b1
Detect_b2:
                Mov     A,Recordnum
                Clr     c
                Subb    A,#6
                Jc      Detect_End
                Mov     A,Recordnum
                Setb    c
                Subb    A,#25
                Jnc     Detect_End
;Detect_ig:     Mov    Recordnum,#0
;               Mov    RecordTime,#0
;               MOV     FLAG_RED,#80
;               CLR     RED_LED
;Detect_b3:     Acall   Detect_200ms
;               Jb      FTone200ms,Detect_B4
;               Mov     a,RecordTime
;               Subb    a,#250
;               INC     RECORDNUM
;               MOV     A,RECORDNUM
;               CJNE    A,#100,DETECT_B3
;               sJmp    Detect_END
;Detect_b4:
;               Mov     A,RECORDNUM
;               CLR     C
;               Subb    A,#3
;               Jc      Detect_End
;               Mov     a,RecordNUM
;               setb    c
;               Subb    a,#8
;               Jnc     Detect_End
                Mov     RecordTime,#0
                MOV     FLAG_RED,#220
                CLR     RED_LED

DELAY2S:        Mov     A,RecordTime
                CJNE    A,#220,DELAY2S
                Mov     Recordnum,#0
                MOV     FLAG_GREEN,#60
                SETB    GREEN_LED
Detect_B5:
                Acall   Detect_200ms
                Jnb     FTone200ms,Detect_B6
                inc     Recordnum
                sjmp    Detect_b5
                mov     recordnum,#0
Detect_b6:
                Mov     A,Recordnum
                Clr     c
                Subb    A,#6
                Jc      Detect_End
                Mov     A,Recordnum
                Setb    c
                Subb    A,#25
                Jnc     Detect_End
                MOV     FLAG_RED,#80
                CLR     RED_LED
                Acall   Read_EEPROM
                MOV     Run_Address,Read_Data
                mov     ring_ltd,temp
                ret
Detect_End:
                inc     Run_Address
                MOV     Ring_LTD,TEMP
                ret

;***************************************************************
X10Times:			
                                MOV     R0,TimesResult
                                MOV     @R0,#0fh
                                MOV     A,@R0
                                RL      A
                                MOV     B,A
                                RL      A
                                RL      A
				ADD 	A,B
                                MOV     @R0,A
				RET
;***************************************************************
X20Times:
				acall	X10Times
                                MOV     R0,TimesResult
                                MOV     A,@R0
                                RL      A
                                MOV     @R0,A
				RET
				
;***************************************************************								
Re_Program_EEPROM:

                                SETB    P2.3
                                clr     P2.2
                                setb    DTMF_DV
WAIT_F_DV:                      Jnb     DTMF_DV,WAIT_F_DV
                                clr    DisConnect
                                setb    off_hook
                                acall   Get_dtmf2
                                ACALL   gET_DTMF2
                                MOV     RUN_ADDRESS,#00H
                                CLR     IE.0
				MOV	Bits_to_Send,#EWEN_Inst
				acall	Send_Instruction
                                MOV     Run_Address,#00H
                                CLR     Config_Flag
Read_Next_Byte:
                                ACALL   Get_DTMF2
				JB	DTMF_Time_Out,JMP_END1
				MOV	Write_Data,DTMF_Input
				MOV	A,Write_Data
				SWAP	A
				MOV	Write_Data,A
                                acall   Get_DTMF2
				JB	DTMF_Time_Out,JMP_END1
				MOV	A,Write_Data
				ORL	A,DTMF_Input
				MOV	Write_Data,A
				acall	Write_EEPROM
                                INC     Run_Address
                                MOV     A,Run_Address
                                JZ      Re_Program_Over
Read_Continue0:			MOV	A,Write_Data
                                CJNE    A,#0FFh,Read_Next_Byte
;                                JNB     Program_CFG,Re_Program_Over
                                MOV     Run_Address,#0f8h
;                                ORL     Config_Flag,#Program_CFG
                                SJMP    Read_Next_Byte
JMP_END1:                       LJMP    Program_END
Re_Program_Over:                setb     DisConnect
				acall	Delay_10ms
;                                MOV     Run_Address,#0
;                                MOV     Check_Sum_Low,#0
;                                MOV     Check_Sum_High,#0
;Verify_EEPROM_Data:
;                                acall   Read_EEPROM
;                                MOV     A,Read_data
;                                CJNE    A,#0ffh,Verify_Continue0
;                                SJMP    Display_Check_sum
;Verify_Continue0:               ADD     A,Check_Sum_Low
;                                JNC     HIGH_BYTE_NO_INC
;                                INC     Check_Sum_High
;HIGH_BYTE_NO_INC:               MOV     Check_Sum_Low,A
;                                MOV     A,Run_Address
;                                CJNE    A,#0FFh,Verify_C1
;                                SJMP    Display_Check_Sum
;Verify_C1:                      acall   Short_Delay
;                                SJMP    Verify_EEPROM_Data
;Display_Check_Sum:
;                                MOV     hold_Time,#0ah
;                                clr    Off_Hook
;                                MOV     X10mS,#50
;                                acall   Delay_10mS
;                                MOV     A,Check_Sum_High
;                                SWAP    A
;                                MOV     DTMF_Out,A
;                                acall   Dial_DTMF
;                                MOV     DTMF_Out,Check_Sum_High
;                                acall   Dial_DTMF
;                                MOV     A,Check_Sum_Low
;                                SWAP    A
;                                MOV     DTMF_Out,A
;                                acall   Dial_DTMF
;                                MOV     DTMF_Out,Check_Sum_Low
;                                acall   Dial_DTMF
;                                MOV     X10mS,#100
;                                acall   Delay_10mS

;*************************************************************
program_END:
                                 setb   disconnect
                                 clr    off_hook
;                                setb    red_led
;                                setb    green_led
;                                 acall   detect_backtone
;                                setb     green_led
;                                setb     red_led
GG:                              JMP      gg

;                                 acall  DETECT_Line_Status
;                                 jnb     flag_busy,ne2
;                                 setb     p2.3
;                                 clr      p2.2
;                                 jmp     program_end
;ne2:                             jnb     flag_connect,ne3
;                                 clr     p2.3
;                                 setb    p2.2
;                                 jmp     program_end
;ne3:                             jnb     flag_unknow,ne4
;                                 clr     p2.3
;                                 clr     p2.2
;                                 jmp     program_end
;ne4:                             setb    p2.3
;                                 setb    p2.2
;                                 jmp     program_end
;Main Program end here
;                                 clr    off_hook
;                                 clr    disconnecT
;                                 SETB    DTMF_INABLE

Program_Compared:

;                                MOV     X10mS,#20
;                                acall   Delay_10mS
;                                setb    DisConnect
;                                setb    Off_Hook
;                                MOV     Bits_to_Send,#EWDS_Inst
;                                acall   Send_Instruction
				nop
				nop
Halt_Here:           SJMP       Halt_Here
                                END
				
				
								
				
	
				
			
				
						

				
		
				


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -