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

📄 fax.asm

📁 智能电话系统的全部C-51,ASM51源程序 内部文件较多
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                SETB    P1.4
rmc1:           mov     dptr,#rtc_pstu
                movx    a,@dptr
                jb      acc.7,rmc1
                mov     dptr,#rtc_psec
                movx    a,@dptr
                lcall   bcdtodec
                mov     r5,a
                inc     dptr
                inc     dptr
                movx    a,@dptr
                lcall   bcdtodec
                mov     b,#60              ;; change min to sec                                     
                mul     ab
                mov     r7,a
                mov     r6,b
                lcall   dupadd
                pop     p1
                pop     dph
                pop     dpl
                ret
;========================================
;=    dupadd:                           =
;=     enter: int x ( r6,r7 )           =
;=            char y  ( r5  )           =
;=            addc (x,y)                =
;=    return: to r6     r7              =
;========================================
dupadd:
             clr      c
             mov      a,r5
             add      a,r7
             mov      r7,a
             clr      a
             addc     a,r6
             mov      r6,a
                ret

;
initrtm:        nop
		push    p1
                setb    p1.4
;       
		mov     dptr, #rtc_pctl
		mov     a, #8ah
		movx    @dptr, a
		mov     dptr, #rtc_pstu
		mov     a, #7fh
		movx    @dptr, a
		nop
		mov     dptr,#rtc_ppwr
		movx    a,@dptr
		jnb     acc.7,irlop0
		ljmp    irlop2
;
irlop0:         mov     dptr, #rtc_psec
		mov     a, r0
		push    acc
;
		mov     r0, #06h
irlop1:         mov     a, #0h
		movx    @dptr, a
		inc     dptr
		djnz    r0, irlop1
;
		mov     a, #01h         ;1996,09,23,monday
		movx    @dptr, a
		inc     dptr
		mov     a, #04
		movx    @dptr, a
		inc     dptr
		mov     a, #11
		movx    @dptr, a
		inc     dptr
		mov     a, #96
		movx    @dptr, a
;                
		mov     dptr, #rtp_syear
		mov     a, #19
		movx    @dptr, a
;
		pop     acc
		mov     r0, a
		nop
;
irlop2:         nop
		mov     dptr, #rtc_pstu
		mov     a, #2bh                 ;32.125us  ;#26h
		movx    @dptr, a
		mov     dptr, #rtc_pctl
		mov     a, #02h
		movx    @dptr, a
;
		pop     p1
		ret
;
;############################################################################
;       entry:          initsio
;       function:       initializing 8031 rs-232 with 9600,n,8,1
;       registers used: tmod, th1, tl1, tr1, scon, ti, ri, sbuf
;############################################################################
;
initsio:        mov     tmod,#21h
		mov     th0, #80h
		mov     tl0, #0h
;
		mov     th1,#siorate
		mov     tl1,#siorate
;
		setb    tr0
		setb    tr1
;
		setb    ps                      ;1996,09,26
                clr     22h.0
;
		mov     scon,#70h
		ret
;
;############################################################################
;       entry:          initfax
;       function:       initialization modem
;############################################################################
;
initfax:        push    p1
		push    acc
		push    dpl
		push    dph
;
		lcall   resetfax
;
;       2400 bps
;       modem control
                setb    p1.4
		mov     dptr, #r3fc
		mov     a, #0bh
		movx    @dptr, a
;
		mov     dptr, #r3fb
		mov     a, #80h
		movx    @dptr, a
;
		mov     dptr, #r3f8
		mov     a, #faxrate
		movx    @dptr, a
; 
		mov     dptr, #r3f9
		mov     a, #00h
		movx    @dptr, a
;
;       #03h->8,n,1, #0ah->7,o,1, #1ah->7,e,1
		lcall   getfunc
		cjne    a, #func_vt100, bits8
		mov     a, #frmt8n               ;#1ah->7,e,1
		sjmp    setrate
;
bits8:          mov     a, #frmt8n               ;#03h->8,n,1
setrate:        mov     dptr, #r3fb
		movx    @dptr, a
;
;       interrupt when receive buffer full
		mov     dptr, #r3f9
		mov     a, #0dh  ;0dh for line status, recv. full, modem status
		movx    @dptr, a
;
;                setb    et0
		setb    ex1
;                setb    es
;
		setb    px1
;               setb    px0    ;modified on 1/12/96
;
		setb    ea
;
;       initialization string
		mov     r0, #01h
		lcall   delay
		mov     dptr, #initstr
		lcall   sendcmd
;
;                mov     dptr, #modemvoc
;                movx    a, @dptr
;               jz      novoice
		mov     dptr, #speakon
		lcall   sendcmd
		mov     dptr, #smallvoc
		lcall   sendcmd
		sjmp    sldelay
;novoice:        mov     dptr, #speakoff
;                lcall   sendcmd
;
sldelay:        mov     r0, #01h
		lcall   delay
;
;                pop     acc
;                pop     acc
                pop     dph
		pop     dpl
		pop     acc
		pop     p1
;
		ret
;############################################################################
;       entry:          sendcmd
;       function:       sending command strings end with null( in rom )
;       input:          dptr pointer to the buffer to be transmitted
;       registers used: dptr
;############################################################################
;
sendcmd:        push    p1
                setb    p1.4
;
		push    acc
;               
nextchar:       push    dpl
		push    dph
;
;       reading line status register
loopchk:        mov     dptr, #r3fd
		movx    a, @dptr
		jb      acc.0, echobk
		jb      acc.1, echobk
		jb      acc.2, echobk
		jb      acc.3, echobk
		jb      acc.4, echobk
		jnb     acc.5, loopchk
		ljmp    sendbyte
;
echobk:         mov     dptr, #r3f8
		movx    a, @dptr
		ljmp    loopchk
;
sendbyte:       pop     dph
		pop     dpl
;
		mov     a, #0h
		movc    a, @a+dptr
		jz      endsend
;
		inc     dptr
;               
		push    dpl
		push    dph
;
;       sending a byte to data port
		mov     dptr, #r3f8
		movx    @dptr, a
;
		pop     dph
		pop     dpl
;
		ljmp    nextchar
;
endsend:        pop     acc
		pop     p1
;
		ret
;

;############################################################################
;       entry:          delay
;       function:       delay
;       input:          r0 seconds
;############################################################################
delay:          push    acc
		push    dpl
		push    dph
;
		mov     dph, #0h
		mov     dpl, r0
		lcall   setupcnt
;
;       check #timeout
waitdely:       lcall   timovflw
		jnc     waitdely
;
		pop     dph
		pop     dpl
		pop     acc
		ret
;
;########################################################################
;#      subroutine: timovflw                                            #
;#      entry : none                                                    #
;#      return: if c=0 no overflow ; unless c=1                         #
;########################################################################
;
timovflw:       push    acc
		push    b
		push    p1
		push    dph
		push    dpl
                setb    p1.4
;
		mov     dptr, #rtp_cnth
		movx    a, @dptr
		jnz     toflp0
		mov     dptr, #rtp_cntl
		movx    a, @dptr
		jnz     toflp0
		setb    c
		ljmp    tofexit
;
toflp0:         lcall   chkrtuip
		mov     dptr, #rtc_psec
		movx    a, @dptr
		lcall   bcdtodec
		push    acc
		mov     b, a
		mov     dptr, #rtp_osec
		movx    a, @dptr
		xch     a, b
		movx    @dptr, a        ; save new sec.
		clr     c
		subb    a, b
		jnc     toflp1
		pop     acc
		add     a, #3ch
		clr     c
		subb    a, b
		ljmp    toflp2
;
toflp1:         pop     b 
toflp2:         jnz     toflp3
		clr     c
		ljmp    tofexit
;
toflp3:         mov     b, a
		mov     dptr, #rtp_cntl
		movx    a, @dptr
		clr     c
		subb    a, b
;
		jc      toflp6
		movx    @dptr, a
		jz      toflp4
		clr     c
		ljmp    tofexit
;
toflp4:         mov     dptr, #rtp_cnth
		movx    a, @dptr
		clr     c
		jnz     toflp5
		setb    c
toflp5:         ljmp    tofexit
;
toflp6:         movx    @dptr, a
		mov     dptr, #rtp_cnth
		movx    a, @dptr
		jnz     toflp7
		mov     a, #0h
		movx    @dptr, a
		mov     dptr, #rtp_cntl
		movx    @dptr, a
		setb    c
		ljmp    tofexit
;
toflp7:         clr     c
		subb    a, #1h
		movx    @dptr, a
		clr     c
;               
tofexit:        pop     dpl
		pop     dph
		pop     p1
		pop     b
		pop     acc
		ret
;
;########################################################################
;#      subroutine: chkrtuip                                            #
;#      entry : none                                                    #
;#      return: none                                                    #
;########################################################################
;
chkrtuip:       push    acc
		mov     dptr, #rtc_pstu
crplp0:         nop
		nop
		movx    a, @dptr
		jb      acc.7, crplp0
		pop     acc
		ret
;
;########################################################################
;#      subroutine: bcdtodec                                            #
;#      entry : a - bcd                                                 #
;#      return: a - dec                                                 #
;########################################################################
;
bcdtodec:       push    b
		push    acc
		anl     a, #0f0h
		jnz     btdlp0
		pop     acc
		ljmp    btdlp1
;
btdlp0:         swap    a
		mov     b, #6h
		mul     ab
		mov     b, a
		pop     acc
		clr     c
		subb    a, b
;
btdlp1:         pop     b
		ret
;

;########################################################################
;#      subroutine: setupcnt                                            #
;#      entry : dptr - count value                                      #
;#      return: none                                                    #
;########################################################################
;
setupcnt:       push    acc
		push    p1
		push    dph
		push    dpl
                setb    p1.4
;
		mov     dptr, #rtp_cntl
		pop     acc
		movx    @dptr, a
		mov     dptr, #rtp_cnth
		pop     acc
		movx    @dptr, a
;
		lcall   chkrtuip
		mov     dptr, #rtc_psec
		movx    a, @dptr
		lcall   bcdtodec
		mov     dptr, #rtp_osec
		movx    @dptr, a
;               
		pop     p1
		pop     acc
		ret
;

;############################################################################
;       entry:          getfunc
;       function:       get setting of the system
;       return:         function byte in acc
;############################################################################
;
getfunc:        push    p1
		push    dpl
		push    dph
		mov     p1, #hi_mem
		mov     dptr, #funcpointer
		movx    a, @dptr
		pop     dph
		pop     dpl
		pop     p1
		ret
;

;############################################################################
;               entry:  resetfax
;############################################################################
;
resetfax:       push    p1
		push    acc
		push    dpl
		push    dph
;
		mov     p1, #hi_mem
		mov     dptr, #chnword
		movx    a, @dptr
		clr     acc.7                   ;reset fax/modem
		movx    @dptr, a
;
                setb    p1.4
		mov     dptr, #chnport
		movx    @dptr, a
;
		mov     r0, #02h
		lcall   delay
;
		mov     p1, #hi_mem
		mov     dptr, #chnword
		movx    a, @dptr
		setb    acc.7                   ;start fax/modem
		movx    @dptr, a
;
                setb    p1.4
		mov     dptr, #chnport
		movx    @dptr, a
;
		mov     r0, #02h
		lcall   delay
;
		pop     dph
		pop     dpl
		pop     acc
		pop     p1
		ret
;

;
            COMMON    INTVEC
            ORG       $ + 13H
            LJMP      extnlint
            RSEG      RCODE
;*************************************************************************
;       entry:  extnlint
;############################################################################
;
extnlint:       push    psw
		push    p1
		push    b
		push    acc
		push    dpl

⌨️ 快捷键说明

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