floating point beregning i forsamlingen sprog

S

Suresh R

Guest
Hej,
IAM interesseret i at vide, om jeg kunne gøre floating point beregninger i AT89S52 microcontroller.
Hvis ja, kan nogen give mig et eksempel på, hvordan kunne det gøres ved hjælp af forsamlingen sprog programmering?

til fx: Hvordan kunne jeg gøre følgende ved hjælp af forsamlingen sprog programmering?
3,43 5,98

venlig at hjælpe mig.

Suresh.

 
Hej, Et meget simpelt trick er at skalere alle dine numre med en konstant, så du får kun heltal.Du kan gøre alle dine skaleret callculations og resultatet vil blive skaleret også, men stadig brugbar.På denne måde kan du måske nødt til at gøre 16-bit ir 32 bith matematik, men ist langt hurtigere og mere enkel end flydende komma eller fast punkt.

Så i dit eksempel: Scale alle med 100.Resultatet er også skaleres med 100.Husk, dat formerer vil skala med 10000 og ikke 100, da 100 * 100 = 10000

3,42 5,98 = 9,41 (normal)
343 598 = 941 (skaleret med 100)

 
Hej,
Tak.
Jeg har anvendt din metode i "MUL" og "ADD" instrukser 8.051, som jeg bruger.
Iam at få det resultat, men dens i hexadecimal form.Kan jeg vide, hvordan det kunne blive konverteret til decimal form eller BCD form?
Fordi behovet for at give dette til de syv segment display.
JEG kunne finde en egnet metode til at konvertere Hexadecimal til decimal eller BCD.Jeg selv for at gøre denne konvertering for at hente sin tilsvarende syv segment værdier ved hjælp af en opslagstabel.

Her er et eksempel til at beskrive:

16,6 * 16,6 = 275,56
Jeg gør det ovenstående som dette:
166 * 166 = 27556 (decimal) = 6BA4 (hexadecimal)

Her kunne jeg ikke finde en egnet metode til at bruge 6BA4 (hexadecimal) til at vise 275,56 i de syv segment display.
kan jeg få lidt lys over dette spørgsmål?

Suresh.

 
Det er ikke så svært, og du kan finde masser og masser af eksempler på internettet til 8.051 ...
Kode:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Copy right Notice ;;;;; ;;;;;;;;;;;

;; Dette program er til personlig brug only.You kan ændre / modificere den om ur krav.

;; Har Dette program er blevet testet og verfied, men i tilfælde af forespørgsler, fri til at føle

;, e-mail (mail_to_salman (at) yahoo.com) mig.

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

;;;;;;;;;;;;;;;;;;;;;;; Denne rutine er til 16 bit Hex til BCD konvertering ;;;;;;;;;;;;;;;;; ;;;;;;;;;

;;;;;;;;;;;;;;;;;; Accepterer et 16 bit binært tal i R1, R2 og giver 5 cifret BCD i R7, R6, R5, R4, R3 (

op til 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; CHECK FOR høje 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 CONTINUE

ADD_IT:

ADD A, R6

Fortsætter:

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