?? fax.asm
字號:
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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -