<font color="#000000"><font face="Times New Roman">ORG 1000H
GOTO MAIN
ORG 1080H
MAIN:
CALL T300MS
CALL INITE
GOTO MAIN
;***************
T300MS:
LDBR R30,0X00,1
LDBR R31,0X64,1
LDBR R32,0X00,1
LDBR R33,0X96,1
LDBR R34,0X00,1
LDBR R35,0XFA,1
LDBR R36,0X01,1
LDBR R37,0X2C,1
MOVDR 37,R25,2
JU R25,R30,T300_END
LDBR R80,1,1
JU R25,R32,T300_END
LDBR R80,2,1
JU R25,R34,T300_END
LDBR R80,3,1
JU R25,R36,T300_END
LDBR R80,4,1
LDBR R200,0,1
LDWR R25,0
MOVRD R25,37,2
NOP
RET
T300_END:
NOP
RET
;***************
;上电初始化
INITE:
IJNE R255,0,INIRET
LDBR R255,1,1
COMSET 40H,1632 ;设置串口4,波特率9600,上电执行一次
CONFIG 1,2,1
RET
; LDBR R250,0,1
; NOP
INIRET:
IJNE R80,1,NT1
CALL RDY04
RET
NT1:
IJNE R80,2,NT2
RET
NT2: IJNE R80,4,NT3
RET
NT3: ;IJNE R81,1,NTRET
CALL T1014
CALL T1015
CALL T1016
CALL T1017
CALL T1018
NTRET: RET
RDY04:
IJNE R200,1,SENDR
IJNE R201,0,OT_RET
RDXLEN 4,R40 ;FIFO长度
IJNE R40,0,OT_TEST ;FIFO长度不等于0
RET
SENDR: ;读Y0~Y4状态
LDBR R90,0x02,1
LDBR R91,0x02,1 ;命令码
LDBR R92,0x05,1
LDBR R93,0x00,1
LDBR R94,0x00,1
LDBR R95,0x05,1
LDBR R11,0x06,1
CRCA R90,R122,R11 ;6字节做ANSI CRC计算
MOV R122,R96,2 ;赋值给R96 R97
LDBR R9,0x08,1
COMTXD 4,R90,R9
LDBR R200,1,1
LDBR R201,0,1
RET
OT_TEST:
MOVDR 17,R41,1
IJNE R41,0,OT_RET
RDXLEN 4,R40
RDXDAT 4,R50,R40
IJNE R50,0X02,OT_RET
IJNE R51,0X02,OT_RET
IJNE R52,0X01,OT_RET
CALL SC0
CALL SC1
CALL SC2
CALL SC3
CALL SC4
LDBR R201,1,1
RET
OT_RET:
NOP
RET
SC0:
LDBR R0,0X10,1
LDBR R1,0X14,1
LDBR R60,0X01,1
AND R60,R53,1
IJNE R60,0X01,SC00
LDBR R20,0,1
LDBR R21,1,1
MOVXR R20,0,1 ;写0x0001进变量
LDBR R250,0,1
LDBR R249,1,1
RET
SC00:
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
LDBR R250,1,1
LDBR R249,0,1
RET
SC1:
LDBR R0,0X10,1
LDBR R1,0X15,1
LDBR R60,0X02,1
AND R60,R53,1
IJNE R60,0X02,SC10
LDBR R20,0,1
LDBR R21,1,1
MOVXR R20,0,1 ;写0x0001进变量
LDBR R248,0,1
LDBR R247,1,1
RET
SC10:
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
LDBR R248,1,1
LDBR R247,0,1
RET
SC2:
LDBR R0,0X10,1
LDBR R1,0X16,1
LDBR R60,0X04,1
AND R60,R53,1
IJNE R60,0X04,SC20
LDBR R20,0,1
LDBR R21,1,1
MOVXR R20,0,1 ;写0x0001进变量
LDBR R246,0,1
LDBR R245,1,1
RET
SC20:
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
LDBR R246,1,1
LDBR R245,0,1
RET
SC3:
LDBR R0,0X10,1
LDBR R1,0X17,1
LDBR R60,0X08,1
AND R60,R53,1
IJNE R60,0X08,SC30
LDBR R20,0,1
LDBR R21,1,1
MOVXR R20,0,1 ;写0x0001进变量
LDBR R244,0,1
LDBR R243,1,1
RET
SC30:
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
LDBR R244,1,1
LDBR R243,0,1
RET
SC4:
LDBR R0,0X10,1
LDBR R1,0X18,1
LDBR R60,0X10,1
AND R60,R53,1
IJNE R60,0X10,SC40
LDBR R20,0,1
LDBR R21,1,1
MOVXR R20,0,1 ;写0x0001进变量
LDBR R242,0,1
LDBR R241,1,1
RET
SC40:
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
LDBR R242,1,1
LDBR R241,0,1
RET
;********************
T1014: ;直接操作Y0寄存器 装置地址0x500
LDBR R0,0X10,1
LDBR R1,0X24,1
MOVXR R20,1,1
IJNE R20,0,E1014
IJNE R21,0,N1014
RET
N1014:
IJNE R21,1,C1014
CALL O1014
RET
E1014:
NOP
RET
C1014: IJNE R21,2,E1014
LDBR R101,0x05,1 ;命令码
LDBR R102,0x05,1 ;0x0500 Y0继电器
LDBR R103,0x00,1
LDBR R104,0x00,1
LDBR R105,0x00,1
CALL U4TX
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
RET
O1014:
LDBR R101,0x05,1 ;命令码
LDBR R102,0x05,1 ;0x0500 Y0继电器
LDBR R103,0x00,1
LDBR R104,0xFF,1
LDBR R105,0x00,1
CALL U4TX
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
RET
T1015: ;直接操作Y0寄存器 装置地址0x500
LDBR R0,0X10,1
LDBR R1,0X25,1
MOVXR R20,1,1
IJNE R20,0,E1015
IJNE R21,0,N1015
RET
N1015:
IJNE R21,1,C1015
CALL O1015
RET
E1015:
NOP
RET
C1015:
IJNE R21,2,E1015
LDBR R101,0x05,1 ;命令码
LDBR R102,0x08,1 ;0x0800 M0辅助继电器
LDBR R103,0x00,1
LDBR R104,0x00,1
LDBR R105,0x00,1
CALL U4TX
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
RET
O1015:
LDBR R101,0x05,1 ;命令码
LDBR R102,0x08,1 ;0x0800 M0辅助继电器
LDBR R103,0x00,1
LDBR R104,0xFF,1
LDBR R105,0x00,1
CALL U4TX
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
RET
T1016: ;直接操作Y0寄存器 装置地址0x500
LDBR R0,0X10,1
LDBR R1,0X26,1
MOVXR R20,1,1
IJNE R20,0,E1016
IJNE R21,0,N1016
RET
N1016:
IJNE R21,1,C1016
CALL O1016
RET
E1016:
NOP
RET
C1016:
IJNE R21,2,E1016
LDBR R101,0x06,1 ;命令码
LDBR R102,0x10,1 ;0x1064 D100
LDBR R103,0x64,1
LDBR R104,0x00,1
LDBR R105,0x00,1
CALL U4TX
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
RET
O1016:
LDBR R101,0x06,1 ;命令码
LDBR R102,0x10,1 ;0x1064 D100
LDBR R103,0x64,1
LDBR R104,0x00,1
LDBR R105,0x01,1
CALL U4TX
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
RET
T1017:
LDBR R0,0X10,1
LDBR R1,0X27,1
MOVXR R20,1,1
IJNE R20,0,E1017
IJNE R21,0,N1017
RET
N1017:
IJNE R21,1,C1017
CALL O1017
RET
E1017:
NOP
RET
C1017:
IJNE R21,2,E1017
LDBR R101,0x05,1 ;命令码
LDBR R102,0x0A,1 ;0x0A00 M512辅助继电器 掉电保持
LDBR R103,0x00,1
LDBR R104,0x00,1
LDBR R105,0x00,1
CALL U4TX
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
RET
O1017:
LDBR R101,0x05,1 ;命令码
LDBR R102,0x0A,1 ;0x0A00 M512辅助继电器 掉电保持
LDBR R103,0x00,1
LDBR R104,0xFF,1
LDBR R105,0x00,1
CALL U4TX
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
RET
T1018:
LDBR R0,0X10,1
LDBR R1,0X28,1
MOVXR R20,1,1
IJNE R20,0,E1018
IJNE R21,0,N1018
RET
N1018:
IJNE R21,1,C1018
CALL O1018
RET
E1018:
NOP
RET
C1018: IJNE R21,2,E1018
LDBR R101,0x06,1 ;命令码
LDBR R102,0x11,1 ;0x1198 D408 掉电保持
LDBR R103,0x98,1
LDBR R104,0x00,1
LDBR R105,0x00,1
CALL U4TX
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
RET
O1018:
LDBR R101,0x06,1 ;命令码
LDBR R102,0x11,1 ;0x1198 D408 掉电保持
LDBR R103,0x98,1
LDBR R104,0x00,1
LDBR R105,0x01,1
CALL U4TX
LDBR R20,0,1
LDBR R21,0,1
MOVXR R20,0,1 ;写0x0000进变量
RET
U4TX:
LDBR R100,0x02,1 ;02 05 05 00 FF 00 8C C5
LDBR R10,0x06,1
CRCA R100,R120,R10 ;6字节做ANSI CRC计算
MOV R120,R106,2 ;赋值给R106 R107
LDBR R9,0x08,1
COMTXD 4,R100,R9
RET</font>
</font>