Page 1 sur 1

DFB SUR UNITY

Posté : 20 avr. 2016, 22:08
par MATT
Bonjour,

Avez-vous ou savez-vous où je peux trouver des DFB unity divers et variées.
>Merci

Re: DFB SUR UNITY

Posté : 21 avr. 2016, 07:10
par itasoft
Slts,
Disons que ya une fonction qui manque cruellement (surtout quand le besoin s’en fait sentir, lol)
Celle de connaître le nombre de bits à 1 dans un mot de 16 ou 32 bits
Exemples :

(* %MW4=Nombre de bits à 1 dans le mot %MD0 *)
%MD2:=%MD0;
%MW4:=0;
WHILE %MD2<>0 DO
%MW4:=%MW4+(%MD2 AND 1);
%MD2:=SHR(%MD2,1);
END_WHILE;


(* %MW4=Nombre de bits à 1 dans le mot %MW0 *)
%MW2:=%MW0;
%MW4:=0;
WHILE %MW2<>0 DO
%MW4:=%MW4+(%MW2 AND 1);
%MW2:=SHR(%MW2,1);
END_WHILE;

------------------------------------
Aussi :
Dans les instructions de décalages (SHR,SHL) le nombre de positions vers la droite ou vers la gauche est une constante fixe Ex : (SHR,1)
Parfois, le besoin se fait cruellement sentir d’avoir le nombre de positions qui soit une variable
Exemple :
(*
Décalage à gauche des bits du mot %MW0 de X positions, résultat dans %MW2
%MW4=nombre de positions
*)

%MW2:=%MW0;
%MW2:=%MW2*REAL_TO_INT(EXPT(2.0,INT_TO_REAL(%MW4)));


(* Ceci dit, on peut aussi faire une boucle, LOL *)
%MW2:=%MW0;
FOR %MW3:=1 TO %MW4 DO
%MW2:=SHL(%MW2,1);
END_FOR;

Re: DFB SUR UNITY

Posté : 21 avr. 2016, 10:05
par philou77
Salut !
sympa les fonctions..

On peut aussi tout simplement multiplier ou diviser par les puissances de deux pour réaliser des décalages non ?

/2 = 1 bit vers la droite
/4 = 2 bits vers la droite
etc...

*2 = 1 bit vers la gauche
*4 = 2 bits vers la gauche
etc...

Re: DFB SUR UNITY

Posté : 21 avr. 2016, 10:20
par itasoft
slts,
oui mais tu met dans quelle variable le nombre de décalages à faire ???

Re: DFB SUR UNITY

Posté : 21 avr. 2016, 10:31
par philou77
pas faux...
En te relisant, je m'aperçois que c'est ce que tu fais déjà.
Donc je fais du bruit..pour rien
désolé !

Re: DFB SUR UNITY

Posté : 21 avr. 2016, 10:37
par itasoft
slts, phil,
J’aurais du poser la question autrement , LOL
L’opérateur saisi via un IHM :
-La valeur à décaler dans %MW0
-Le nombre de décalages à faire dans la variable %MW4
Ecrire une ligne de programme pour effectuer ce décalage