两种方法
1,步进指令(模仿for循环)
ZRST( M8002 ,S10 , S11 );
MOV( M8002 , 1, D0 );(*保存结果*)
MOV( M8002 , 3 ,D1 );(*保存过程*)
SET( M8002 ,S10 );
STL( TRUE ,S10 );
ADDP( S10, D0 , D1 , D0 );
SET( S10 , S11);
STL( TRUE ,S11 );
ADDP( S11, D1 , 2 , D1 );
SET( D1<100 AND S11 , S10);
ZRST(S11 AND D1>=100 ,S10 , S11 );
RET(TRUE);
2,直接for循环
IF M0=TRUE THEN
MOV( M0 , 1 , D0 );
FOR D1:=3 TO 99 BY 2 DO
D0:=D1+D0;
wdt(TRUE);
END_FOR;
M0:=FALSE;
END_IF;
按你的那个计算结果都是2500
1,步进指令(模仿for循环)
ZRST( M8002 ,S10 , S11 );
MOV( M8002 , 1, D0 );(*保存结果*)
MOV( M8002 , 3 ,D1 );(*保存过程*)
SET( M8002 ,S10 );
STL( TRUE ,S10 );
ADDP( S10, D0 , D1 , D0 );
SET( S10 , S11);
STL( TRUE ,S11 );
ADDP( S11, D1 , 2 , D1 );
SET( D1<100 AND S11 , S10);
ZRST(S11 AND D1>=100 ,S10 , S11 );
RET(TRUE);
2,直接for循环
IF M0=TRUE THEN
MOV( M0 , 1 , D0 );
FOR D1:=3 TO 99 BY 2 DO
D0:=D1+D0;
wdt(TRUE);
END_FOR;
M0:=FALSE;
END_IF;
按你的那个计算结果都是2500