📄 sumbase1.asm
字号:
;********* define address **********************
TEMP_DATA equ 00h
STANDBY_COUNT equ 30h
SEND_DATA1 equ 31h
SEND_DATA2 equ 32h
SEND_DATA3 equ 33h
STANDBY equ 00h
TX_STATUS equ 01h
DIVCE_POWER equ p2.0
RX_SW equ p2.1
TX_INDICATE equ p2.2
STB_INDICATE equ p2.3
TX_SW equ p2.4
DATA_TERM equ p3.0
CLOCK_TERM equ p3.1
LD_INDICATE equ p3.4
CS_INDICATE equ p3.5
STB_TERM equ p3.6
;********* define data **********************
TX_PROGDIV_DATA1 equ 00h
TX_PROGDIV_DATA2 equ 0a7h
TX_PROGDIV_DATA3 equ 51h
REFDIV_DATA1 equ 00h
REFDIV_DATA2 equ 0d0h
REFDIV_DATA3 equ 0cch
TX_OPTIONAL_DATA1 equ 00h
TX_OPTIONAL_DATA2 equ 80h
TX_OPTIONAL_DATA3 equ 19h
RX_PROGDIV_DATA1 equ 00h
RX_PROGDIV_DATA2 equ 4dh
RX_PROGDIV_DATA3 equ 92h
RX_OPTIONAL_DATA1 equ 00h
RX_OPTIONAL_DATA2 equ 0c0h
RX_OPTIONAL_DATA3 equ 19h
INTERRUPT_ENABLE equ 82h
INTERRUPT_DISABLE equ 02h
TR0_ENABLE equ 01h
SCAN_P13 equ 11110111B
SCAN_P14 equ 11101111B
NULL_KEY equ 00h
TX_KEY equ 22h
SEND_DATA_TIMERS equ 03h
SCAN_TIMERS equ 03h
;****************************************************************
org 00h
jmp startini
org 0bh
jmp inttr0
startini:
mov sp,#70h
mov p0,#0ffh
mov p1,#0ffh
mov ie,#INTERRUPT_ENABLE
mov tmod,#TR0_ENABLE
mov th0,#0c5h
mov tl0,#68h
mov STANDBY_COUNT,#00h
call delay2
setb TX_SW ;TX Disable
setb RX_SW
;clr TX_STATUS
setb DIVCE_POWER
setb STB_INDICATE
setb STANDBY
nop
mov SEND_DATA1,#00000000b
mov SEND_DATA2,#00000000b
mov SEND_DATA3,#00000000b
call senddata
call delay1
mov SEND_DATA3,#00000011b
call senddata
call delay1
mov SEND_DATA2,#00000000b
mov SEND_DATA3,#00000010b
call senddata
call delay1
mov SEND_DATA3,#00000001b
call senddata
call delay2
nop
clr RX_SW
nop
clr STB_TERM
mov SEND_DATA1,#REFDIV_DATA1
mov SEND_DATA2,#REFDIV_DATA2
mov SEND_DATA3,#REFDIV_DATA3
call senddata
call delay1
mov SEND_DATA1,#RX_OPTIONAL_DATA1
mov SEND_DATA2,#RX_OPTIONAL_DATA2
mov SEND_DATA3,#RX_OPTIONAL_DATA3
call senddata
call delay1
mov SEND_DATA1,#TX_PROGDIV_DATA1
mov SEND_DATA2,#TX_PROGDIV_DATA2
mov SEND_DATA3,#TX_PROGDIV_DATA3
call senddata
call delay1
mov SEND_DATA1,#RX_PROGDIV_DATA1
mov SEND_DATA2,#RX_PROGDIV_DATA2
mov SEND_DATA3,#RX_PROGDIV_DATA3
call senddata
call delay2
call delay1
clr CLOCK_TERM
clr DATA_TERM
call delay2
setb tr0
wait:
mov SEND_DATA1,#RX_OPTIONAL_DATA1
mov SEND_DATA2,#RX_OPTIONAL_DATA2
mov SEND_DATA3,#RX_OPTIONAL_DATA3
call senddata
call delay2
call main
jb LD_INDICATE,wait
call setrxstatus
call delay2
jmp wait
main:
jb CS_INDICATE,maincs
clr STB_INDICATE
clr DIVCE_POWER
jmp mainover
maincs:
setb DIVCE_POWER
setb STB_INDICATE
mainover:
ret
inttr0:
push acc
push psw
mov ie,#INTERRUPT_DISABLE
mov th0,#0c5h
mov tl0,#68h
mov p1,#0ffh
nop
nop
mov a,p1
mov p1,#0ffh
cjne a,#0ffh,intover
jmp over
intover:
call settxstatus
call delay2
clr DIVCE_POWER
setb RX_SW
clr TX_INDICATE
retxstatus:
call settxstatus
txstatus:
jnb LD_INDICATE,retxstatus
call delay2
mov p1,#0ffh
nop
nop
mov a,p1
cjne a,#0ffh,txstatus
setb TX_INDICATE
setb TX_SW
clr RX_SW
setb DIVCE_POWER
over:
mov ie,#INTERRUPT_ENABLE
setb tr0
pop psw
pop acc
reti
settxstatus:
mov ie,#INTERRUPT_DISABLE
clr STB_TERM
mov SEND_DATA1,#REFDIV_DATA1
mov SEND_DATA2,#REFDIV_DATA2
mov SEND_DATA3,#REFDIV_DATA3
call senddata
call delay1
mov SEND_DATA1,#TX_OPTIONAL_DATA1
mov SEND_DATA2,#TX_OPTIONAL_DATA2
mov SEND_DATA3,#TX_OPTIONAL_DATA3
call senddata
call delay1
mov SEND_DATA1,#TX_PROGDIV_DATA1
mov SEND_DATA2,#TX_PROGDIV_DATA2
mov SEND_DATA3,#TX_PROGDIV_DATA3
call senddata
call delay1
mov SEND_DATA1,#RX_PROGDIV_DATA1
mov SEND_DATA2,#RX_PROGDIV_DATA2
mov SEND_DATA3,#RX_PROGDIV_DATA3
call senddata
nop
clr TX_SW
call delay2
settxover:
mov ie,#INTERRUPT_ENABLE
ret
setrxstatus:
mov ie,#INTERRUPT_DISABLE
clr STB_TERM
mov SEND_DATA1,#REFDIV_DATA1
mov SEND_DATA2,#REFDIV_DATA2
mov SEND_DATA3,#REFDIV_DATA3
call senddata
call delay1
mov SEND_DATA1,#RX_OPTIONAL_DATA1
mov SEND_DATA2,#RX_OPTIONAL_DATA2
mov SEND_DATA3,#RX_OPTIONAL_DATA3
call senddata
call delay1
mov SEND_DATA1,#TX_PROGDIV_DATA1
mov SEND_DATA2,#TX_PROGDIV_DATA2
mov SEND_DATA3,#TX_PROGDIV_DATA3
call senddata
call delay1
mov SEND_DATA1,#RX_PROGDIV_DATA1
mov SEND_DATA2,#RX_PROGDIV_DATA2
mov SEND_DATA3,#RX_PROGDIV_DATA3
call senddata
call delay2
setrxover:
mov ie,#INTERRUPT_ENABLE
ret
delay1:
mov r4,#01h
delay1wait1:
mov r3,#6fh
delay1wait0:
nop
djnz r3,delay1wait0
djnz r4,delay1wait1
ret
delay2:
mov r4,#2fh
delay2wait0:
mov r3,#0ffh
delay2wait1:
nop
nop
djnz r3,delay2wait1
djnz r4,delay2wait0
ret
senddata:
setb DATA_TERM
setb CLOCK_TERM
clr STB_TERM
nop
mov scon,#00h
clr es
nop
mov r0,#SEND_DATA1
mov r2,#SEND_DATA_TIMERS
resend:
mov a,@r0
mov sbuf,a
waitres:
jnb ti,waitres
clr ti
inc r0
nop
nop
djnz r2,resend
mov scon,#00h
setb DATA_TERM
nop
clr CLOCK_TERM
nop
nop
setb STB_TERM
nop
nop
clr STB_TERM
nop
nop
setb CLOCK_TERM
nop
setb DATA_TERM
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -