Problème de logique numérique

C

CMOS

Guest
Salut,
J'ai les options suivantes qui définit / réinitialise les bits d'un 14-bit de mot particulier.Après au niveau du bit »and« ing les options choisies à partir de parapher toutes les '1 '3FFF dire la valeur-je obtenir le mot de sortie finale.

WDT: ENABLED = 3FFF
Disabled = 3FFB

PWRTE: disabled = 3FFF
Enabled = 3FF7

OSCLIIATOR: RC = 3FFF
HS = 3ffe
XT = 3FFD
LP = 3FFC

CODE PROTECT: disabled = 3FFF
Enabled = 000FSupposons que les options sélectionnées sont
WDT = DISABLED (3FFB)
PWRTE = activé (3FF7)
CVMO.= LP (3FFC)
CP = DISABLED (3FFF)

Puis le dernier mot est (3FFF ET 3FFB ET 3FF7 ET 3FFC ET 3FFF) = 3FF0

Mon problème est suppose que si j'ai 3FF0 Word Comment puis-je savoir laquelle des options ci-dessus ont été choisis?
Dernière édition par le CMOS 13 décembre 2004 08:42, édité 1 fois au total

 
Eh bien CMOS, je ne peux pas vraiment faire la différence entre ce que vous appelez "A:" Enabled ", B: personnes handicapées", "C:" P, "D: Désactivé" et ("C: Q" et "C: R »ou« C: S "), mais si nous le nom de l'bits de votre 14-bits de mots comme [W13 .. W0] (W13 MSB), vous pouvez tester (ET logique de« 1 ») les quatre importantes 4 au minimum bits de votre dernier mot (c.-à-W3, W2, W1 et W0).
La combinaison de la logique '0 's vous indiquer le mode "options".
Dans votre exemple:
3FF0h -> [W3 .. W0] = 0000, ce qui signifie:
D handicapés (parce que la suite> 0Fh);
B activé (W3 = 0);
A handicapés (W2 = 0);
C: R (W1 = 0);
C: Q (W0 = 0);
ou
C: S (W1 = 0 et W0 = 0)
ou j'ai totalement raté votre question ...

 
Salut
Activés, désactivés ne sont que les noms d'option.Ce sont des valeurs peu et pourrait être n'importe quel nom.Je suis préoccupé par les valeurs de ces options.J'ai édité mon post perméables pour le rendre plus clair.

Ceci est lié à la configuration du mot PIC16F84A.Il dispose de 4 options pour être sélectionné par l'utilisateur dans sa configuration.mot et selon les options choisies le mot de configuration est déterminée.Dans mon dernier post ANDing valeurs hexadécimales des options choisies, vous obtenez la config.mot.

Maintenant, je veux faire l'inverse de celui-ci.C'est le cas de configuration.parole est donnée à moi et j'ai donné plus haut la valeur de chaque option Hex, comment puis-je déterminer laquelle de ces options sont sélectionnées.J'ai besoin d'effectuer une opération logique entre config donnée.mot et chaque valeur de l'option pour déterminer si elle est sélectionnée ou non.Mais je ne suis pas en mesure de déterminer quels opération logique révélerait que!

J'espère que je suis clair avec ma question pour le moment.

 
C'est très simple!
De ur de données ...
Code:

WDT: ENABLED = 3FFF

Disabled = 3FFB

Cela signifie que le bit 2 est pour WDT il est 1 pour activer WDT

0 pour WDT DISABLE

PWRTE: disabled = 3FFF

Enabled = 3FF7

Cela signifie que le bit 3 est PWRTE il est 1 pour activer PWRTE

0 pour PWRTE DISABLEOSCLIIATOR: RC = 3FFF

HS = 3ffe

XT = 3FFD

LP = 3FFCCela signifie que le bit 1 à 0 est de l'oscillateur, il est 11 pour RC

10 pour HS

01 pour XT

00 pour LPCODE PROTECT: disabled = 3FFF

Enabled = 000F

Cela signifie bit 13 à 4 est pour le protéger est CODE 1111111111 pour DISABLE

0000000000 pour Enabled

 
nand_gates Salut,
En regardant les options que vous pouvez facilement faire des bits qui indique les paramètres qui.Je vous écris du code pour afficher les paramètres de mot de configuration.Et mon problème est que, après avoir lu le mot de configuration du PIC, j'ai besoin de la disséquer en quatre de la liste ci-dessus et les options d'affichage.Et j'ai besoin de le faire seulement en utilisant la valeur du mot de configuration et les valeurs individuelles des options ci-dessus que j'ai.Je ne peux pas coder en dur les numéros de peu, parce que ces options sont différentes pour d'autres photos.

Alors que l'opération logique entre le mot de configuration et les valeurs d'option permettra de connaître la solution choisie?

 
Pas sûr que je comprends parfaitement la question, mais

Si CONFIG et 0003 = 0, alors CVMO LP
Si CONFIG et 0003 = 1 alors CVMO XT
Si CONFIG et 0003 = 2 alors CVMO est HS
Si CONFIG et 0003 = 3 alors CVMO RC

Si CONFIG et 0004 <> 0 Then WDT est active autrement WDT inactifs.

Si CONFIG ET 0008 <> 0 Then PWRTE est active autrement PWRTE inactifs.

Si CONFIG ET 3FF0 <> 0 Then CODE PROTECT est inactif autrement active.

 
Colbhaidh Salut,
Thats exactement ce que je voulais.D'abord, je dois inverser les valeurs d'option et puis et avec config.mot.Si je reçois de zéro résultat, cela signifie que l'option est sélectionnée.

Mais il ya un problème.Je reçois 3 non-zéro résultat lors de la vérification de l'option de l'oscillateur.Est-il possible que vous pouvez imaginer ce qui va me donner un seul résultat non nul pour l'option choisie et de zéro pour tous les autres.Cela va faire mon travail de codage un peu facile.

Merci pour l'aide!

 
Vous essentiellement besoin d'un masque de bits qui contient 1 pour tous les bits d'intérêt.

Comme l'option de l'oscillateur est codée dans les bits 0 et 1, le masque de bits contient 1 dans ces positions.(= 0003) ANDing le masque de bits va extraire les bits option, en laissant les autres bits 0.

L'inversion de l'option avec la valeur 0, va produire le masque de bits à 1 supplémentaires dans les soins de positions peu-ne.

 

Welcome to EDABoard.com

Sponsor

Back
Top