程序段1
L#cnt2_app
T#cnt2_db
OPNDB[#cnt2_db]
CALL"CNT2_CTR"
IN0:=#cnt2_db
ADBX36.7
JCNEND
A#count_en
=DBX23.2
A#frenq_en
=DBX23.1
程序段2
A#load0_end
JCNEXT
SET
SAVE
OPNDB[#cnt2_db]
ADBX1.0
JCWRD0
A#load0
FPM1000.0
JCNWRE0
L#vaLUe0
TDBD60
L10
TDBB0
WRD0:CALL"CNT2_WR"
IN0:=#cnt2_db
RET_VAL:=MW800
WRE0:ANBR
=#wr_err0
A#load0
ADBX1.1
O#load0_end
=#load0_end
AN#load0
RDBX1.1
程序段3
NEXT:SET
SAVE
OPNDB[#cnt2_db]
ADBX1.0
JCWRD1
A#load1
FPM1000.1
JCNWRE1
L#value1
TDBD60
L10
TDBB0
WRD1:CALL"CNT2_WR"
IN0:=#cnt2_db
RET_VAL:=MW802
WRE1:ANBR
=#wr_err1
AN#load1
RDBX1.1
程序段4
SET
SAVE
OPNDB[#cnt2_db]
ADBX1.0
JCWRD2
A#load2
FPM1000.2
JCNWRE2
L#value2
TDBD60
L10
TDBB0
WRD2:CALL"CNT2_WR"
IN0:=#cnt2_db
RET_VAL:=MW804
WRE2:ANBR
=#wr_err2
AN#load2
RDBX1.1
程序段5
SET
SAVE
OPNDB[#cnt2_db]
ADBX3.0
JCRDD0
L100
TDBB2
RDD0:CALL"CNT2_RD"
IN0:=#cnt2_db
RET_VAL:=MW806
ANBR
=#rd_err
END:BE
最佳答案
L#cnt2_app//cnt2_app装载到累加器1
T#cnt2_db//累加器1的内容(cnt2_app的值)保存到cnt2_db中
OPNDB[#cnt2_db]//打开db块
CALL"CNT2_CTR"//调用子程序
IN0:=#cnt2_db//子程序输入参数
ADBX36.7//如果db块中的dbx36.7为1则执行下面的程序,否则跳转到end
JCNEND
A#count_en
=DBX23.2//dbx23.2=count_en
A#frenq_en
=DBX23.1//dbx23.1=frenq_en
程序段2
A#load0_end//**load0_end为1则跳转到next,否则执行下面的程序
JCNEXT
SET//置位rlo状态
SAVE//保存rlo状态到br
OPNDB[#cnt2_db]//打开db块
ADBX1.0//如果dbx1.0位1则跳转到wrd0标志,否则继续执行下面的程序
JCWRD0
A#load0
FPM1000.0
JCNWRE0//load0上升沿执行下面的程序,否则跳转到wre0
L#value0
TDBD60//dbd60=value0
L10
TDBB0//dbb0=10
WRD0:CALL"CNT2_WR"//调用子程序块
IN0:=#cnt2_db//子程序块输入参数
RET_VAL:=MW800//子程序块返回参数保存到mw800
WRE0:ANBR
=#wr_err0//br状态取反后赋值给wr_err0
A#load0
ADBX1.1
O#load0_end
=#load0_end//load0_end=dbx1.1并自锁
AN#load0
RDBX1.1//如果load0不为1则复位dbx1.1
程序段3
NEXT:SET//置位rlo状态
SAVE//保存rlo状态到br
OPNDB[#cnt2_db]//打开db块
ADBX1.0//如果dbx1.0为1则跳转到wrd1,否则执行下面的程序
JCWRD1
A#load1
FPM1000.1
JCNWRE1//load1上升沿执行下面的程序否则跳转到wre1
L#value1
TDBD60//dbd60=value1
L10
TDBB0//dbb0=10
WRD1:CALL"CNT2_WR"//调用子程序块
IN0:=#cnt2_db//子程序输入参数
RET_VAL:=MW802//子程序返回参数保存到mw802
WRE1:ANBR
=#wr_err1//br状态取反复制给wr_err1
AN#load1
RDBX1.1//load1为0则复位dbx1.1
程序段4
SET//置位rlo状态位
SAVE//保存rlo到br
OPNDB[#cnt2_db]//打开db块
ADBX1.0//dbx1.0为1跳转到wrd2,否则执行下面的程序
JCWRD2
A#load2
FPM1000.2//load2上升沿执行下面的程序,否则跳转到wre2
JCNWRE2
L#value2
TDBD60//dbd60=value2
L10
TDBB0//dbb0=10
WRD2:CALL"CNT2_WR"//调用子程序块
IN0:=#cnt2_db//子程序输入参数
RET_VAL:=MW804//子程序返回参数保存到mw804
WRE2:ANBR
=#wr_err2//br取反后赋值给wr_err2
AN#load2
RDBX1.1//load2为0复位dbx1.0
程序段5
SET//置位rlo
SAVE//保存rlo到br
OPNDB[#cnt2_db]//打开db块
ADBX3.0//dbx3.0为1跳转到rdd0,否则执行下面的程序
JCRDD0
L100
TDBB2//dbb2=100
RDD0:CALL"CNT2_RD"//调用子程序块
IN0:=#cnt2_db//子程序输入参数
RET_VAL:=MW806//子程序输出参数保存到mw806
ANBR
=#rd_err//br取反保存到rd_err
END:BE//程序结束
提问者对于答案的评价:
谢谢!解开我的疑问。