Hirdetés

Új hozzászólás Aktív témák

  • Szirty

    őstag

    válasz DP_Joci #525 üzenetére

    ali DP_Joci!

    "gazából nem látom a működés eredményét, ha az az lenne, hogy egyik DB-ből másol a másikba. :("

    Itt egy példa, ami egy integerben megadott számú adatblokkból egy INT típust egy integerben megadott számú címről bemásol az MW0-ba az ANY használatával.:

    FUNCTION FC 1 : VOID
    TITLE =
    VERSION : 0.1

    VAR_INPUT
    SrcDB : INT ; //Forrás blokk száma
    SrcADDR : INT ; //Kezdőcím a forrásblokkban
    END_VAR
    VAR_TEMP
    SRC : ANY ;
    RV : INT ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =

    L P##SRC;
    LAR1 ;
    L B#16#10; //Mindig 10h
    T LB [AR1,P#0.0];
    L B#16#5; //Típus azonosító 5h=INT
    T LB [AR1,P#1.0];
    L W#16#1; //Ismétlési faktor = 1
    T LW [AR1,P#2.0];
    L #SrcDB; //A forrás DB száma
    T LW [AR1,P#4.0];
    L #SrcADDR;
    SLD 3;
    L DW#16#84000000; //Adatterület azonosítója 84h=Data block
    OD ; //Az adatterület és a cím együtt egy DW-ben
    T LD [AR1,P#6.0];
    CALL SFC 20 (//Blokk másolás
    SRCBLK := #SRC,
    RET_VAL := #RV,
    DSTBLK := P#M 0.0 WORD 1);

    END_FUNCTION

    És a hívás:

    CALL FC 1
    SrcDB :=24
    SrcADDR:=4

    Ez az MW0-ba írja a DB24 DBW4-et

Új hozzászólás Aktív témák