Vraag over variabele waarden in het register (meer dan 255)

E

eddy12345

Guest
Hi there,

Heb ik gelijk te veronderstellen dat elke variabele gemaakt in het register pic16F84 (of in andere foto's) kan slechts een waarde van 0-255?

En de enige manier om een waarde groter dan 255 (voor een variabele) is door het verhogen van de waarde van een andere variabele telkens de eerste variabele overflow.Ik weet dat mijn uitleg is een beetje verwarrend

<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Neutraal" border="0" />

...

Voorbeeld: "counta" voor waarden 0-255 en "countb" is voor overloop van "counta".

Dus als ik hebben counta = 20 en countb = 2,

De totale waarde zal worden = (255 * 2) 20 = 530

Als het waar is, hoe ga je het uitvoeren van berekeningen hoger dan 255?

Voorbeeld, (530 - 4) / 6

En wat als de berekening resulteert in een waarde hoger dan 255?Hoe wilt u opslaan?

Alle hulp wordt zeer gewaardeerd

 
eddy12345 schreef:

Hi there,Heb ik gelijk te veronderstellen dat elke variabele gemaakt in het register pic16F84 (of in andere foto's) kan slechts een waarde van 0-255?En de enige manier om een waarde groter dan 255 (voor een variabele) is door het verhogen van de waarde van een andere variabele telkens de eerste variabele overflow.
Ik weet dat mijn uitleg is een beetje verwarrend
<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Neutraal" border="0" /> ...Voorbeeld: "counta" voor waarden 0-255 en "countb" is voor overloop van "counta".Dus als ik hebben counta = 20 en countb = 2,De totale waarde zal worden = (255 * 2) 20 = 530Als het waar is, hoe ga je het uitvoeren van berekeningen hoger dan 255?Voorbeeld, (530 - 4) / 6En wat als de berekening resulteert in een waarde hoger dan 255?
Hoe wilt u opslaan?Alle hulp wordt zeer gewaardeerd
 
Hi there,

Dank u voor uw antwoord, ik denk dat ik begrijp de meeste deel maar im niet zeker weet hoe het schrijven van een floating point routine.Ik wil alleen maar uit te voeren berekening en het resultaat moet worden afgerond naar het dichtstbijzijnde getal.

Dit is een voorbeeld code die ik heb gevonden waaruit blijkt dat de berekening van de cijfers meer dan 255.Het resultaat zal overeenkomen met een adres in een kaart.

rpmhi = counter overflow voor rpmlow.
waarde van toerental: 74 <(rpmhi rpmlow) <600

Code:; De formule om de opgeslagen gegevens op de kaart is als volgt

;

; (Rpmhi rpmlow tellen) - 74

; 131 - ----- ----------------------

; 4

;

caladv movlw d'74 '; (rpmhi rpmlow tellen) - 74

subwf rpmlo, F; rpmlo = rpmlo - 74

btfss STATUS, C

decf rpmhi, F

;

; Verdelen resultaat met 4

;

BCF STATUS, C

rrf rpmhi, F

rrf rpmlo, F; / 2

;

BCF STATUS, C

rrf rpmhi, F

rrf rpmlo, F; / 4

;

movlw ,131; 131 vermeldingen in kaart lijst

movwf wiskunde

;

movf rpmlo, W

subwf wiskunde, W, W = 131 - resultaat

;

BCF PCLATH, 0; er zeker van te gaan h'200 '

BSF PCLATH, 1, waar is de kaart.

oproep kaart te lezen kaart

movwf rtdset; terugkomen met nieuwe retard waarde
 

Welcome to EDABoard.com

Sponsor

Back
Top