[Aiuto] 8051 interfacciamento sensirion SHT7X sensore digitale

Okie, ho capito quello che mi avete dato da now.Thank voi!

Un'altra questione è che, per questa unità di conversione enginerring utilizzando 89c52.Perché le cose dovrebbero essere come questo?
E 'abbiamo bisogno di una trasformazione della equazione di una equazione in cui il microprocessore può eseguire?

Lei ha detto che non ho bisogno di seguire il ravvicinamento dato?Che cosa significa?

Siamo spiacenti ...forse sono abit lento!

 
Salve,
Il metodo suggerito è quello di superare la necessità di calcoli in virgola mobile.Mentre il metodo di calcolo di risparmiare tempo, si tratta di trascurare alcuni termini e di misura che è impreciso.Facendo un intero a 16 bit aritmetica,
anche se si po 'di tempo, che non è critica, in questo caso, è possibile ottenere risultati più accurati.In ogni caso non è necessario fare i calcoli in virgola mobile.

Saluti,
Laktronics

 
Siamo spiacenti per il ritardo di aggiornamento.

Per la temperatura formula
T = 0,01 [di BCD (RDT -1 a 13 bit)
100 D]

I 14 bit separato seguito a due 8bit registro,
diciamo registro B detiene il byte più significativi e di una holding nonché il byte meno significativo.

Così, per la
100 D = 0110 0100B

ADD A, # 0110 0100BPer RST -1 in 13 bit (13 bit di RST = 5a bit nel registro A)

Subb B, # 0001 0000BPertanto A tenere il byte meno significativo e B tenere premuto il byte più significativo.

I due hav questione fino a qui.
1) Dopo questa operazione i OV deve impostare il flag? Per indicare la CPU che B e A, sia insieme che rappresenta un numero a 16 bit?
2) Come conservare il risultato nel registro 14bit A e B?E 'da un manuale modo simile al seguente:
P2.7 's po' X 2 ^ 7
p2.6 's po' X 2 ^ 6
p2.5 's po' X 2 ^ 5
p2.4 's po' X 2 ^ 4
p2.3 's po' X 2 ^ 3
p2.2 's po' X 2 ^ 2
p2.1 's po' X 2 ^ 1
p2.0 's po' X 2 ^ 0

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

Funzionamento e l'utilizzo di aggiungere aggiungere il risultato uno per uno nel registro?
Penso che questo lavoro dovrebbe essere giusto?

Grazie.

 
Salve,
Quando si è ripresa il bit uno per uno dal sensore, e dato che si ottiene MSB prima, dopo la memorizzazione di ogni bit di procedere, fare uno RLC uno (ruotare Accu. Lasciato trasportare) l'istruzione e memorizzare ogni bit nel accumulatori, LSB partire con la sua causa a sinistra rotazione.
Dopo la raccolta di ogni byte, memorizzare in una posizione di memoria dire in primo byte 30h, accanto byte in 31h e così via.Quando si desidera effettuare il calcolo,
si prega di leggere queste bytes nella accumulatori e B reg e fare il trattamento.
Quando si aggiunge, come in precedenza, si procede prima chiara e fare uno ADDC (ADD con carry ") e successivamente aggiungere istruzioni per procedere al presente MSByte.Allo stesso modo, mentre la sottrazione del 13 bit come sopra, si dovrebbe cercare di portare qualsiasi (in prestito), anche se in questo caso mi aspetto che gli Stati membri morso di essere sempre superiore a 0001b.
Saluti,
Laktronics

 
Okie, ho aggiunto RLC per memorizzare i byte in R0 (per MSB) e R1 (per LSB) registro

E 'questo il modo corretto?Ho caricato il codice

E cerco di calcolare la temperatura che anche dopo l'equazione.

Non capisco per la sottrazione parte.

Citazione:

mentre sottraendo 13 bit come sopra, si dovrebbe cercare di portare qualsiasi (in prestito), anche se in questo caso mi aspetto che gli Stati membri morso di essere sempre superiore a 0001b.

 
Ho una domanda su subtration,
Consente dire 16bit numero 1010 1010 0110 0000 B e voglio meno una 100 D da essa, che è uguale a

1010 1010 0110 0000 B - 0110 0100B

Se faccio questa operazione nel 8051, ho bisogno di separare 1010 1010 0110 0000 B in MSB e LSB per fare il subtration è?

Diciamo che
MOV R0, # 1010 1010B
mov A, # 0110 0000B

Subb A, # 100 D (che a parità di 0110 0000B - 0110 0100B)

Così ora 1010 1010B - 0110 0000B = 1111 1100 B
Dove C e AC bandiera fissato a 1.

Quindi 8051 prende come unsign numero?
C bandiera e, se impostato a 1, ho bisogno di - 1 per l'MSB giusto?

Grazie!

 
Salve,
1.Per quanto riguarda la 100 D, è aggiunto, e non sottrarre, che è quello di compensare per un errore di 1 ° C a causa della sottrazione di 13 bit invece di 4000D.
2.Per temperature negative, le letture saranno a 12 bit
all'interno di un numero.Questo è dovuto al fatto che il sensore di -40 ° C a 120 ° C (160 ° in totale) è rappresentata da un numero a 14 bit.L'equazione in quanto egli è sottraendo dalla 40D (lettura * 0,01),
non so il valore massimo in decimali di lettura dovrebbe essere 16000.Quindi mi aspetto che, per ogni valore di ve temp., 13 bit o un po 'più elevato dovrebbe essere fissato.Tuttavia, se si vuole misurare ve-temp., Devi fare un firmato aritmetica, mentre la sottrazione del 13 bit.
3.Avete croce controllati almeno una lettura di temperatura utilizzando una calcolatrice per scoprire non vi è alcun errore nelle ipotesi?Ad esempio, si presume che le letture sono binari e il -40 in equazione è decimale, cosa fare se le letture sono in BCD?Così, almeno calcolare manualmente utilizzando una calcolatrice una sola lettura, per verificare non vi è alcun errore di fatto in ipotesi e solo allora procedere con l'implementazione software.
4.Come conservare la lettura in RO/R1 è OK in quanto possono essere più esily manipolato.

Se ho lasciato fuori un punto qualsiasi di risposta, per favore fatemelo sapere.
Saluti,
Laktronics

 
Sì ho fatto fare alcune ipotesi, con il valore, così ho notato RST - 1 a 13bit è sempre valido o positiva a una temperatura> 1 ° C

Siamo spiacenti, l'ipotesi di cui sopra è stata fatta per la 12BIT umidità calcolo.

Come i semplificata per l'ultima equazione
Rh = 0,01 [4 (Rdh-100 D) 2 n1n2] - 2.8x10 ^ -4 (n1.256) ^ 2]Sia Rdh = 1001 0011 0001 = 75%
di UR [senza compensazione]

e voglio a meno che uno da 100 D, che è uguale a

1001 0011 0001B - 0110 0100B

Se faccio questa operazione nel 8051, ho bisogno di separare 1001 0011 0001B in MSB e LSB per fare il subtration è?

Diciamo che
MOV R0, # 0000 1001B
mov A, # 0011 0001B

Subb A, # 100 D (che a parità di 0011 0001B - 0110 0100B)

E la mia domanda è la seguente:

1) Così ora prendere microprocessore 0011 0001B-0110 0100B = 1100 1101?
Dove C e AC bandiera fissato a 1?

2) E se C bandiera a 1, ho bisogno di meno 1 per l'MSB giusto?

3) Come faccio a verificare se C bandiera trigger a 1 e se è attivato i wanna meno di 1 per la MSB bye?

Grazie!

 
Salve,
Sì, quando si fa più byte aritmetica devi tenere traccia di trasportare e di aggiungere / sub a MS byte quando impostato.È possibile portare chiaro prima e l'uso subb / ADDC automaticamente le istruzioni per prendersi cura di procedere.
Saluti,
Laktronics

 
Come procedere sarà gestire automaticamente utilizzando subb comando nel mio caso?Come separare i MSB e LSB in due registrarsi? È come quello che faccio al di sotto

Esempio:
1001 0011 0001B - 0110 0100B

Diciamo che
MOV R0, # 0000 1001B
mov A, # 0011 0001B

Subb A, # 100 D (che a parità di 0011 0001B - 0110 0100B)

Qui Carry flag.

MOV A, R0
Subb A, # 00H (subb comando meno valore di A con 1 dal procedere è impostato?)

E 'il modo?

Ho bisogno di qualche esempio per me, per capire come funzionino veramente fuori.
Il mio libro di riferimento sono informazioni insufficienti.

Grazie mille

 

Welcome to EDABoard.com

Sponsor

Back
Top