SHR

Décaler des bits vers la droite

SHR décale une valeur en bits d’un nombre de positions défini (N) vers la droite et remplit les positions vacantes avec des zéros.

Décalage de bits vers la droite, remplissage à gauche avec des zéros :

  1.  (1) Registre source
  2.  (2) Destination
  3.  (3) Les 4 bits de poids fort sont remplis avec des zéros.

Paramètres

Entrée

IN (BOOL, WORD, DWORD)

1e entrée : valeur d’entrée

N (BOOL, WORD, DWORD)

2e entrée : nombre de bits selon lequel la valeur d’entrée est décalée vers la droite

Sortie

Var_OUT (BOOL, WORD, DWORD)

Sortie comme entrée : résultat

NOTA

Si la 2e variable d’entrée N (nombre de bits à décaler) est du type de données DWORD, seuls les 16 bits de poids faible sont pris en compte.

Exemple

En-tête du POU

Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.

	VAR
		source_register: WORD:=0;
		target_register: WORD:=0;
	END_VAR

Cet exemple utilise des variables. Vous pouvez également utiliser une constante pour la variable d’entrée.

Corps en LD

Les derniers N bits (ici 4) de source_register sont décalés vers la droite. Les positions vacantes sur la gauche sont complétées par des zéros. Le résultat est écrit dans target_register.

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,SHR!,Instance,9,1,14,5,,?DIN?DN?C);
B(B_VARIN,,source_register,7,2,9,4,);
B(B_VARIN,,4,7,3,9,5,);
B(B_VAROUT,,target_register,14,2,16,4,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en IL

Modifié le : 2023-05-11Commentaires sur cette pageAssistance téléphonique