回复:关于ANY类型参数用法的一道题

幸福的方向

  • 帖子

    227
  • 精华

    0
  • 被关注

    16

论坛等级:侠士

注册时间:2010-04-11

普通 普通 如何晋级?

发布于 2016-11-12 16:39:03

7楼

FC1 内程序:

      L     0  

      T      #evenposi                  //位置赋初值

      T      #oddposi

      L     P##getw                     //IN参数any类型 取数

      LAR1  


      L     W [AR1,P#4.0]

      T     #db_no                      //取出DB号


      L     W [AR1,P#2.0]

      T     #length                     //取出长度


      L     D [AR1,P#6.0]

      LAR1  


next: OPN   DB [#db_no]

      L     W [AR1,P#0.0]

      T     #ini_w                      //得到数据区第一个字

......................................................................

  L     #ini_w

      L     W#16#1

      AW    

      L     W#16#0

      ==I   

      JCN   a00                         //逻辑结果为0即奇数时跳转

      L     #ini_w

      T     #even                       //偶数放even

...........................................................................

 L     P##even_db

      LAR2  


      L     W [AR2,P#4.0]               //取出DB号

      T     #evendb_no

      L     D [AR2,P#6.0]               //数据地址

      LAR2  


      L     #evenposi                   //填放的位置,数据字

      SLD   3

      +AR2  


      OPN   DB [#evendb_no]             //打开DB块

      L     #even                       //存放偶数

      T     W [AR2,P#0.0]


      L     #evenposi

      L     2

      +I    

      T     #evenposi                   //每次后移2字节

      +AR1  P#2.0


      JU    d00

..................................................................................

a00:  L     #ini_w

      T     #odd                        //是奇数转放odd


      L     P##odd_db                   //out参数any类型

      LAR2  

      L     W [AR2,P#4.0]

      T     #odddb_no                   //取出DB号

      L     D [AR2,P#6.0]

      LAR2                              //ar2存放首地址

      L     #oddposi                    //首字左移3位作地址

      SLD   3

      +AR2  


      OPN   DB [#odddb_no]              //打开DB块

      L     #odd

      T     W [AR2,P#0.0]               //填放奇数

      L     #oddposi

      L     2

      +I    

      T     #oddposi

      +AR1  P#2.0

     

d00:  L     #length

      LOOP  next

本程序仿真能得出正确值,我是先在DB1中赋1,2....到20,共20个数;DB2得到:2,4....20共10个数;DB3得到1,3...19共10个数。能得到正确答案,可是CPU却报错停止。程序开头的两句赋初值是后来加上的,加不加对程序好像影响不大,都能得出正确结果,就是CPU报错停止;找不到错在哪儿,百思不得其解,望明白的人点拨一下,谢谢

......................................................................................


雨过分洼种瓜,旱时饮水浇麻。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54789条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。