Rảnh rỗi nên em viết code chơi cho không quên kiến thức
không biết nó có ích không, sau đây là chức năng ạ
hàm cộng nhiều số liên tiếp, có gì sai mấy anh chỉ em với ạ
ví dụ muốn cộng 10 byte bắt đầu từ mb10 ---> nhập p#m10.0 byte 10
cộng 10 số int bắt đầu từ mw10--> nhậpp#m10.0 int 10
cộng 10 số dint bắt đầu từ md10--> nhậpp#m10.0 dint 10
FUNCTION "sum" : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
IN : ANY ;
END_VAR
VAR_OUTPUT
sum : DINT ;
END_VAR
VAR_TEMP
data_type : BYTE ;
n : INT ;
count : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##IN;
LAR1 ;
L B [AR1,P#1.0];
T #data_type;
L W [AR1,P#2.0];
T #n;
L D [AR1,P#6.0];
LAR1 ;
//------------------------------------------
A( ;
L #data_type;
L B#16#2;
==I ;
) ;
JNB lb1;
L 0;
T #data_type;
JU next;
lb1: A( ;
L #data_type;
L B#16#5;
==I ;
) ;
JNB lb2;
L 1;
T #data_type;
JU next;
lb2: A( ;
L #data_type;
L B#16#7;
==I ;
) ;
JNB err;
L 2;
T #data_type;
next: NOP 0;
L 0;
T #sum;
L #n;
lap: T #count;
L #data_type;
JL er;
JU l0;
JU l1;
JU l2;
er: JU err;
l0: L B [AR1,P#0.0];
L #sum;
+D ;
T #sum;
+AR1 P#1.0;
JU lb3;
l1: L W [AR1,P#0.0];
L #sum;
+D ;
T #sum;
+AR1 P#2.0;
JU lb3;
l2: L D [AR1,P#0.0];
L #sum;
+D ;
T #sum;
+AR1 P#4.0;
lb3: NOP 0;
L #count;
LOOP lap;
BEU ;
err: NOP 0;
BEU ;
END_FUNCTION