Dobrý den, když jsem se pokusil použít tuto direktivu v ST projektu, tak mi překladač hlásí "Directives {ASM} or {END_ASM} can be entered only inside POU body", bez ohledu na to zda jsem to zkusil v programu, funkčním bloku nebo funkci.
V jaké části tedy může být použita?
Mimochodem - chtěl jsem tím řešit výpočet rozdílu hodnoty pointerů (tedy kolik je mezi nimi bytů), než jsem zcela náhodně zde v jedné z nesouvisejících odpovědí objevil funkci PTR_TO_UDINT a opačné, o které není v nápovědě ani zmínka.
Odpovědi 1
Direktiva {asm} nesmí být použita v deklarační části POU a ani hned za klíčovým slovem END_VAR, kterým končí deklarační část POU. Když taková situace nastane, je potřeba ještě vložit před {asm} begin, což překladači řekne, že tam už začíná výkonná část POU, že už je to součást programu.
Vypadá to takhle:
VAR
...
END_VAR
BEGIN
{ASM}
...
{END_ASM}
// dál pokračuje kód v ST
Vaše odpověď
Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.