У вас проблема здесь: udintVar:= shr(udintVar,selectIn);
Вы сдвигаете на бит и запоминаете число, потом в этом
новом числе вы сдвигаете на два бита и т.д.
В общем,
Код:
var //объявление локальных переменных
bitArray : array [0..15] of bool;
flag : udint;
i : udint;
end_var
for i := 0 to 15 do
flag := shr(bitMask, i);
bitArray[i] := flag.0;
end_for