📄 mca.asm
字号:
ORG 0000H ;2002/1/23 this is a program of rxd
LJMP START ;A V
ORG 000bH
LJMP INTT0
ORG 200H
txen bit p3.5
START: mov sp,#60h
CLR RS0
MOV R7,#0FFH
DJNZ R7,$
mov 23h,#00h ;intt0 count
MOV R3,#01H ;RD-COM
MOV TMOD,#21H
MOV TL1,#0F3H
MOV TH1,#0F3H
SETB TR1
MOV 87H,#80H
MOV SCON,#0D8H
mov th0,#3ch
mov tl0,#0b0h
setb et0
setb pt0
setb tr0
setb ea
START1: MOV R2,#00H ;S-ADDR
RDCON: MOV R1,#50H ;RX-BUF
mov r5,#00h ;tx-saddr count
MOV R6,#00H ;AV
MOV 24H,#00H ;WDOG
LCALL MCOM
LCALL BUF1
MOV R7,#0C0H
DISCON1:LCALL DIS ;Ri in 1 area
DJNZ R7,DISCON1
INC R2
CJNE R2,#03H,RDCON
SJMP START1
;--------------------------------------------------
intt0: push acc
push psw
inc 23h
mov a,23h
cjne a,#0ah,exit ;1s
mov 23h,#00h
inc 24h
mov a,24h
clr c
add a,#0fdh
jnc exit
pop psw
pop acc
clr ea
mov dptr,#rst
push dpl
push dph
reti
rst: mov a,#00h
push acc
push acc
reti
exit: mov th0,#3ch
mov tl0,#0b0h
pop psw
pop acc
reti
;---------------------------------------------
MCOM:
TX_ADDR:
setb tb8
MOV A,R2 ;TX-SADDR
clr txen
MOV SBUF,A
JNB TI,$
CLR TI
setb txen
mov r7,#20h
acall xdey
inc r5
cjne r5,#05h,rx_reply
mov r5,#00h
ajmp ec
RX_REPLY:
JBC RI,IF_AGREE ;WAIT SACK
AJMP tx_addr
IF_AGREE:
mov r5,#00h
MOV A,SBUF
XRL A,R2
JZ TX_COMD
COMEBAKE:
MOV A,#0FFH
SETB TB8
clr txen
MOV SBUF,A
JNB TI,$
CLR TI
setb txen
SJMP TX_ADDR
TX_COMD:
CLR TB8
MOV A,R3 ;r3-rdcom
clr txen
MOV SBUF,A
JNB TI,$
CLR TI
setb txen
RX_STATE:
JBC RI,IF_RIGHT
SJMP RX_STATE
IF_RIGHT:
MOV A,SBUF
JNB ACC.7,RECEIVE
SJMP COMEBAKE
RECEIVE:
JNB ACC.1,COMEBAKE
RX_BYTES:
JNB RI,RX_BYTES
CLR RI
MOV A,SBUF
MOV R4,A
MOV @R1,A ;r1: rdbuf
ADD A,R6
MOV R6,A
INC R1
RX_DATA:
JNB RI,RX_DATA
CLR RI
MOV A,SBUF
MOV @R1,A
ADD A,R6
MOV R6,A
INC R1
DJNZ R4,RX_DATA
JNB RI,$
CLR RI
MOV A,SBUF
CJNE A,06H,ER
mov r6,#00h
mov r1,#50h
RET
ER: mov r6,#00h
mov r1,#50h
ACALL BUFER
DISER: ACALL DIS
SJMP DISER
EC: ACALL BUFER
MOV 79H,#16H
AJMP DISER
BUFER: MOV 7EH,#05H
mov a,r2
anl a,#0f0h
swap a
MOV 7DH,a
mov a,r2
anl a,#0fh
MOV 7CH,a
MOV 7BH,#14H
MOV 7AH,#0eh
MOV 79H,#15h
RET
BUF1: MOV 7EH,#05H
mov a,r2
anl a,#0f0h
swap a
MOV 7DH,a
mov a,r2
anl a,#0fh
MOV 7CH,a
MOV 7BH,#14H
mov a,51H
push acc
anl a,#0f0h
swap a
MOV 7AH,a
pop acc
anl a,#0fh
MOV 79H,a
RET
;---------------------------------------------------------
DIS: SETB RS0
MOV A,#00H
MOV R0,#21H
MOVX @R0,A
MOV R0,#7EH
MOV R2,#20H
MOV R3,#00H
MOV DPTR,#LS0
LS2: MOV A,@R0
MOVC A,@A+DPTR
MOV R1,#22H
MOVX @R1,A
MOV A,R2
DEC R1
MOVX @R1,A
DEC R0
LS1: DJNZ R3,LS1
CLR C
RRC A
MOV R2,A
JNZ LS2
INC R1
MOV A,#0FFH
MOVX @R1,A
CLR RS0
RET
LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH,8FH,0Fh
XDEY: PUSH 07H
LP2: PUSH 07H
LP1: PUSH 07H
LP0: DJNZ R7,LP0
POP 07H
DJNZ R7,LP1
POP 07H
DJNZ R7,LP2
POP 07H
DJNZ R7,XDEY
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -