回复:存储器器间接寻址 数组

n次看你的背影

  • 帖子

    2321
  • 精华

    73
  • 被关注

    53

论坛等级:奇侠

注册时间:2008-03-11

普通 普通 如何晋级?

发布于 2012-09-26 00:29:38

2楼

楼主:你的数据是不是存在DB块中的浮点数组?化了点时间给你写了一个FC,你可以参考一下。将此复制到STL Sources文件里面,然后编译一下生成FC8就可以调用了。

FUNCTION FC 8 : VOID
TITLE =REAL DATA MIN TO MAX
//下沉法排序:数据从小到大排序或者从大到小排序。
//原理:数据从起始地址开始往下比较,通过内、外循环比较数据大小并移动数据排序。
VERSION : 0.1
VAR_INPUT
Data : ANY ; //ANY形参指针
END_VAR
VAR_OUTPUT
Error : INT ; //程序错误输出信息
END_VAR
BEGIN
NETWORK
TITLE =
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬将输出错误标志清零╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
L 0;
T #Error; //将输出错误标志清零
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬将ANY指针复制到LB0-LB9╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
L P##Data; //将ANY指针复制到LB0-LB9
LAR1 ;
L D [AR1,P#0.0];
T LD 0;
L D [AR1,P#4.0];
T LD 4;
L W [AR1,P#8.0];
T LW 8;
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬判断ANY指针是否输入错误╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
L LB 0;
L B#16#10;
==I ;
JCN ERR1; //如果输入指针类型错误,跳转到ERR1
L LB 6;
L B#16#84;
==I ;
JCN ERR2; //如果输入数据区是不是DB块,跳转到ERR2
L LB 1;
L B#16#8;
==I ;
JCN ERR3; //如果输入数据类型不是REAL,跳转到ERR3
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬(读取起始地址)╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
OPN DB [LW 4]; //打开当前的数据块
L LD 6; //32位交叉区域指针
SLD 8; //数据起始地址去掉数据区标识部分
SRD 8; //只保留数据起始地址
T LD 10; //将数据起始地址保存至LD10
//╬╬╬╬╬╬╬╬╬╬╬(内、外循环判断数据大小并从小到大排序)╬╬╬╬╬╬╬╬╬╬╬╬
L LW 2; //数据个数
L 1;
-I ;
NXT2: T LW 20; //外循环次数
LAR1 LD 10; //内外循环从数据起始地址开始寻址
NXT1: T LW 18; //内循环次数
L D [AR1,P#0.0];
L D [AR1,P#4.0];
<R ; //将小于改为大于数据从大到小排序!注意:将中文小于字符改成英文字符小于
JC M001;
T D [AR1,P#0.0];
TAK ;
T D [AR1,P#4.0];
M001: +AR1 P#4.0; //内循环地址向前推进
L LW 18;
LOOP NXT1;
L LW 20;
LOOP NXT2;
JU GOOD;
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬(程序的故障处理和退出)╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
ERR1: L 1; //输入指针类型错误
T #Error;
JU EXIT;
ERR2: L 2; //输入数据区不是DB块
T #Error;
JU EXIT;
ERR3: L 3; //输入数据类型不是REAL
T #Error;
EXIT: CLR ;
SAVE ;
BE ;
GOOD: SET ;
SAVE ;
BE ;
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
END_FUNCTION
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54621条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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