SET_BIT
Atribui um valor lógico a um bit específico de uma variável do tipo BYTE, WORD,
DWORD ou LWORD (ANY_BIT) e retorna o valor resultante. É uma função.
Biblioteca: HI_STD · Namespace: HILS · Tipo: função
Função
SET_BIT
+---------------+
ANY_BIT ----|INP |---- ANY_BIT
| |
INT ----|BIT_POS |
| |
BOOL ----|BIT_VAL |
+---------------+
Nota
O identificador do bit inicia em 0, sendo este o bit menos significativo da variável especificada.
Parâmetros
Nome |
Direção |
Tipo |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|
INP |
IN |
ANY_BIT |
— |
— |
Variável cujo bit será atribuído com o valor informado. |
BIT_POS |
IN |
INT |
0 |
0 .. (bits de INP - 1) |
Posição do bit a ser atribuído (0 = bit menos significativo). |
BIT_VAL |
IN |
BOOL |
FALSE |
— |
Valor lógico a ser atribuído ao bit especificado de |
Retorno / Saídas
Retorna um valor ANY_BIT igual a INP com o bit BIT_POS ajustado para
BIT_VAL.
Pré-condições
BIT_POSdeve estar dentro da faixa de bits do tipo deINP(ex.: 0..7 para BYTE, 0..15 para WORD, 0..31 para DWORD, 0..63 para LWORD).
Observações
O tipo do retorno acompanha o tipo de
INP(BYTE, WORD, DWORD ou LWORD).
Ver também
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
v_inp : DWORD := 16#0001_0000; (* valor do tipo any_bit *)
END_VAR
(* Exemplo de ativação da função dentro da POU *)
(* ... *)
// No primeiro ciclo de scan, o valor da variável v_inp neste ponto é 16#0001_0000
v_inp := HILS.SET_BIT(
v_inp, // INP [ANY_BIT] = Variável a ser atribuída com o valor no bit especificado
15, // BIT_POS [INT] = Posição do bit a ser atribuído
TRUE // BIT_VAL [BOOL] = Valor a ser atribuído ao bit especificado da variável INP
);
// O novo valor retornado pela função anterior será 16#0001_8000
v_inp := HILS.SET_BIT(
v_inp, // INP [ANY_BIT] = Variável a ser atribuída com o valor no bit especificado
16, // BIT_POS [INT] = Posição do bit a ser atribuído
FALSE // BIT_VAL [BOOL] = Valor a ser atribuído ao bit especificado da variável INP
);
// O novo valor ao final da execução anterior será 16#0000_8000
(* ... *)