📄 text10(新算法).asm
字号:
ANL A,#80H
JZ WRITE_COMPLETE2
RET
RET
CANSHU_V: ;写电压参数
MOV DEECON ,#00
MOV DEEDAT,7CH
MOV DEEADR,#03H
WRITE_COMPLETE31:
MOV A,DEECON
ANL A,#80H
JZ WRITE_COMPLETE31
MOV DEECON,#00
MOV DEEDAT,7BH
MOV DEEADR,#04H
WRITE_COMPLETE41:
MOV A,DEECON
ANL A,#80H
JZ WRITE_COMPLETE41
MOV DEECON,#00
MOV DEEDAT,22H
MOV DEEADR,#05H
WRITE_COMPLETE51:
MOV A,DEECON
ANL A,#80H
JZ WRITE_COMPLETE51
RET
RET
;***********************串口通讯
tongxun:
push psw
push acc
clr ea
SETB rs0 ;选择寄存区
setb rs1
mov r0,#80h ;接受缓存区
mov a,sbuf
clr ri
mov @r0,a
mov r3,a ;防止误判
xrl a,#02fh
jz dz2
tt6: ;误判返回
setb ea
pop acc
pop psw
reti
dz2:
mov r2, #04h;检测桢头
acall start0
dz6:
mov a,r3
xrl a,#0eeh ;判断数据是否是桢尾
jz resub1
acall resub
sjmp dz6
;**************************接受
start0:
mov r5,#00h; ;清累加和
cc1:cjne r2,#01h,sb; 累加和不包括帧头
sb:
jnc sb1
add a,r5
mov r5,a
inc r0
ret
sb1:
dec r2
inc r0
ret
resub1:
clr ri
setb ren
jnb ri ,$
mov a,sbuf
clr ri
mov @r0,a
xrl a,r5 ; 校验累加和是否正确
jz pdata
setb sm2 ; 累加和不正确返回
setb ea
pop acc
pop psw
reti
resub:
clr ri
setb ren
jnb ri ,$ ;等待接受完
mov a,sbuf
clr ri
mov @r0,a
mov r3,a
sjmp cc1
;***************命令判断处理
pdata1: ;地址不符返回
setb sm2
setb p1.6
setb ea
pop acc
pop psw
reti
pdata:
;mov r5,#00h
mov r0,#85h
mov a,@r0
CJNE A ,#0ADH,PP7 ;广播检测
LJMP ZJ
PP7:
CJNE A ,#0AEH,PP8 ; 广播检测结束
LJMP ZJS
PP8:
CJNE A,#0ACH,PP3 ; 广播复位
LJMP FUWEI
PP3:
INC R0
MOV A,@R0
CJNE A,7FH, pdata1 ;查看是否呼叫本机
;mov r5,#00
dec r0
mov a,@r0 ; 给地址
cjne a,#0a0h, pp4 ; 地址呼叫
ljmp dz
pp4:
cjne a ,#0b6h,pp1 ; 数据查询
ljmp chaxun
pp1:
cjne a,#0b1h,pp5 ;参数设置
ljmp dengji
pp5:
cjne a,#0a8h,pp6 ; 键盘测试
ljmp dso
pp6:
cjne a,#0a1h,pp9 ; 电流固定值自检
ljmp gdl
pp9:
cjne a,#0a2h,pp10 ; 电压固定值自检
ljmp gdy
pp10:
cjne a ,#0a3h,p11 ;自减电流电压值
ljmp jzz
p11: ;命令不正确,返回
setb sm2
setb ea
pop acc
pop psw
reti
;*********************硬件自检
zj:
mov 4fh,#00;硬件自检符号发送次数清零
mov 7ah,#2 ;表示电流环状态未知
MOV ADINS,#08H;选择AD03电流转换通道
MOV ADMODA,#10H;固定通道单次转换
MOV R7,#0FFH ;AD转换数据个数
MOV 2aH,#00H ;存放波峰高八位
MOV 29H,#00H ;存放波峰低八位
ADC_zj:
MOV ADCON0,#05H ;循环AD转换
MOV A,ADCON0 ;开始转换
JNB ACC.3,ADC_ZJ ;等待转换完成
MOV 28H, AD0DAT3L ;转换结果高八位
MOV 27H, AD0DAT3R ;转换结果低八位
LCALL DELAY_zj ;确保在0.3S转换255次
LCALL MAX_zj ; 比较求最大值
DJNZ R7 , ADC_zj; 255次转换完?
ljmp CHULI_zj ;转电流数据处理子程序
MAX_zj:
MOV A,28H ; 比较高八位
CJNE A,2aH,MAX1_zj
MOV A,27H ; 比较低八位
CJNE A,29H,MAX1_zj
MAX1_zj:
JC MAX2_zj
MOV 2aH,28H
MOV 29H,27H
RET
RET
MAX2_zj:
RET
RET
CHULI_zj:
MOV R7,2aH
MOV R6,29H
MOV R5,7EH
MOV R4,7DH
LCALL MULD_zj
;SUBB_0zj: ;自减电流固定值
;MOV A,R2 ;电流值高字节
;CJNE A,66H, SUBB_1zj ; 判断固定值大小
;SUBB_1zj:JC JIANWAN_zj
;XRL A,66h
;JZ SUBB_2zj
;SJMP SUBB_3zj
;SUBB_2zj:
;MOV A,R3
;CJNE A,67H,SUBB_4zj
;SUBB_4zj:JC JIANWAN_zj
;SUBB_3zj:CLR C
;MOV A,R3
;SUBB A,67H
;MOV 27H,r3 ; 电流中间值低八位
;MOV A,R2
;SUBB A,66H
;MOV 28H,A ; 电流中间值高八位
cjne r2,#1,ok_1
ok_1:jc ok_2
ok:mov 7ah,#1 ;电流环正常
sjmp fanhui_zj
ok_2:
;mov a,27h
cjne r3,#0ffh,ok_3
ok_3:jnc ok
;JIANWAN_zj:
mov 7ah,#00 ;电流环故障
fanhui_zj:
setb ea
pop acc
pop psw
reti
MULD_zj:
MOV A,R6
MOV B,R4
MUL AB
MOV R3,A
MOV R2,B
MOV A,R7
MOV B,R4
MUL AB
ADD A,R2
MOV R2,A
MOV A,B
ADDC A,#0
MOV R1,A
MOV A,R6
MOV B,R5
MUL AB
ADD A,R2
MOV R2,A
MOV R0,#0
MOV A,R1
ADDC A,B
MOV R1,A
JNC LAST_zj
INC R0
LAST_zj:
MOV R7,A
MOV B,R5
MUL AB
ADD A,R1
MOV R1,A
MOV A,B
ADDC A,R0
MOV R0,A
RET
RET
DELAY_zj: ;延时 100.74us
MOV 26H,#0BEH
DELAY1_zj:
NOP
DJNZ 26H, DELAY1_zj
RET
RET
zjs: ;自检结束返回
setb ea
setb sm2
setb ren
pop acc
pop psw
reti
;*********************键盘测试
DSO:
mov r0,#080h
mov @r0,#2fh
inc r0
mov @r0,#4h
inc r0
mov @r0,#4
inc r0
mov @r0,#2fh
mov a,#00
inc r0
mov @r0,7fh ;
add a,7fh
inc r0
mov @r0,#0a8h
add a,#0a8h
inc r0
mov @r0,#02 ;设备类型值
add a,#02
inc r0
mov @r0,#0eeh
add a,#0eeh
inc r0
mov @r0,a
mov 25h,#08
mov r0,#80h
lcall start2; 发送
ds4:
inc r0
lcall trsub
djnz 25h,ds4
last1_uart: ;发送完返回
setb sm2
setb p1.6
setb ea
setb ren
pop acc
pop psw
reti
;*******************地址呼叫
dz:
mov r0,#080h
mov @r0,#2fh
inc r0
mov @r0,#4h
inc r0
mov @r0,#4
inc r0
mov @r0,#2fh
mov a,#00
inc r0
mov @r0,7fh
add a,7fh
inc r0
mov @r0,#0a0h
add a,#0a0h
inc r0
mov @r0,58h ;参数发送请求标志01有效
add a,58h
inc r0
mov @r0,#00
inc r0
mov @r0,#00
inc r0
mov @r0,#2 ;设备类型值
add a,#2
inc r0
mov @r0,#0eeh
add a,#0eeh
inc r0
mov @r0,a
mov 25h,#11
mov r0,#80h
lcall start2; 发送
dz4:
inc r0
lcall trsub
djnz 25h,dz4
;发送完返回
cpl p0.0 ;工作指示灯
mov 58h,#00 ;清参数发送请求标志
clr sm2
setb p1.6
setb ea
setb ren
pop acc
pop psw
reti
;*******************参数设置
dengji:
mov r0,87h
mov 6eh,@r0 ; 一般等级
inc r0
mov 5ch,@r0
inc r0
mov 6dh,@r0 ;重要等级
inc r0
mov 6ch,@r0
inc r0
mov 6bh,@r0 ; 严重等级
inc r0
mov 6ah,@r0
inc r0 ; 电流固定值
mov a,@r0
xrl a,#0aah
jnz zh
mov r0,#08fh
mov 67h,@r0
inc r0
mov 66h,@r0
zh: ; 电压固定值
mov r0,#08eh
mov a,@r0
xrl a,#0aah
jnz zh1
mov r0,#091h
mov 2eh,@r0
zh1: ; 电压门限值
mov r0,#092h
mov 2bh,@r0
mov a,@r0 ; 一般定时
mov b,#84
mul ab
jnb ov,dingshi_0
mov 74h,a
mov 73h,b
inc 73h
sjmp zhongyao_ds
dingshi_0:
mov 74h,a
mov 73h,#01
zhongyao_ds: ; 重要定时
inc r0
mov a,@r0
mov b,#84
mul ab
jnb ov ,dingshi_1
mov 72h,a
mov 71h,b
inc 71h
sjmp yanzhong_ds
dingshi_1:
mov 72h,a
mov 71h,#01
yanzhong_ds: ; 严重定时
inc r0
mov a,@r0
mov b,#84
mul ab
jnb ov ,dingshi_2
mov 70h,a
mov 6fh,b
inc 6fh
sjmp dingshi_v
dingshi_2:
mov 70h,a
mov 6fh,#01
dingshi_v: ;电压定时
inc r0
mov a,@r0
mov b,#84
mul ab
jnb ov,dingshi_3
mov 76h,a
mov 75h,b
inc 75h
sjmp dingshi_5
dingshi_3:
mov 76h,a
mov 75h,#1
dingshi_5:
inc r0
mov a,@r0
mov b,#84
mul ab
add a ,75h
mov 75h ,a
mov r0,#080h ;发送
mov @r0,#2fh
inc r0
mov @r0,#3
inc r0
mov @r0,#3
inc r0
mov @r0,#2fh
mov a,#00
inc r0
mov @r0,7fh ;
add a,7fh
inc r0
mov @r0,#0b1h
add a,#0b1h
inc r0
mov @r0,#0eeh
add a,#0eeh
inc r0
mov @r0,a
mov 25h,#7
mov r0,#80h
lcall start2; 发送
dz48:
inc r0
lcall trsub
djnz 25h,dz48
;发送完返回
setb sm2
setb p1.6
setb ea
setb ren
pop acc
pop psw
reti
;******************* 查询数据
chaxun:
mov a,#19 ;防止瞬碰重复发送
xrl a,2fh
jnz mimi5
mov r0,#0bdh
mov a,@r0
inc r0
mov b,@r0
mov r0,#08ch
mov @r0,b
inc r0
mov @r0,a
mimi5:
mov 24h,2fh
mov 2fh,#00
mov r0,#080h
mov @r0,#2fh
inc r0
mov @r0,#11
inc r0
mov @r0,#11
inc r0
mov @r0,#2fh
mov a,#00
inc r0
mov @r0,7fh ; 地址
add a,7fh
inc r0
mov @r0,#0b6h
add a,#0b6h
inc r0
mov @r0,79h ; 告警类型
add a,79h
inc r0
mov @r0,78h ; 电流值低字节
add a,78h
inc r0
mov @r0,77h ; 电流值高字节
add a,77h
inc r0
mov @r0,2ch ; 电压值
add a,2ch
inc r0
mov @r0,7ah ;电流环状态
add a,7ah
inc r0
mov @r0,24h ; 瞬碰类型
add a,24h
inc r0 ; 瞬碰电流值
;mov r6,@r0
add a,@R0;r6
inc r0
;mov r4,@r0
add a,@R0;r4
inc r0
mov @r0,#0eeh
add a,#0eeh
inc r0
mov @r0,a
mov 25h,#15
mov r0,#80h
lcall start2; 发送
dz41:
inc r0
lcall trsub
djnz 25h,dz41
;发送完返回
setb sm2
setb p1.6
setb ea
setb ren
pop acc
pop psw
reti
;***************** 复位
fuwei:
setb sm2 ; 接受状态
setb ea
setb ren
pop acc
pop psw
reti
;*********************电流固定值自检
gdl:
mov r0,#080h
mov @r0,#2fh
inc r0
mov @r0,#5
inc r0
mov @r0,#5
inc r0
mov @r0,#2fh
mov a,#00
inc r0
mov @r0,7fh ;
add a,7fh
inc r0
mov @r0,#0a1h
add a,#0a1h
inc r0
mov @r0,78h ; 电流值低字节
add a,78h
inc r0
mov @r0,77h ; 电流值高字节
add a,77h
inc r0
mov @r0,#0eeh
add a,#0eeh
inc r0
mov @r0,a
mov 25h,#09
mov r0,#80h
lcall start2; 发送
gdl2:
inc r0
lcall trsub
djnz 25h,gdl2
;发送完返回
setb sm2
setb p1.6
setb ea
setb ren
pop acc
pop psw
reti
;****************** 电压固定值自检
gdy:
mov r0,#080h
mov @r0,#2fh
inc r0
mov @r0,#4
inc r0
mov @r0,#4
inc r0
mov @r0,#2fh
mov a,#00
inc r0
mov @r0,7fh ; 地址
add a,7fh
inc r0
mov @r0,#0a2h
add a,#0a2h
inc r0
mov @r0,2ch ; 电压值
add a,2ch
inc r0
mov @r0,#0eeh
add a,#0eeh
inc r0
mov @r0,a
mov 25h,#08
mov r0,#80h
lcall start2; 发送
gdy2:
inc r0
lcall trsub
djnz 25h,gdy2
;发送完返回
setb sm2
setb p1.6
setb ea
setb ren
pop acc
pop psw
reti
;******************* 自减电流电压值
jzz:
mov r0,#87h
mov 67h,@r0 ; 接受电流固定值低字节
inc r0
mov 68h,@r0 ; 接受电流固定值高字节
inc r0
mov 2eh,@r0 ; 接受电压固定值
mov r0,#080h
mov @r0,#2fh
inc r0
mov @r0,#3
inc r0
mov @r0,#3
inc r0
mov @r0,#2fh
mov a,#00
inc r0
mov @r0,7fh ;
add a,7fh
inc r0
mov @r0,#0a3h
add a,#0a3h
inc r0
mov @r0,#0eeh
add a,#0eeh
inc r0
mov @r0,a
mov 25h,#07
mov r0,#80h
lcall start2; 发送
jzz2:
inc r0
lcall trsub
djnz 25h,jzz2
;发送完返回
setb sm2
setb p1.6
setb ea
setb ren
pop acc
pop psw
reti
;************************发送子程序
start2:
clr ren
clr p1.6 ; 发送状态
mov a,7ah
xrl a,#0
jnz laomei
INC 4FH
mov a,4fh
cjne a,#20h,laomei1;电流环状态发送次数
laomei1:
jc laomei
mov 7ah,#3
laomei:clr ea
lcall delay_t
trsub:
clr ti
mov a,@r0
mov sbuf,a
jnb ti,$ ; 等待发送完
ret
delay_t:
mov 26h,#19h
mov 23h,#0ffh
d113:
nop
nop
djnz 23h,d113
djnz 26h,d113
ret
ret
ljmp main
END
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -