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

📄 9297-03.asm

📁 单片机程序
💻 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 + -