[Numérique] masque
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

masque



  1. #1
    pimpan

    masque


    ------

    Bonjour ,
    pouvez vous me dire comment faire une procédure (sur lazarus) qui, va utiliser un masque pour mettre certain et tous les bit à 0, et un autre avec certain et tous les bits à 1 merci

    -----

  2. #2
    gcortex

    Re : masque

    AND F0 pour mettre les poids faibles à 0.
    OR 0F pour mettre les poids faibles à 1.

  3. #3
    pimpan

    Re : masque

    merci pour ta réponse mais je suis perdu, il faut que je fasse 2 procédures, l'une qui va mettre les bits à 1, et l'autre à 0. J'ai déjà essayé cette qui les mets à 1 mais rien ne va j'ai plein d'erreurs.

    procedure TThreadSerie.SetBitEtatCommand e(valeur : byte);
    var
    Temporaire : byte;
    begin
    Temporaire := $00; // 0000 0000 // +1, décale
    Temporaire := EtatCommande.PlusDosage and $01; // 0000 0001
    Temporaire := Temporaire shl 1; // 0000 0010
    Temporaire := Temporaire or (EtatCommande.MoinsDosage and $01); // 0000 0011
    Temporaire := Temporaire shl 1; // 0000 0110
    Temporaire := Temporaire or (EtatCommande.PlusSaumure and $01); // 0000 0111
    Temporaire := Temporaire shl 1; // 0000 1110
    Temporaire := Temporaire or (EtatCommande.MoinsSaumure and $01); // 0000 1111
    Temporaire := Temporaire shl 1; // 0001 1110
    Temporaire := Temporaire or (EtatCommande.PlusLargeur and $01); // 0001 1111
    Temporaire := Temporaire shl 1; // 0011 1110
    Temporaire := Temporaire or (EtatCommande.MoinsLargeur and $01); // 0011 1111
    Temporaire := Temporaire shl 1; // 0111 1110
    Temporaire := Temporaire or (EtatCommande.Surdosage and $01); // 0111 1111
    Temporaire := Temporaire shl 1; // 1111 1110
    Temporaire := Temporaire or (EtatCommande.EmbrayageSaumure and $01); // 1111 1111
    end;
    // shl shr or and var etat commande

  4. #4
    gcortex

    Re : masque

    pourquoi tu travailles pas directement en hexa ?
    je ne connais pas ce langage mais si tu fais :
    if () alors OR $01
    if () alors OR $02
    if () alors OR $04
    if () alors OR $08
    if () alors OR $10
    if () alors OR $20
    if () alors OR $40
    if () alors OR $80
    Dernière modification par gcortex ; 02/07/2020 à 15h33.

  5. A voir en vidéo sur Futura
  6. #5
    pimpan

    Re : masque

    car j’interprète des trames avec des octets, où chaque bit va définir quelque chose.

  7. #6
    gcortex

    Re : masque

    tes trames sont en binaire ?
    pourquoi pas une boucle ?
    si tu fais AND $01, seul le bit à la fin compte
    Dernière modification par gcortex ; 02/07/2020 à 15h57.

  8. #7
    umfred

    Re : masque

    ta fonction doit mettre tous les bits à 1 ? ou juste certains bits ?
    1)tout à 1: EtatCommande:= EtatCommande OR $FF; (rien à faire d'autre)
    2)certains bits: tu devrais passer en paramètres un byte avec les bits à mettre à 1 (c'est ce que ta fonction semble vouloir faire avec le paramètre valeur)
    et donc là encore c'est simplement: EtatCommande:=EtatCommande OR valeur (valeur devant être un mot avec un 1 aux bits à mettre à 1)
    Sinon tu dois aussi pouvoir faire directement EtatCommande.PlusSaumure = 1

    Pour le forçage à 0, même principe mais en inversant le mot valeur (~valeur je crois, ou not valeur) et AND (&) à la place de or (|)

    PS: dans ton code, tu n'utilises pas le paramètre valeur

  9. #8
    umfred

    Re : masque

    j'ai oublié de rajouter que pour déterminer valeur, le plus simple c'est d'avoir une enum des bits (qui existe déjà peut-être d'ailleurs) avec bitPlusDosage =$01; bitMoinsDosage=$02; bitPlusSaumure=$04, bitMoinsSaumure=$08; bitPlusLargeur=$10; bitMoinsLargeur=$20; bitSurdosage=$40; bitEmbrayageSaumure=$80
    et de faire valeur = bitPlusDosage+bitMoinsSaumure+ bitMoinsLargeur si on veut mettre à 1 les bits correspondant
    (pour les passer à 0, valeur = not(bitPlusDosage+bitMoinsSaum ure+bitMoinsLargeur) )

Discussions similaires

  1. MAsque en C et liaison SPI
    Par invite8a011b82 dans le forum Électronique
    Réponses: 12
    Dernier message: 27/06/2012, 16h28
  2. Masque de plongée
    Par invite93500192 dans le forum Chimie
    Réponses: 9
    Dernier message: 31/03/2011, 18h13
  3. Masque sur une variable en C
    Par Pilou81 dans le forum Électronique
    Réponses: 4
    Dernier message: 27/04/2010, 20h22
  4. Masque en C PIC16F690
    Par invite069857b8 dans le forum Électronique
    Réponses: 5
    Dernier message: 18/05/2009, 18h07
Découvrez nos comparatifs produits sur l'informatique et les technologies.