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

📄 dialer.asm

📁 自动拨号器程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;/*********************************************************;/*                    Program  define/settings  here
;/*********************************************************
;Chip  Settings
ACC                     EQU                     0E0H
B                       EQU                     0F0H
PSW                     EQU                     0D0H
SP                      EQU                      81H
IP                      EQU                     0B8H
IE                      EQU                     0A8H
TMOD                    EQU                      89H
TCON                    EQU                      88H
TH0                     EQU                     08CH
TL0                     EQU                     08AH
P0                      EQU                      80H
P1                      EQU                      90H
P2                      EQU                     0A0H
P3                      EQU                     0B0H
TF0                     BIT                     TCON.5
IE0                     BIT                     TCON.1

Stack                   EQU                     10H
TMOD_status             EQU                     01H
TCON_status             EQU                     11H
IE_status               EQU                     03H
IP_status               EQU                     00H
T0_INT_ADDR             EQU                     000BH
INT0_ADDR               EQU                     0003H
P0_status               EQU                     00H
P1_status               EQU                     00H
P2_status               EQU                     00H
;Port  Flags  setting
DTMF_CS    		BIT			P2.7
DTMF_D0			BIT			P0.0
DTMF_D1			BIT			P0.1
DTMF_D2			BIT			P0.2
DTMF_D3			BIT			P0.3
DTMF_RS0		BIT			P2.0

;Eeprom
EEPROM_CS               BIT                     P1.3
EEPROM_SK               BIT                     P1.4
EEPROM_DI               BIT                     P1.5
EEPROM_DO		BIT			P1.6

;Else
DisConnect  		BIT			P2.6
Off_Hook		BIT			P2.5
Tone_Detect		BIT			P2.4
Call_Back               BIT                     P1.2
DTMF_DV                 BIT                     P2.1
DTMF_INABLE             BIT                     P1.7
GREEN_LED               BIT                     P2.3
RED_LED                 BIT                     P2.2

;********************************************************
Short_LTD1		EQU	8
Short_LTD2		EQU	5
D_Pickup_Mute           EQU     100
D_Pickup_Tone           EQU     40
D_Unknow_Tone		EQU	80
D_Ring_Tone             EQU     40
D_Ring_Mute             EQU     40
D_Line_LTD              EQU     75
D_Ring_LTD              EQU     15
D_Input_TimeOut         EQU     6
;*********************************************************
;Config_BGN              EQU     26H

;*********************************************************
DTMF_1                  EQU     01H
DTMF_2                  EQU     02H
DTMF_3                  EQU     03H
DTMF_4                  EQU     04H
DTMF_5                  EQU     05H
DTMF_6                  EQU     06H
DTMF_7                  EQU     07H
DTMF_8                  EQU     08H
DTMF_9                  EQU     09H
DTMF_0                  EQU     0AH
DTMF_Star               EQU     0BH
DTMF_Cross              EQU     0CH
DTMF_A                  EQU     0DH
DTMF_B                  EQU     0EH
DTMF_C			EQU	0FH
DTMF_D			EQU	00H

DTMF_Stop		EQU	38H

Byte_Len		EQU	8
EEPROM_Add_Len          EQU     8
DTMF_Length		EQU	5
Access_Inst_Len         EQU     5
RDWR_Inst_Len           EQU     5

;EEPROM  INSTRUCTIONS
Read_Inst               EQU     60H
Write_Inst              EQU     50H
EWEN_Inst               EQU     4CH
EWDS_Inst               EQU     40H

;FLAG BIT
Flag_Byte               equ     24H
Flag_Byte2              equ     25H
Config_Bytes            equ     26H
PROG_COUNTER            EQU     27H
Read_Data               equ     28h
MT8888C_FLAG            EQU     29H
input_len               equ     2ah
;flag byte settings
DTMF_DV_Low             equ     Flag_Byte.6
DTMF_Time_Out           equ     Flag_Byte.5
Not_Special             equ     Flag_Byte.4
Flag_Connect            equ     Flag_Byte.3
Flag_Busy               equ     Flag_Byte.2
Flag_PickUp             equ     Flag_Byte.1
Flag_Unknow             equ     Flag_Byte.0

;flag 2 byte settings
Program_CFG             equ     Config_Bytes.4
DIAL_FLAG               EQU     FLAG_BYTE2.7
FTone1                  equ     FLAG_BYTE2.6
FTone2                  equ     FLAG_BYTE2.5
FTone3                  equ     FLAG_BYTE2.4
FTone4                  equ     FLAG_BYTE2.3
FTone200ms              equ     FLAG_BYTE2.2
FTone200ms1             equ     FLag_Byte2.1
;GENERAL PURPOSE REGISTER SETTING
Run_Address             equ     41H
X10ms                   equ     42H
Bit_Len                 equ     43H
EEPROM                  equ     44H
Delay_Count1            equ     45H
TimesResult             equ     46H
Config_Loop             equ     47H
mS_Counter              equ     48H
Dial_Total              equ     49H
Config_Pointer          equ     4aH
Delay_Counter           equ     4bH
Get_Total               equ     4cH
Check_Sum_Low           equ     4dH
Check_Sum_High          equ     4eH
Temp                    equ     50H
Dial_From               equ     51H
Stack_Pointer           equ     52H
DTMF_Out                equ     53H
DTMF_Input              equ     54H
Write_Data              equ     55H
Bits_to_Send            equ     57H
;Input_Len              equ     58H
Config_Flag             equ     59H
Dial_Buffer             equ     5aH
Save_Buffer             equ     5bH
Prg_Code_Cmp            equ     5cH
Hold_time               equ     5dH
MuteTime                equ     5eH
ToneTime                equ     5fH
Second_Counter          equ     60H
;RetryTimes             equ     61h
;Busy_Counter           equ     63H
Ring_Tone               equ     64H
Ring_Mute               equ     65H
PickUp_Tone             equ     66H
PickUp_Mute             equ     67H
Line_LTD                equ     68H
Ring_LTD                equ     69H
Time_Out_Limit          equ     6aH
Unknow_Tone             equ     6bH
INPUT_B                 EQU     6CH
INPUT_E                 EQU     6DH
Prg_Code_Bgn            equ     6FH
config_BNG              equ     70H
EEPROM_Config           equ     71H
Delay_Count2            equ     72H
ToneTime2               equ     73h
MuteTime2               equ     74h
AgainCMP                equ     75h
Recordnum               equ     76h
RecordTime              equ     77h
FLAG_RED                EQU     78H
FLAG_GREEN              EQU     79H


Buffer_Add              equ     2bH
Buffer_End              equ     3FH
Stack_Begin             equ     7AH
stack_Top               equ     7fH


;***************************************************
;    Main Program Begins here
;***************************************************
                        ORG             0000h
			LJMP 	Program_Start
	
	                ORG     0003h
                        LJMP    EX0_INT_ENTER

                        ORG     000Bh
                        LJMP    T0_TIME_ENTER
PROG_CODE:
                        DB      DTMF_C
                        DB      DTMF_C
                        DB      DTMF_star
                        DB      DTMF_Cross
                        DB      DTMF_A
                        DB      DTMF_Cross
                        ORG     50H
EX0_INT_ENTER:
                        clr     ie.7
                        push    psw
                        push    Acc
                        SETB    PSW.3
                        SETB    DTMF_RS0
                        MOV     R0,#0
RE_OK:                  MOVX    A,@R0
;                       JNB     ACC.2,RE_OK
                        ORL     A,MT8888C_FLAG
                        MOV     MT8888C_FLAG,A
                        JNB     ACC.2,EXIT_EX1
                        CLR     DTMF_RS0
                        MOVX    A,@R0
                        ANL     A,#0FH
                        MOV     DTMF_Input,A
                        INC     Input_Len
                        MOV     A,Input_Len
                        RRC     A
                        JC      Input_O
                        MOV     R1,Save_Buffer
                        MOV     A,@R1
                        ORL     A,DTMF_Input
                        MOV     @R1,A
                        MOV     A,Save_Buffer
                        INC     INPUT_E
                        CJNE    A,#Buffer_End,Input_No
                        MOV     Save_Buffer,#Buffer_Add
                        MOV     INPUT_E,#00H
                        SJMP    EXIT_EX0
Input_No:               INC     Save_Buffer
                        sjmp    exit_ex0

Input_O:
                        MOV     A,DTMF_Input
                        SWAP    A
                        MOV     R1,Save_Buffer
                        MOV     @R1,A
                        INC     INPUT_E
EXIT_EX0:
                        MOV     DPTR,#PROG_CODE
                        MOV     A,PROG_COUNTER
                        MOVC     A,@A+DPTR
                        ANL     A,#0FH
                        CJNE    A,DTMF_INPUT,NO_SAME
                        INC     PROG_COUNTER
                        MOV     A,PROG_COUNTER
                        CJNE    A,#6,EXIT_EX1
                        POP     Acc
                        POP     PSW
                        POP     Acc
                        POP     Acc
                        CLR     IE.0
                        LJMP    RE_PROGRAM_EEPROM
NO_SAME:                MOV     PROG_COUNTER,#0

EXIT_EX1:               CLR     MT8888C_FLAG.2
                        pop     Acc
                        POP     PSW
                        SETB    IE.7
                        reti


T0_TIME_ENTER:          clr     ie.7
                        push    psw
                        jb      flag_byte.7,out_put1
                        setb    P3.4
                        setb    flag_byte.7
                        MOV     TH0,#0D9h
                        MOV     TL0,#00h
                        POP     PSW
                        setb    ie.7
                        reti
out_put1:
                        clr     P3.4
                        clr     flag_byte.7
                        INC     mS_Counter
                        INC     ToneTime
                        INC     MuteTime
                        INC     RecordTime
                        DJNZ    FLAG_RED,CMPGREEN
                        SETB    RED_LED
CMPGREEN:               DJNZ    FLAG_GREEN,CMPLEDOVER
                        CLR     GREEN_LED
CMPLEDOVER:
                        MOV     TH0,#0D9H
                        MOV     TL0,#00H
                        POP     PSW
                        setb    ie.7
                        reti

Program_Start:
                        MOV    P0,#P0_status
                        MOV    P1,#P1_status
                        MOV    P2,#P2_status
                        setb   off_hook
                        setb   Disconnect
                        SETB   DTMF_INABLE
                        MOV    R0,#7fH
CLEAR_BUF:
                        MOV    A,#0
                        MOV    @R0,A
                        DJNZ   R0,CLEAR_BUF
                        CLR    IE.7
                        SETB   IE.1
                        SETB   IE.0
                        MOV    SP,#Stack
                        MOV    TMOD,#TMOD_status
                        MOV    TCON,#TCON_status
                        MOV    IP,#IP_status
                        SETB   DTMF_CS
                        MOV    Time_Out_Limit,#D_Input_TimeOut
                        MOV    PickUp_Mute,#D_Pickup_Mute
                        MOV    PickUP_Tone,#D_Pickup_Tone
                        MOV    Unknow_Tone,#D_Unknow_Tone
                        MOV    Ring_Tone,#D_Ring_Tone
                        MOV    Ring_Mute,#D_Ring_Mute
                        MOV    Line_LTD,#D_Line_LTD
                        MOV    Ring_LTD,#D_Ring_LTD
                        mov    Run_Address,#0
                        acall  Read_EEPROM
                        MOV    A,READ_DATA
                        CJNE   A,#01,NO_READ_CONFIG
                        MOV    Run_Address,#0f8h
                        MOV    Config_Loop,#7
                        MOV    Config_Pointer,#Ring_Tone
                        MOV    R0,Config_Pointer
Get_Next_Config:
                       ACALL  Read_EEPROM
                       MOV    A,Read_Data
                       mov    @R0,A
                       inc    R0
                       DJNZ   Config_Loop,Get_Next_config
;                       MOV    TimeResult,#Ring_Tone
;                       acall  X10Times
;Read_Hold:
 ;                      MOV    Run_Address,#0
;                       ACALL  Read_EEPROM
 ;                      MOV    Hold_Time,Read_Data
NO_READ_CONFIG:         MOV    Stack_Pointer,#Stack_Begin
                        MOV    Prg_Code_Cmp,#0
                        MOV    X10mS,#1
                        acall  Sub_ResetBuff
                        MOV    INPUT_B,#00H
                        MOV    INPUT_E,#00H
                        MOV    PROG_COUNTER,#0H
;                       MOV    A,Hold_Time
;                       MOV    Temp,A
;                       ANL    A,#1FH
;                       MOV    Hold_Time,a


                        CLR    DTMF_CS
                        SETB   DTMF_RS0
                        MOV    X10mS,#10
                        ACALL  Delay_10mS
                        MOV    A,#0ch         ;/*1100   Control Register A
                        MOV    R0,#00h
                        MOVX   @R0,A
                        MOV    A,#01h         ;/*0001   Control Register B
                        MOVX   @R0,A
;                        ACALL  Delay_10mS
;                        MOV    A,#0Dh         ;/*1101   B3B2B1B0
;                        MOV    R0,#00h
;                        MOVX   @R0,A
;                        MOV    A,#0
;                        MOVX   @R0,A

                        MOV    bits_to_send,#EWEN_Inst
                        acall  Send_Instruction
                        mov    A, #0ffh
                        mov    Temp, A
                        MOV    Run_Address,#01H
                        mov    x10ms,#10
                        acall  DELAY_10MS
                        SETB    DTMF_RS0
                        MOV     R0,#0
                        MOVX    A,@R0
                        CLR     TF0
                        CLR     IE0
                        SETB    IE.7
                        CLR     GREEN_LED
                        SETB    RED_LED

;                        LJMP   Re_Program_EEPROM
;****************************************************************************
;                       Main  Program Begins  Here
;                       Run   in  Parallel   mode
;****************************************************************************
Run_EEPROM_Para:
                        acall  Read_EEPROM

⌨️ 快捷键说明

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