de calcul în virgulă mobilă, în Adunarea limba

S

Suresh R

Guest
Salut,
iam interesat să ştiu dacă aş putea face calcule cu virgulă mobilă, în microcontroler AT89S52.
Dacă da, ar putea orice unul a da-mi ceva exemplu cu privire la modul în care aceasta ar putea fi realizat cu ajutorul a Adunării limbaj de programare?

, de exemplu: Cum ar putea i a face următoare folosind Adunarea limbaj de programare?
3,43 5,98

kindly ma asiste.

Suresh.

 
Salut, Un truc foarte simplu este la scară toate numerele cu o constantă, astfel încât să obţineţi doar numere de număr întreg.Puteţi face toate callculations dvs. scalate şi rezultatul va fi scalate, de asemenea, dar încă utilizabil.În acest fel vă poate trebuie sa faci 16 ir 32 biţi pentru Oricare ist de matematica, dar mult mai rapid şi mai simplu decât în virgulă mobilă sau punct fix.

Deci, în exemplul dvs.: Scale toate cu 100.rezultatul este, de asemenea, scalate cu 100.Păstraţi în minte dat se va multiplica la scară de 10000 şi nu 100 de la 100 * 100 = 10000

3.42 5.98 = 9.41 (normal)
343 598 = 941 (scalate cu 100)

 
Salut,
Mulţumesc.
Am aplicat metoda dvs. în "MUL" si "add" instrucţiunile din 8051, care i folos.
Iam obtinerea de rezultatul acesteia, dar în formă hexazecimale.Pot să ştiu cum ar putea fi convertite pentru a forma zecimal sau sub formă de BCD?
Pentru ca necesitatea de a da că, pentru a afişa şapte segment.
I a putut găsi o metodă potrivită pentru a converti Hexazecimal la zecimal sau BCD.I deşi de a face această conversie să-i aducă echivalentul său şapte segment de valori utilizând un tabel de căutare.

Aici este un exemplu pentru a descrie:

16,6 * 16,6 = 275,56
I a face de mai sus astfel:
166 * 166 = 27556 (zecimal) = 6BA4 (hexadecimal)

Aici nu am putut găsi o metodă potrivită pentru utilizarea 6BA4 (hexadecimal) pentru a afişa 275.56 la afişarea şapte segment.
a putea i a lua nişte lumină în această problemă?

Suresh.

 
Acest lucru nu este atât de dificil şi puteţi găsi o mulţime şi o mulţime de exemple de pe internet pentru 8051 ...
Cod:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copiere Notice dreptul de ;;;;; ;;;;;;;;;;;

;; Acest program este pentru uz personal only.You se poate schimba / modifica în ceea ce priveşte cerinţele de ur.

;; Acest program a fost testat şi verfied, dar în caz de orice întrebări, nu ezitaţi să

;; e-mail (mail_to_salman (at) yahoo.com) mine.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;; Aceasta rutina este pentru 16-bit hex la conversie BCD ;;;;;;;;;;;;;;;;; ;;;;;;;;;

;;;;;;;;;;;;;;;;;; Acceptă un număr de 16 biţi binare într-R1, R2 şi întoarce 5 cifre BCD în R7, R6, R5, R4, R3 (

pana la 64K)Hex2BCD:

MOV R1, # 0fFH; MSByte

MOV R2, # 0FFH; LSByteMOV R3, # 00D

MOV R4, # 00D

MOV R5, # 00D

MOV R6, # 00D

MOV R7, # 00DMOV B, # 10D

MOV A, R2

DIV AB

MOV R3, B;

MOV B, # 10; R7, R6, R5, R4, R3

DIV AB

MOV R4, B

MOV R5, A

CJNE R1, # 0H, HIGH_BYTE; a verifica pentru MARE BYTE

SJMP ENDDHIGH_BYTE:

MOV A, # 6

ADD A, R3

MOV B, # 10

DIV AB

MOV R3, B

ADD A, # 5

ADD A, R4

MOV B, # 10

DIV AB

MOV R4, B

ADD A, # 2

ADD A, R5

MOV B, # 10

DIV AB

MOV R5, B

CJNE R6, # 00D, ADD_IT

SJMP CONTINUĂ

ADD_IT:

ADD A, R6

Continuare:

MOV R6, A

DJNZ R1, HIGH_BYTE

MOV B, # 10D

MOV A, R6

DIV AB

MOV R6, B

MOV R7, A

ENDD: SJMP $
 

Welcome to EDABoard.com

Sponsor

Back
Top