📄 9297-03.asm
字号:
;*****************************************
;2005.5.19 XTEAL 12MHz
;MCU: AT89c52
;changed at 2005.5.19
;*****************************************
;* VISION 1.0 *
;* 19/5-05 *
;* FOR PCB VERSION 4.0 *
;* CODER USE T0 AND T2 *
;* ADD Z-AXIS CHECK *
;* REAL CODE *
;* DENSITY MEASURE ADDED *
;*****************************************
;+++++++++++++++++++++++++++++++++
;receiving register and I/O definiens
; use HT9170
;+++++++++++++++++++++++++++++++++
DA0 BIT P1.4
DA1 BIT P1.3
DA2 BIT P1.2
DA3 BIT P1.1
DV BIT P1.0
OE BIT P2.4
RINGDET BIT P3.2
;INH BIT PB.2 ;low start
;PWDN BIT PB.3 ;low start
OUT_CODE EQU 45H
;+++++++++++++++++++++++++++++++++
;send register and I/O definiens
;use HT9200A
;+++++++++++++++++++++++++++++++++
CE BIT P2.2
DATAK BIT P2.1
CLK BIT P2.0
DP BIT P2.5
; COUNT EQU 40H
; BUFFER EQU 41H
; BIT_COUNT EQU 42H
SEND_DATA EQU 43H
;
;;;;;;;;;;;;;;;;;;;;
;; PROGRAM INPUT ;;
;;;;;;;;;;;;;;;;;;;;
;
ORG 00H
JMP BEGIN
;ORG 0023H
;jmp sio
org 030h
;;;;;;;;;;;;;;;;;;;;
;; PROGRAM CLEAR ;;
;;;;;;;;;;;;;;;;;;;;
;上电初始化程序
BEGIN: ; MOV SP,#58H
CLR DP
mov tmod, #20h
mov th1,#0e6h ;e6 1200
mov tl1,#0e6h ;e6 1200
mov scon, #050h
anl pcon, #7fh
setb tr1
CLR EA
CHECKING: CALL CLEAR
; CALL DELAY1
CHECKING1: JNB RINGDET,RECEIVING
SJMP CHECKING1
RECEIVING: CALL DELAY3
JB RINGDET,CHECKING
SETB DP
CALL DELAY1
CALL DELAY1
;******************************
;发'9'确认连接上
;*******************************
CLR CE
MOV SEND_DATA,#09H ;send '9'
call SEND_BYTE
CALL DELAY1
MOV SEND_DATA,#0FFH
call SEND_BYTE
CALL DELAY1
;********************************
; CALL DELAY1
RECEIVING0: CALL CLEAR1
RECEIVING1: call DELAY ;must have
JNB DV,RECEIVING2
JMP RECEIVING1
RECEIVING2: JB DV,RECDTMF ;CHECKING DMTF SIGNAL
JMP RECEIVING2
RECDTMF:
SETB OE
MOV C,P1.1
RLC A
MOV C,P1.2
RLC A
MOV C,P1.3
RLC A
MOV C,P1.4
RLC A
ANL A,#0FH
CALL ftr0
CLR OE
CJNE A,#0CH,RECEIVING3
;******************************
;发'C'确认接受完信号
;*******************************
CALL DELAY1
CALL DELAY1
CLR CE
MOV SEND_DATA,#0CH ;send 'C'
call SEND_BYTE
CALL DELAY1
MOV SEND_DATA,#0FFH
call SEND_BYTE
CALL DELAY1
;********************************
CLR DP
JMP CHECKING
RECEIVING3: LJMP RECEIVING1
;_______________________________________
CLEAR: setb P2.3
CLR DP
SETB RINGDET ;SETING RINGDET INPUTING
MOV P1,#0FFH
CLR OE
SETB DV ;SETING DV INPUTING
MOV OUT_CODE,#00H
RET
;________________________________________
CLEAR1 :
MOV P1,#0FFH
SETB DV ;SETING DV INPUTING
MOV OUT_CODE,#00H
RET
;________________________________________
CLEARMEN:
CLR CE
START: ; MOV COUNT,#00H
; MOV BUFFER ,#00H
; MOV BIT_COUNT,#00H
MOV SEND_DATA,#00H
CALL DELAY1
SETB DP
CALL DELAY1
CALL DELAY1
SETB CLK
;*******************************
MOV SEND_DATA,#05H ;send 5
call SEND_BYTE
CLR P1.7
CALL DELAY2
SETB P1.7
CALL DELAY2
MOV SEND_DATA,#0FFH
call SEND_BYTE
CALL DELAY2
;********************************
MOV SEND_DATA,#04H ;send '4'
call SEND_BYTE
CLR P1.7
CALL DELAY2
SETB P1.7
CALL DELAY2
MOV SEND_DATA,#0FFH
call SEND_BYTE
CALL DELAY2
;********************************
MOV SEND_DATA,#07H ;send '7'
call SEND_BYTE
CLR P1.7
CALL DELAY2
SETB P1.7
CALL DELAY2
MOV SEND_DATA,#0FFH
call SEND_BYTE
CALL DELAY2
;********************************
MOV SEND_DATA,#08H ;send 8
call SEND_BYTE
CLR P1.7
CALL DELAY2
SETB P1.7
CALL DELAY2
MOV SEND_DATA,#0FFH
call SEND_BYTE
CALL DELAY2
;********************************
MOV SEND_DATA,#09H ;send '9'
call SEND_BYTE
CLR P1.7
CALL DELAY2
SETB P1.7
CALL DELAY2
MOV SEND_DATA,#0FFH
call SEND_BYTE
CALL DELAY2
;********************************
MOV SEND_DATA,#08H ;send '8'
call SEND_BYTE
CLR P1.7
CALL DELAY2
SETB P1.7
CALL DELAY2
MOV SEND_DATA,#0FFH
call SEND_BYTE
CALL DELAY2
;********************************
MOV SEND_DATA,#06H ;send '6'
call SEND_BYTE
CLR P1.7
CALL DELAY2
SETB P1.7
CALL DELAY2
MOV SEND_DATA,#0FFH
call SEND_BYTE
CALL DELAY2
;******************************
MOV SEND_DATA,#09H ;send '9'
call SEND_BYTE
CLR P1.7
CALL DELAY2
SETB P1.7
CALL DELAY2
MOV SEND_DATA,#0FFH
call SEND_BYTE
CALL DELAY2
;********************************
CPL P1.6
CALL DELAY1
CPL P1.6
CALL DELAY1
CPL P1.6
CALL DELAY1
CLR P1.6
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
CALL DELAY1
SETB P1.6
CLR DP
SETB P1.7
JMP START
;===============================================
SEND_BYTE: MOV R3,#05H
MOV A,SEND_DATA
NEXT_BIT: RRC A
JC SEND_1
SEND_0: CLR DATAK
JMP ACT
SEND_1: SETB DATAK
ACT: CLR CLK
NOP
SETB CLK
DJNZ R3, NEXT_BIT
RET
;__________________________________
DELAY: MOV R7,#0
MOV R6,#0
D1: DJNZ R6,$
DJNZ R7,D1
RET
DELAY1: MOV R5,#03H
D2: CALL DELAY
DJNZ R5,D2
RET
DELAY2: MOV R5,#0H
D3: CALL DELAY
DJNZ R5,D3
RET
DELAY3: MOV R5,#1H
D4: CALL DELAY
DJNZ R5,D4
RET
;______________________________
ftr1: mov sbuf,28h
L_wait: jnb ti,L_wait
clr ti
ret
ftr2: mov sbuf,p1
L_wait1: jnb ti,L_wait1
clr ti
ret
ftr0: mov sbuf,A
L_wait0: jnb ti,L_wait0
clr ti
ret
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -