📄 tj1025g.asm
字号:
CLR C
ADD A,R7
MOV R7,A
MOV A,B
ADDC A,R6
MOV R6,A
MOV DPTR,#9000H
CLR C
MOV A,R7
ADD A,DPL
MOV DPL,A
MOV A,R6
ADDC A,DPH
MOV DPH,A
MOVX A,@DPTR
CJNE A,#55H,HROR
INC DPTR
MOV R2,#55H
MOV B,#22
HROR1:MOVX A,@DPTR
ADD A,R2
XCH A,R2
INC DPTR
DJNZ B,HROR1
MOVX A,@DPTR
CJNE A,02H,HROR
LJMP BCC
HROR:MOV A,77H
MOV 4CH,A
MOV A,74H
MOV 4DH,A
LCALL DOHOUR
LJMP BCC ;跳到主循环
;===================================
MKT:MOV R0,#30H
MOV A,#80H
MKT1:MOV @R0,A
INC R0
CJNE R0,#50H,MKT1
RET
;===================================
MRSB:LCALL WADOG
MOV R7,#00H
MRB:MOV R0,#30H
MOV R1,#00H
MOV DPL,#00H
MRB1:MOV A,1AH
MOV DPH,A
MOV A,R7
ADD A,DPH
XCH A,DPH
MOV A,#24
MOV B,R1
MUL AB
MOV DPL,A
MOV A,B
ADD A,DPH
MOV DPH,A
MOVX A,@DPTR
CJNE A,#55H,MRB3
INC DPTR
MOV R6,#55H
MOV R2,#22
MRB2:MOVX A,@DPTR
ADD A,R6
MOV R6,A
INC DPTR
DJNZ R2,MRB2
MOVX A,@DPTR
CJNE A,06H,MRB3
MOV @R0,07H
MRB3:INC R0
INC R1
CJNE R1,#20H,MRB1
MOV A,R7
ADD A,#08H
MOV R7,A
CJNE R7,#10H,MRB
RET
;========================================
JCLD:MOV 1AH,#82H
MOV 1BH,#08H
MOV 7AH,#00H
MOV 7BH,#30H
MTDK:MOV R0,7BH
MOV A,@R0
JNB ACC.7,MTD1
MOV A,77H
LCALL BCH1
DEC A
MOV B,A
MOV A,7AH
CJNE A,B,MTD0
LCALL COPE
MOV B,7AH
LCALL RECV
LJMP MTD2
MTD0:MOV B,7AH
LCALL SEAA
LJMP MTD2
MTD1:PUSH ACC
MOV A,7AH
MOV B,A
POP ACC
LCALL COPD
MOV B,7AH
LCALL RECV
MTD2:INC 7AH
INC 7BH
MOV A,7AH
CJNE A,#20H,MTDK
RET
;=====================================
JLLD:MOV 1AH,#85H
MOV 1BH,#08H
MOV 7AH,#00H
MOV 7BH,#30H
MLD0:MOV R0,7BH
MOV A,@R0
JNB ACC.7,MLD1
MOV B,7AH
LCALL SEAA
LJMP MLD2
MLD1:PUSH ACC
MOV A,7AH
MOV B,A
POP ACC
LCALL COPD
MOV A,7AH
MOV B,A
LCALL RECV
MLD2:INC 7AH
INC 7BH
MOV A,7AH
CJNE A,#20H,MLD0
RET
;========================================
SALD:NOP
SAL1:PUSH B
LCALL SEAA
POP B
djnz b,sal1
RET
;========================================
BCC:MOV DPTR,#0F500H
PUSH DPH
PUSH DPL
MOV DPTR,#FDDB
MOV R6,DPH
MOV R7,DPL
MOV B,#30H
BCC1:CLR A
MOV DPH,R6
MOV DPL,R7
MOVC A,@A+DPTR
INC DPTR
MOV R6,DPH
MOV R7,DPL
POP DPL
POP DPH
lcall wrda
INC DPTR
PUSH DPH
PUSH DPL
DJNZ B,BCC1
POP DPL
POP DPH
;******************************************
; 主循环体
;******************************************
CHR:CLR A
MOV B,#70H
MOV R0,#10H
CHR1:MOV @R0,A
INC R0
DJNZ B,CHR1
;-------------------------
LCALL SEDB ;装载仪表参数
;-------------------------
SETB P1.1
SETB P1.2
SETB P1.3
MOV 65H,#0FFH
SETB EX0
SETB EA
ST10: LCALL WADOG
JNB 7EH,ST10
CLR 7EH
ST11: LCALL WADOG
JNB 7EH,ST11
CLR 7EH
ST12: LCALL WADOG
JNB 7EH,ST12
LCALL CAUP
SETB ET2 ;打开显示
LCALL SET2 ;URAT 9600 1.8.N.1
ST31: LCALL WADOG
JNB 7EH,ST32
LCALL CAUP
;------------------------
ST32: MOV A,7FH
CLR C
SUBB A,#04H
JNC ST33
LCALL DSPP ;显示当前电压和时间
LJMP ST37
ST33: MOV A,7FH
CLR C
SUBB A,#20H
JC ST36
MOV A,7FH
CLR C
SUBB A,#0A0H
JC ST35
LCALL DSOF ; 显示断电数据
LJMP ST37
ST35: LCALL SEKY ; 显示统计数据
LJMP ST37
ST36: LCALL SETY
LJMP ST31
;----------------------------
ST37: JB XT_G,ST38
JB SBUD_G,ST39
JB OR_G, ST3A
LJMP ST31
;******************************************
; 心跳启动(10。28 心跳由仪表发出)
;******************************************
ST38:LCALL WADOG
LCALL XTDA
MOV 0EH,#00H
MOV 0FH,#1CH
LCALL FSTJ
CLR XT_G
LJMP ST31
;******************************************
; 上报超上限超下限数据
;******************************************
ST39: LCALL WADOG
LCALL FSBJ
CLR SBUD_G
;--------------------------
; 过程处理(接收响应)
;--------------------------
LJMP ST31
;==========================================
ST3A:LCALL WADOG
LCALL GPRS_PROG
CLR OR_G
LJMP ST31
;******************************************
; GPRS 通讯程序
;******************************************
GPRS_PROG: LCALL WADOG
LJMP GSPR0 ;调试程序时使用,调试完毕删除
;-----------------------------------
LCALL CKAD
JB OR_OK,GPR0 ;数据校验和正确
LJMP GSPR9
GPR0:LCALL CKMA
JB MA_OK,GPR1 ;通讯密码正确
LJMP GSPR9
GPR1:LCALL CKTD
JB TD_OK,GSPR0 ;时延正确
LJMP GSPR9
;-----------------------------------
GSPR0:LCALL JXGN ;解析应用层功能码
JNB 01H,GSPR1
SETB XT_XY ;心跳响应(主站)
LJMP GSPR9
GSPR1:JNB 02H,GSPR2
LCALL CSSZ ;参数设置
LJMP GSPR9
GSPR2:JNB 03H,GSPR3
LCALL CSCX ;查询参数
LJMP GSPR9
GSPR3:JNB 04H,GSPR4
LCALL QQLS ;请求历史类统计数据
LJMP GSPR9
GSPR4:JNB 05H,GSPR5
LCALL QQSJ ;请求断电数据
LJMP GSPR9
GSPR5:JNB 06H,GSPR6
SETB SBUD_XY ;超限响应(主站)
LJMP GSPR9
GSPR6:JNB 07H,GSPR7
SETB SBOF_XY ;断电响应(主站)
LJMP GSPR9
GSPR7:JNB 12H,GSPR8
SETB GPRS_XY
LJMP GSPR9
GSPR8:JNB 13H,GSPR9
LCALL CXGPRS
LJMP GSPR9
GSPR9:CLR OR_G
EGSPR:RET
;==========================================
; 解析应用层功能码
; 使用 RAM: 20H21H BIT:00H--0FH
; 22H23H 10H--1FH
; 仪表与主站通讯标志
; 功能码 位地址
; 81H 心跳检查 01H
; 82H 参数设置 02H
; 83H 查询参数 03H
; 84H 请求历史类数据 04H
; 85H 请求事件数据 05H
; 86H 主动上报超限数据 06H
; 87H 主动上报断电数据 07H
;
; 数据存放:0F80CH
;==========================================
JXGN:LCALL WADOG
MOV 20H,#00H ;00H--07H
MOV 21H,#00H ;08H--0FH
MOV 22H,#00H ;10H--17H
MOV 23H,#00H ;18H--1FH
MOV DPTR,#0F800H
MOVX A,@DPTR
CJNE A,#78H,COD0
LJMP COD7
COD0:MOV DPTR,#0F80CH
MOVX A,@DPTR
CJNE A,#81H,COD1
SETB 01H
LJMP EXGN
COD1:CJNE A,#82H,COD2
SETB 02H
LJMP EXGN
COD2:CJNE A,#83H,COD3
SETB 03H
LJMP EXGN
COD3:CJNE A,#84H,COD4
SETB 04H
LJMP EXGN
COD4:CJNE A,#85H,COD5
SETB 05H
LJMP EXGN
COD5:CJNE A,#86H,COD6
SETB 06H
LJMP EXGN
COD6:CJNE A,#87H,COD60
SETB 07H
COD60:LJMP EXGN
;------------------------
COD7:MOV DPTR,#0F80CH
MOVX A,@DPTR
CJNE A,#81H,COD8
SETB 11H
LJMP EXGN
COD8:CJNE A,#82H,COD9
SETB 12H
LJMP EXGN
COD9:CJNE A,#83H,EXGN
SETB 13H
EXGN:RET
;==========================================
; 发送断电类数据
;使用RAM 08H 断电总次数
; 09H 发送次数
; 0AH
; 0BH0CH (数据标识单元标识+数据)总和长度
; 0DH 每个(数据标识单元标识+数据)长度
; 0EH0FH 发送数据长度
; 10H-15H 数据标识单元数据
;使用位地址:
;==========================================
QQSJ:MOV DPTR,#0F812H
MOVX A,@DPTR
MOV 0AH,A ;请求开始年
MOV DPTR,#0F813H
MOVX A,@DPTR
MOV 0BH,A ;请求开始月
MOV DPTR,#0F814H
MOVX A,@DPTR
MOV 0CH,A ;请求终止年
MOV DPTR,#0F815H
MOVX A,@DPTR
MOV 0DH,A ;请求终止月
;------------------------------
MOV 08H,#00H
MOV 09H,#00H
;------------------------------
SQDR: MOV DPTR,#0E000H
MOV A,09H
MOV B,#10H
MUL AB
CLR C
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
INC DPTR ;55 XXXXXX XXXXXX
MOV 10H,DPH
MOV 11H,DPL
MOVX A,@DPTR ; 年
MOV 0EH,A
INC DPTR
MOVX A,@DPTR ;月
MOV 0FH,A
;--------------------------------------
; 2005.4----2006.1
;--------------------------------------
CLR C
MOV A,0FH
SUBB A,0BH
MOV A,0EH
SUBB A,0AH
JC SQDD4 ;< 开始年月
CLR C
MOV A,0DH
SUBB A,0FH
MOV A,0CH
SUBB A,0EH
JC SQDD4 ;>结束年月
LJMP SQDD5
;-------------------------------
; 检索 下一条
;-------------------------------
SQDD4: MOV A,09H
ADD A,#01H
MOV 09H,A
MOV B,A
MOV DPTR,#007FH
MOVX A,@DPTR
CJNE A,B,SQDD6
LJMP SQDS
SQDD6: LJMP SQDR
;------------------------------
; 装配数据
;------------------------------
SQDD5: LCALL LOADSJ
MOV A,08H
ADD A,#01H
MOV 08H,A
LJMP SQDD4
;------------------------------
; 检索结束
;------------------------------
SQDS: MOV DPTR,#0F900H
MOV A,#68H
LCALL WRDA
MOV A,08H
MOV B,#12
MUL AB
CLR C
ADD A,#18
MOV 11H,A
MOV A,B
ADDC A,#00H
MOV 10H,A
CLR C
MOV A,11H
RLC A
MOV 11H,A
MOV A,10H
RLC A
MOV 10H,A
CLR C
MOV A,11H
RLC A
MOV 11H,A
MOV A,10H
RLC A
MOV 10H,A
MOV DPTR,#0F901H
MOV A,10H
LCALL WRDA
INC DPTR
MOV A,11H
LCALL WRDA
INC DPTR
MOV A,10H
LCALL WRDA
INC DPTR
MOV A,11H
LCALL WRDA
;----------------------------
MOV DPTR,#0F905H
MOV A,#68H ;文件头 68H
LCALL WRDA
;----------------------------
MOV DPTR,#0F906H
MOV A,#8FH ;控制域C
LCALL WRDA
;----------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -