📄 modbus.asm
字号:
SBADDR EQU 32H:BYTE
CRC EQU 033H:BYTE
CRC1 EQU 034H:BYTE
OK_NO EQU 4BH:BYTE
KEY_F0 EQU 63H:BYTE
KEY_FF EQU 64H:BYTE
TEMP EQU 74H:WORD
;改为
MOV_NUM EQU 4BH:BYTE ;移位次数
FMT_LEN EQU 63H:BYTE ;校验长度
LOAD_NUM EQU 64H:BYTE ;字节装入次数
TEMP EQU 74H:WORD ;移出位
CRC16 EQU 32H:WORD
CRC EQU 032H:BYTE
CRC1 EQU 033H:BYTE
SBADDR EQU 034H:BYTE
SERIAL_INT:
PUSHF
PUSH AX
PUSH BX ;030417
;030815LDB INT_MASK,#10H ;030815
;030818TEST
STB AL,WDTADDR[0] ;030417
STB AL,WDTADDR[0] ;030417
LDB INT_MASK,S_FLAG ;030815
ANDB INT_MASK,#0BFH ;030818
;TEST LDB NUMREG,S_FLAG
;TEST LDB X_REG,#0B8H
;TEST LDB Y_REG,#040H
;TEST CALL LCD_NUM2Z
;TEST LDB X_REG,#0BAH
;TEST LDB NUMREG,INT_PEND
;TEST CALL LCD_NUM2Z
;TEST ;030818TEST
EI
LDB SP_TEMP,SP_STAT
JBS SP_TEMP,6,SP_RX ;RI=1?
JBS SP_TEMP,5,SP_TX ;TI=1?
NOP
SP_TX:
CLRB FLAG
LJMP RETURN
RETURNX:
LJMP RETURN
SP_RX0041:
CMPB BUFREG,#00H
JNE RETURNX
;031119
CLR AX
;031119
SP_RX00411:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE RETURNX
;031119
JBC INT_PEND,6,SP_RX00411 ;030616
ANDB INT_PEND,#0BFH ;030616
LDB BUFREG,SBUFRX ;030616
;LJMP
CLRB CRC ;030807
CLRB CRC1 ;030807
SP_RX007X: LJMP SP_RX007
SP_RX:
;******************************031210
;*********** STB AL,WDTADDR[0] ;030417
;*********** ANDB INT_PEND,#0BFH
;*********** LDB BUFREG,SBUFRX
;*********** CMPB BUFREG,#0EBH
;*********** JNE RETURNX
;***********
;*********** ;031119
;*********** CLR AX
;*********** ;031119
;***********SP_RX000:
;*********** INC AX
;*********** STB AL,WDTADDR[0]
;*********** CMP AX,#0FFFFH
;*********** JE RETURNX
;*********** ;031119
;***********
;*********** JBC INT_PEND,6,SP_RX000
;*********** ANDB INT_PEND,#0BFH
;*********** LDB BUFREG,SBUFRX
;*********** CMPB BUFREG,#090H
;*********** JNE RETURNX
;***********
;*********** ;031119
;*********** CLR AX
;*********** ;031119
;***********SP_RX001:
;*********** INC AX
;*********** STB AL,WDTADDR[0]
;*********** CMP AX,#0FFFFH
;*********** JE RETURNX
;*********** ;031119
;***********
;*********** JBC INT_PEND,6,SP_RX001
;*********** ANDB INT_PEND,#0BFH
;*********** LDB BUFREG,SBUFRX
;*********** CMPB BUFREG,#0EBH
;*********** JNE RETURNX
;***********
;*********** ;031119
;*********** CLR AX
;*********** ;031119
;***********SP_RX002:
;*********** INC AX
;*********** STB AL,WDTADDR[0]
;*********** CMP AX,#0FFFFH
;*********** JE RETURNXXXXXXXXXX
;*********** ;031119
;***********
;*********** JBC INT_PEND,6,SP_RX002
;*********** ANDB INT_PEND,#0BFH
;*********** LDB BUFREG,SBUFRX
;*********** CMPB BUFREG,#090H
;*********** JNE RETURNXXXXXXXXXX
;***********
;*********** ;031119
;*********** CLR AX
;*********** ;031119
;***********SP_RX003:
;*********** INC AX
;*********** STB AL,WDTADDR[0]
;*********** CMP AX,#0FFFFH
;*********** JE RETURNXXXXXXXXXX
;*********** ;031119
;***********
;*********** JBC INT_PEND,6,SP_RX003
;*********** ANDB INT_PEND,#0BFH
;*********** LDB BUFREG,SBUFRX
;*********** CMPB BUFREG,#002H
;*********** JNE RETURNXXXXXXXXXX
;***********
;*********** ;031119
;*********** CLR AX
;*********** ;031119
;***********SP_RX004:
;*********** INC AX
;*********** STB AL,WDTADDR[0]
;*********** CMP AX,#0FFFFH
;*********** JE RETURNXXXXXXXXXX
;*********** ;031119
;***********
;*********** JBC INT_PEND,6,SP_RX004
;***********
;***********;******************************031210
STB AL,WDTADDR[0] ;030417
ANDB INT_PEND,#0BFH
LD CRC16,#0FFFFH
LDB BUFREG,SBUFRX
CMPB BUFREG,SBADDR
JNE RETURNXXXXXXXXXX ;031210 SP_RX0041X ;RETURNX
;031210 SJMP SP_RX004X ;031119
SP_RX005XX:
LJMP SP_RX005X
SP_RX0041X:
LJMP SP_RX0041
RETURNXXXXXXXXXX:
LJMP RETURN
;***********031210 SP_RX004X:
;*********** ;031119
;*********** CLR AX
;*********** ;031119
;***********SP_RX005:
;*********** INC AX
;*********** STB AL,WDTADDR[0]
;*********** CMP AX,#0FFFFH
;*********** JE RETURNXXXXXXXXXX
;*********** ;031119
;***********
;*********** JBC INT_PEND,6,SP_RX005
;*********** ANDB INT_PEND,#0BFH
;*********** LDB BUFREG,SBUFRX
;*********** CMPB BUFREG,#06H
;*********** JNE SP_RX005XX ;031119
;*********** ; 从上位机收ACK信号
;***********;030807***************************
;***********
;*********** ;031119
;*********** CLR AX
;*********** ;031119
;***********SP_RX0051:
;*********** INC AX
;*********** STB AL,WDTADDR[0]
;*********** CMP AX,#0FFFFH
;*********** JE RETURNXXX
;*********** ;031119
;***********
;*********** JBC INT_PEND,6,SP_RX0051
;*********** ANDB INT_PEND,#0BFH
;*********** LDB BUFREG,SBUFRX
;*********** CMPB BUFREG,#02H ;
;*********** JNE RETURNXXX
;***********
;*********** ;031119
;*********** CLR AX
;*********** ;031119
;***********SP_RX0052:
;*********** INC AX
;*********** STB AL,WDTADDR[0]
;*********** CMP AX,#0FFFFH
;*********** JE RETURNXXX
;*********** ;031119
;***********
;*********** JBC INT_PEND,6,SP_RX0052
;*********** ANDB INT_PEND,#0BFH
;*********** CLRB CRC1
;*********** ADDB CRC,SBADDR,#08H
;*********** ADDCB CRC1,#00H
;*********** LDB BUFREG,SBUFRX
;*********** CMPB BUFREG,CRC ;
;*********** JNE RETURNXXX
;***********
;***********
;***********
;*********** ;031119
;*********** CLR AX
;*********** ;031119
;***********SP_RX0053:
;*********** INC AX
;*********** STB AL,WDTADDR[0]
;*********** CMP AX,#0FFFFH
;*********** JE RETURNXXX
;*********** ;031119
;***********
;*********** JBC INT_PEND,6,SP_RX0053
;*********** ANDB INT_PEND,#0BFH
;***********
;*********** LDB BUFREG,SBUFRX
;*********** CMPB BUFREG,CRC1 ;
;*********** JNE RETURNXXX
;***********
;*********** ;031119
;*********** CLR AX
;*********** ;031119
;***********SP_RX0054:
;*********** INC AX
;*********** STB AL,WDTADDR[0]
;*********** CMP AX,#0FFFFH
;*********** JE RETURNXXX
;*********** ;031119
;***********
;*********** JBC INT_PEND,6,SP_RX0054
;*********** ANDB INT_PEND,#0BFH
;*********** LDB BUFREG,SBUFRX
;*********** CMPB BUFREG,#03H ;
;*********** JNE RETURNXXX
;***********
;030807***************************
;LJMP SP_RX00A1X ;030417
SP_RX006X:
LJMP SP_RX006
SP_RX005X:
CALL CRCPROC
;031119
CLR AX
;031119
SP_RX0054:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE RETURNXXX
;031119
JBC INT_PEND,6,SP_RX0054
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,#03H ;031210 #048H
JNE RETURNXXX ;031210 SP_RX006X
;030807******************************************
STB AL,WDTADDR[0] ;030417
;***********031210 CLRB CRC1
;***********031210 ADDB BUFREG,SBADDR
;***********031210 ADDCB CRC1,#00H
;***********031210 LDB CRC,BUFREG ;030807
CALL CRCPROC
;031119
CLR AX
;031119
SP_RX005X11:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE RETURNXXX
;031119
JBC INT_PEND,6,SP_RX005X11
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,#00H ;031210 #002H
JNE RETURNXXX
CALL CRCPROC
;031119
CLR AX
;031119
SP_RX005X12:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE RETURNXXX
;031119
JBC INT_PEND,6,SP_RX005X12
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,#08
JH RETURNXXX
LDB FMT_LEN,BUFREG
CALL CRCPROC
;031119
CLR AX
;031119
SP_RX005X13:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE RETURNXXX
;031119
JBC INT_PEND,6,SP_RX005X13
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,#00H
JNE RETURNXXX
CALL CRCPROC
SJMP SP_RX005X130
RETURNXXX:
LJMP RETURN
SP_RX005X130:
;031119
CLR AX
;031119
SP_RX005X14:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE RETURNXXX
;031119
JBC INT_PEND,6,SP_RX005X14
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,#04
JNE RETURNXXXXXX
CALL CRCPROC
;031119
CLR AX
;031119
SP_RX005X15:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE RETURNXXXXXX
;031119
JBC INT_PEND,6,SP_RX005X15
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,CRC
JNE RETURNXXXXXX
;031119
CLR AX
;031119
SP_RX005X16:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE RETURNXXXXXX
;031119
JBC INT_PEND,6,SP_RX005X16
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,CRC1
JNE RETURNXXXXXX
;030807***************************************
SP_RX005X1: ;查询待发送事件
;031210 LD I2CADDR,#FSFLAGADDR ;1109
;031210 LCALL OUTPUT_SJ
;031210 LDB FSFLAG,ZYBUFAL
;031210 CMPB FSFLAG,#00H
;031210 JE SP_ACKX ; 发ACK 向上位机
LCALL SENDGZ
LDB AH,P2
LDB AL,#10000000B ;p2.7_input pin /busy P2.5=0 RXD ;AL,BL,CL
ORB AH,#10000000B
ANDB AH,AL
LDB P2,AH
MULB AX,AL,#00H ;>5US
MULB AX,AL,#00H
MULB AX,AL,#00H
MULB AX,AL,#00H
STB AL,WDTADDR[0] ;030417
;031210 SJMP SP_RX00AX ;031119
RETURNXXXXXX:
LJMP RETURN ;030807
SP_ACKX:
LJMP SP_ACK
;030417 LDB BL,#01 ;030417 ; 从上位机收ACK信号
;030417 LCALL DELAY ;030417
;030417 JBC INT_PEND,6,RETURNXXX ;030417
SP_RX00AX:
;031119
CLR AX
;031119
SP_RX00A:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE RETURNXXXXXX
;031119
JBC INT_PEND,6,SP_RX00A
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,#0EBH
JNE RETURNXXXXXX
;031119
CLR AX
;031119
SP_RX00B:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE RETURNXXXXXX
;031119
JBC INT_PEND,6,SP_RX00B
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,#090H
JNE RETURNXXXXXX
;031119
CLR AX
;031119
SP_RX00C:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE SENDGZX8
;031119
JBC INT_PEND,6,SP_RX00C
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,#0EBH
JNE SENDGZX8
;031119
CLR AX
;031119
SP_RX00D:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE SENDGZX8
;031119
JBC INT_PEND,6,SP_RX00D
ANDB INT_PEND,#0BFH
LDB BUFREG,SBUFRX
CMPB BUFREG,#090H
JNE SENDGZX8
;031119
CLR AX
;031119
SP_RX00E:
INC AX
STB AL,WDTADDR[0]
CMP AX,#0FFFFH
JE SENDGZX8
;031119
JBC INT_PEND,6,SP_RX00E
ANDB INT_PEND,#0BFH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -