📄 modbus规约程序.asm
字号:
comsub:
ldb w2,jsbuf+1
ld w3,#r_kind
comm2:
cmpb w2,[w3]+
je comm3
cmp w3,#r_kind_end
jnc comm2
sjmp code_rer
comm3: sub w3,#r_kind+1
shl w3,#1
add w3,#r_cr
ld w2,[w3]
br [w2]
r_kind: dcb 01h,02h,03h,04h,05h,06h,10h
r_kind_end equ $
r_cr: dcw r01,r02,r03,r04,r05,r06,r10
t_start:
orb outtbuf,#0c0h
stb outtbuf,outt
ld w13,#0ffffh
ld w16,#fsbuf
ldbze w15,zzadrt0
lcall crc5
stb w13,[w16]+
stb w13h,[w16]
add w16,#2
sub w16,#fsbuf
ld t_point,#fsbuf
addb tcnt,w16
ldb wsr,#1
ld ptssel,#0100h
ldb wsr,#4ah
ldb sbuf,zzadrt0
ret
stat_word:
ld w10,#fsbuf
stb w16,[w10]+
ret
rer: ret
code_rer:
ldb w16,w2
addb w16,#80h
lcall stat_word
ldb w3,#81h
stb w3,[w10]+
ldb w12h,#3
ljmp t_start
addr_rer:
ldb w2,jsbuf+1
ldb w16,w2
addb w16,#80h
lcall stat_word
ldb w3,#82h
stb w3,[w10]+
ldb w12h,#3
ljmp t_start
data_rer:
ldb w2,jsbuf+1
ldb w16,w2
addb w16,#80h
lcall stat_word
ldb w3,#83h
stb w3,[w10]+
ldb w12h,#3
ljmp t_start
;;;;;;;;;;;;;;;;;;;;
r01:
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
cmp w1,#6
jc r01_end1
ldb w2h,jsbuf+4
ldb w2,jsbuf+5
cmp w2,#00
je r01_end
ld w3,#7
sub w3,w1
cmp w2,w3
jc r01_end
ldb w16,#01h
lcall stat_word
ldb w2,#1
stb w2,[w10]+
ldb w1,jsbuf+3
ldb w2,jsbuf+5
ldb w3,outtbuf
ldb w13,w3
notb w13
andb w13,#08h
andb w3,#0f7h
orb w3,w13
shrb w3,w1
ldb w13,#8
subb w13,w2
shlb w3,w13
shrb w3,w13
stb w3,[w10]+
ldb w12h,#4
ljmp t_start
r01_end:
ljmp data_rer
r01_end1:
ljmp addr_rer
;;;;;;;;;;;;;;;;;;;;
r02_end:
ljmp data_rer
r02_end1:
ljmp addr_rer
r02:
lcall yx_sub
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
cmp w1,#40
jc r02_end1
ldb w2h,jsbuf+4
ldb w2,jsbuf+5
cmp w2,#00
je r02_end
ld w3,#41
sub w3,w1
cmp w2,w3
jc r02_end
ldb w16,#02h
lcall stat_word
ldb w2,jsbuf+5
shrb w2,#3
ldb w2h,jsbuf+5
andb w2h,#07h
cmpb w2h,#00
je r022
incb w2
r022: stb w2,[w10]+
stb w2,w12
stb w2h,w12h
stb w2,w15
ldbze w2,jsbuf+3
shr w2,#3
clr w4
ldb w4,jsbuf+3
andb w4,#07h
ld w3,#yxbuf
add w3,w2
decb w12
cmpb w12,#00h
je r023
r021: ldb w1,[w3]+
ldb w1h,[w3]
shr w1,w4l
stb w1,[w10]+
djnz w12,r021
r023: ldb w1,[w3]+
ldb w1h,[w3]
shr w1,w4l
clr w13
ldb w13,#8
cmpb w12h,#0
je r024
subb w13,w12h
shlb w1,w13
shrb w1,w13
r024: stb w1,[w10]+
addb w12h,w15,#3
ljmp t_start
;;;;;;;;;;;;;;;;;;;;
r03:
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
shl w1,#1
cmp w1,#0200h
jnc r03_dz
sub w1,#0200h
cmp w1,#6
jc r03_end1
ld w3,#8
scall r03_sub
jc r03_end
cmp w2,r0
je r03_end
ld w3,#iajg
add w3,w1
ldb w16,#03h
lcall stat_word
ldb w2,jsbuf+5
shlb w2,#1
stb w2,[w10]+
shrb w2,#1
r031: ldb w1,[w3]+
ldb w1h,[w3]+
stb w1h,[w10]+
stb w1,[w10]+
djnz w2,r031
r033: ldb w2,jsbuf+5
shlb w2,#1
addb w12h,w2,#3
ljmp t_start
r03_end:
ljmp data_rer
r03_end1:
ljmp addr_rer
r03_dz:
cmp w1,#dzqlt-2
jc r03_end1
ld w3,#dzqlt
scall r03_sub
jc r03_end
cmp w2,r0
je r03_end
ldb w16,#03h
lcall stat_word
;;;;;;;;;;;;;;
ldbze w14,setqht0
lcall getdz
;;;;;;;;;;;;;;
ldb w2,jsbuf+5
shlb w2,#1
stb w2,[w10]+
shrb w2,#1
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
shl w1,#1
cmp w1,#0000h
je r03_qh
sub w1,#2
r03_dz1:
ld w3,#setting+2
add w3,w1
sjmp r031
r03_sub:
ldb w2h,jsbuf+4
ldb w2,jsbuf+5
shl w2,#1
sub w3,w1
cmp w2,w3
ret
r03_qh:
ldbze w1,setqht0
stb w1h,[w10]+
stb w1,[w10]+
cmpb w2,#1
jne r03_qh1
sjmp r033
r03_qh1:
decb w2
ld w1,r0
sjmp r03_dz1
;;;;;;;;;;;;;;;;
r04:
lcall yx_sub
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
ld w3,#4
cmp w1,#3
jc r04_end1
ldb w2h,jsbuf+4
ldb w2,jsbuf+5
cmp w2,r0
je r04_end
add w2,w1
cmp w2,w3
jc r04_end
ld w3,#yxbuf
shl w1,#1
add w3,w1
ldb w16,#04h
lcall stat_word
ldb w2,jsbuf+5
shlb w2,#1
stb w2,[w10]+
cmpb w2,#00
je r042
r041: ldb w1,[w3]+
stb w1,[w10]+
djnz w2,r041
r042: ldb w2,jsbuf+5
shlb w2,#1
addb w12h,w2,#3
ljmp t_start
r04_end:
ljmp data_rer
r04_end1:
ljmp addr_rer
;;;;;;;;;;;;;;;;;
r05:
ldb w1h,jsbuf+4
ldb w1,jsbuf+5
cmp w1,#0ff00h
jne r052
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
cmp w1,#0000h
jne ykh
jbc dibufh,2,r052
jbc dibufh,0,r0521
if1 tzb,r052
setb yfb
lcall yft
sjmp r051
ykh: cmp w1,#0001h
jne r05_fg
jbc dibufh,2,r052
jbc dibufh,1,r0521
jbc dibufh,3,r052
if1 tzb,r052
setb yfb
lcall yfh
sjmp r051
r05_fg: cmp w1,#0100h
jne r0521
setb fgb
r051: ldb w16,#05h
lcall stat_word
ld w2,#jsbuf+2
ldb w1h,#4
r053: ldb w1,[w2]+
stb w1,[w10]+
djnz w1h,r053
ldb w12h,#6
ljmp t_start
r052: ljmp data_rer
r0521: ljmp addr_rer
;;;;;;;;;;;;;;;;;;;;
r06:
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
cmp w1,#00h
jne r06_dz
ldb w2h,jsbuf+4
ldb w2,jsbuf+5
cmp w2,#10
jc r06_end
lcall modify_qh
sjmp r064
r06_dz: scall cz_dzqh_sub
ld w3,#dzqlt/2
sub w3,#1
cmp w1,w3
jc r06_end1
dec w1
shl w1,#1
ldb w2h,jsbuf+4
ldb w2,jsbuf+5
st w2,setting+2[w1]
scall modify_dz
r064: setb dz_modify_comb
ldb w16,#06h
lcall stat_word
ld w2,#jsbuf+2
ldb w1h,#4
r063: ldb w1,[w2]+
stb w1,[w10]+
djnz w1h,r063
ldb w12h,#6
ljmp t_start
r06_end:
ljmp data_rer
r06_end1:
ljmp addr_rer
;;;;;;;;;;;;;;;;;
r10_end1_jmp:
sjmp r10_end1
r10_end_jmp:
sjmp r10_end
r10:
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
shl w1,#1
cmp w1,#dzqlt-2
jc r10_end1_jmp
ld w13,#dzqlt
ldbze w3,jsbuf+6
cmp w3,w13
jc r10_end1_jmp
sub w13,w3
cmp w1,w13
jc r10_end_jmp
ldb w2h,jsbuf+4
ldb w2,jsbuf+5
cmp w2,r0
je r10_end_jmp
shl w2,#1
cmp w3,w2
jne r10_end_jmp
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
shl w1,#1
cmp w1,r0
je r10_qh
scall cz_dzqh_sub
ld w4,#jsbuf+7
ld w5,#setting
add w5,w1
ldb w3,jsbuf+5
r101: ldb w2,[w4]+
ldb w2h,[w4]+
stb w2h,[w5]+
stb w2,[w5]+
djnz w3,r101
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
cmp w1,r0
jne r101_1
ldb w2,jsbuf+8
cmpb w2,setqht0
jne r103
r101_1: scall modify_dz
r102: setb dz_modify_comb
ldb w16,#10h
lcall stat_word
ldb w2h,jsbuf+2
ldb w2,jsbuf+3
stb w2h,[w10]+
stb w2,[w10]+
ldb w2h,jsbuf+4
ldb w2,jsbuf+5
stb w2h,[w10]+
stb w2,[w10]+
ldb w12h,#6
ljmp t_start
r10_end:
ljmp data_rer
r10_end1:
ljmp addr_rer
r103:
scall modify_dz1
sjmp r102
r10_qh:
ldb w2h,jsbuf+7
ldb w2,jsbuf+8
cmp w2,#10
jc r10_end
ldb w3,jsbuf+6
cmpb w3,#2
jne r10_qh1
lcall modify_qh
sjmp r102
r10_qh1:
ld w14,w2
lcall getdz
ld w4,#jsbuf+9
ldb w1h,jsbuf+2
ldb w1,jsbuf+3
shl w1,#1
ld w5,#setting
add w5,#2
ldb w3,jsbuf+5
decb w3
sjmp r101
modify_dz:
ld w11,#set_zyb
st w11,setting
ld w11,#setting
ldb w12h,#dzqlt-2
lcall crc
st w13,[w16]
ldbze w14,setqht0
lcall initset
lcall getyxdz1
lcall pyb
ret
modify_dz1:
ld w11,#set_zyb
st w11,setting
ld w11,#setting
ldb w12h,#dzqlt-2
lcall crc
st w13,[w16]
ldbze w14,jsbuf+8
lcall initset
ret
;;;;;;;;;;;;;;;;;;;
modify_qh:
stb w2,setqht0
stb w2,setqhf0
notb w2
stb w2,setqht1
stb w2,setqhf1
ld w3,#0a2ffh
ld w15,#setqht0
ldb w16,#1
lcall eepw
ldbze w14,setqht0
lcall getyxdz
lcall pyb
ret
yx_sub:
ld w1,#yxbuf
stb bgbz1,[w1]+
stb bgbz,[w1]+
ldb w2,dibufh
notb w2
stb w2,[w1]+
stb dzb,[w1]+
ldb w2,ybb
stb w2,[w1]+
stb r0,[w1]
ret
;;;;;;;;;;;;;;;;;;;;;;;;
cz_dzqh_sub:
ldbze w14,setqht0
cmp w14,cz_dzqh_jy
je yfaa_save
push w1
lcall getdz
ldb w1,watchdog
pop w1
yfaa_save:
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -