[Aide] 8051 interfacing sensirion SHT7X capteur numérique

Okie, je comprends ce que vous
m'avez donné now.Thank vous!

Une autre question est que, pour ce enginerring unité de conversion en utilisant 89c52.Pourquoi les choses devraient être comme ça? Est-ce nous avons besoin d'une transformation de l'équation à une équation où le microprocesseur peut exécuter?

Vous avez dit que je
n'ai pas besoin de suivre le rapprochement donné?Qu'est-ce que cela signifie?

Désolé ...Peut-être que je suis abit lent!!

 
Salut,
La méthode proposée est de surmonter le besoin de calculs en virgule flottante.Bien que la méthode de calcul de gagner du temps, il
s'agit de négliger certains termes et dans cette mesure, il est inexact.En faisant un calcul 16 bits, mais il prend peu de temps supplémentaire,
ce qui
n'est pas critique dans ce cas, vous pouvez obtenir des résultats plus précis.Dans tous les cas, vous
n'avez pas besoin de faire des calculs en virgule flottante.

Observe,
Laktronics

 
Désolé pour la fin de mise à jour.

Pour la température formule
T = 0,01 [BCD de (Rdt -1 en 13 bits)
100 D]

J'ai séparé la 14e suite à deux bits 8 bits registre, disons B inscrire la tenue de la plus importante et d'une exploitation octet le moins significatif octet.

Ainsi, pour les
100 D 0110 = 0100B

ADD A, # 0110 0100BPour Rdt -1 en 13 bits (13 bits de Rdt = 5e bit dans le registre A)

Subb B, # 0001 0000BPar conséquent A tenir octet le moins significatif et B détiennent la plus importante octet.

J'ai deux questions jusque-là.
1) Après cette opération devrait donner le i OV drapeau? Pour indiquer que le processeur B et A la fois représentant ensemble une nombre de 16 bits?
2) Comment faire pour stocker le résultat dans le registre 14bit A et B?Est-il d'un manuel de façon à:
P2.7 's bit X 2 ^ 7
p2.6 's bit X 2 ^ 6
p2.5 's bit X 2 ^ 5
p2.4 's bit X 2 ^ 4
p2.3 's bit X 2 ^ 3
p2.2 's bit X 2 ^ 2
p2.1 's bit X 2 ^ 1
p2.0 's bit X 2 ^ 0

P0.7 's bit X 2 ^ 7
p0.6 's bit X 2 ^ 6
p0.5 's bit X 2 ^ 5
p0.4 's bit X 2 ^ 4
p0.3 's bit X 2 ^ 3
p0.2 's bit X 2 ^ 2
p0.1 's bit X 2 ^ 1
p0.0 's bit X 2 ^ 0

Et d'ajouter en utilisant le résultat opération ajouter un par un dans le registre?
Je pense que ce devrait être bon travail?

Merci.

 
Salut,
Lorsque vous ramasser les bits un par un dans le détecteur, et que vous obtenez MSB en premier lieu, après chaque bit de stockage en porter, vous faire une RLC un (rotation Accu. Procéder à gauche) l'instruction et de stocker chaque bit dans l'accumulateur, à partir de sa LSB en raison de la rotation à gauche.
Après la collecte de chaque octet, le ranger dans un emplacement mémoire dire en premier octet 30h,
à côté byte en 31h et ainsi de suite.Lorsque vous voulez faire le calcul, lire ces octets dans un accumulateur et B reg et de faire le traitement.
Lorsque vous ajoutez comme ci-dessus, vous avez clairement de transporter et de faire un ADDC (ADD à transporter) et ensuite ajouter l'instruction de cette procéder à la MSByte.De même, tout en soustrayant le 13 bits comme indiqué ci-dessus, vous devez rechercher tout transporter (emprunts) dans ce cas, je
m'attends à grignoter les États membres d'être toujours plus grande que 0001b.
Observe,
Laktronics

 
Okie, i RLC ajouté à la boutique de l'octet R0 (pour MSB) et R1 (pour LSB) registre

Est-ce la bonne manière?J'ai téléchargé le code

Et je tente de calculer la température après cette équation aussi.

Je ne comprends pas une partie de la soustraction.

Citation:

tout en soustrayant le 13 bits comme indiqué ci-dessus, vous devez rechercher tout transporter (emprunts) dans ce cas, je m'attends à grignoter les États membres d'être toujours plus grande que 0001b.

 
J'ai une question sur subtration,
16 bits permet de dire un certain nombre 1010 1010 0110 0000 B et je veux moins une 100D de ce qui est égal à

1010 1010 0110 0000 B - 0110 0100B

Si je fais cette opération en 8051,
j'ai besoin de séparer 1010 1010 0110 0000 B en MSB et LSB pour faire le subtration que c'est?

Disons que
mov R0, # 1010 1010B
mov A, # 0110 0000B

A Subb, # 100D (qui équivaut à 0110 0000B - 0110 0100B)

Alors maintenant, 1010 1010B - 0110 0000B = 1111 1100 B
Lorsque C et AC drapeau fixé à 1.

Donc, prendre 8051 comme unsign numéro?
Et si l'indicateur C à 1, i need to - 1 pour le MSB droit?

Merci!

 
Salut,
1.Dans la mesure du 100D, il est ajouté et soustrait pas, c'est pour compenser une erreur de 1 ° C en raison de la soustraction de 13 bits au lieu de 4000D.
2.Pour les températures négatives, les lectures seront dans un certain nombre à 12 bits.La raison en est, la plage du capteur de -40 ° C à 120 ° C (160 °), est représenté par un nombre 14 bits.Dans l'équation, car il est en soustrayant de la 40D (lecture * 0,01), je suppose que le maximum de valeur en décimal de la lecture devrait être 16000.Donc,
j'attends que, pour toute valeur de ve temp., Le 13 bits ou un peu plus élevé devrait être fixé.Toutefois, si vous voulez mesurer ve-temp., Vous avez signé pour faire un calcul tout en soustrayant le 13 bit.
3.Avez-vous vérifié croix au moins une lecture de la température en utilisant une calculatrice pour savoir il
n'y a pas d'erreur dans les hypothèses?Par exemple, il est supposé que les lectures sont binaires et les -40 de l'équation est décimale, ce qui, si les lectures sont en BCD?Ainsi,
au moins le calcul manuellement à l'aide d'une seule lecture d'une calculatrice, de vérifier il
n'y a aucune erreur de fait dans les hypothèses et ensuite seulement procéder à la mise en œuvre de logiciels.
4.Stockage de la lecture au RO/R1 est OK, car ils peuvent être plus esily manipuler.

Si
j'ai laissé de côté tout point de réponse,
s'il vous plaît faites le moi savoir.
Observe,
Laktronics

 
Oui
j'ai fait faire une prise en charge de la valeur,
de sorte que je demeure RDT - 1 en 13bit est toujours valable ou positive à une température de 1 ° C

Désolé,
cette hypothèse est faite pour le calcul de l'humidité 12bit.

Comme i simplifiée de la dernière équation pour
Rh = 0,01 [4 (RDH-100D) 2 n1n2] - 2.8x10 ^ -4 (n1.256) ^ 2]Je RDH = 1001 0011 0001 = 75% d'humidité
relative [sans compensation]

et je tiens à moins d'un 100D, ce qui est égal à

1001 0011 0001B - 0110 0100B

Si je fais cette opération en 8051,
j'ai besoin de séparer 1001 0011 0001B en MSB et LSB pour faire le subtration que c'est?

Disons que
mov R0, # 0000 1001B
mov A, # 0011 0001B

A Subb, # 100D (qui équivaut à 0011 0001B - 0110 0100B)

Et ma question est la suivante:

1) Alors, le microprocesseur de prendre 0011 0001B-0110 0100B = 1100 1101?
Lorsque C et AC drapeau fixé à 1?

2) Et si C drapeau fixé à 1,
j'ai besoin de moins 1 pour le MSB droit?

3) Comment puis-je vérifier si C déclencher flag à 1 et si elle est déclenchée, je tiens à moins de 1 pour le MSB bye?

Merci!

 
Salut,
Oui si vous ne multi byte arithmétique, vous devez garder la trace de transporter et d'ajouter / de sous MS byte lorsque fixés.Vous pouvez effacer des première et l'utilisation Subb / ADDC instruction automatiquement à prendre soin de procéder.
Observe,
Laktronics

 
Comment procéder sera automatiquement en utilisant Subb poignée de commande dans mon cas?Comme i MSB et LSB séparé en deux s'enregistrer? Est-ce ce que je fais comme ci-dessous

Exemple:
1001 0011 0001B - 0110 0100B

Disons que
mov R0, # 0000 1001B
mov A, # 0011 0001B

A Subb, # 100D (qui équivaut à 0011 0001B - 0110 0100B)

Ici Carry flag set.

MOV A, R0
Subb A, # 00H (Subb commande d'une valeur de moins de 1 depuis procéder est?)

Est-ce la manière?

J'ai besoin d'exemple pour moi de comprendre comment fonctionnent réellement à ça.
Mon livre de référence ont une information insuffisante.

Merci beaucoup

 

Welcome to EDABoard.com

Sponsor

Back
Top