Funzione

Sezione dedicata al sistema di sviluppo BASCOM-AVR per i micro AVR
At90s, Attiny, Atmega e Xmega

Funzione

Postby suibaf » 13 Apr 2014, 11:31

Ciao,

ho questa funzione che mi sembra anche rispondere bene, nel senso che mi dà il risultato desiderato. Ovviamente prima faccio la dichiarazione e poi la uso all'interno del prg.

Code: Select all
Declare Function Cecksum(byval Primo_elemento As Byte , Byval Ultimo_elemento As Byte) As Byte


Code: Select all
Function Cecksum(primo_elemento As Byte , Ultimo_elemento As Byte) As Byte

   Local Btempbyte As Byte
   Local J As Byte


   Btempbyte = Array_temp(primo_elemento) Xor Array_temp(primo_elemento + 1)
   Primo_elemento = Primo_elemento + 2


   For J = Primo_elemento To Ultimo_elemento

      Btempbyte = Array_temp(j) Xor Btempbyte

   Next

   Btempbyte = Btempbyte + 7

   Cecksum = Btempbyte

End Function


Il problema nasce quando devo usare questa funzione. Se scrivo:

Code: Select all
If Cecksum(8 , 11) = Ar(12) Then

la condizione non viene sodisfatta

se scrivo:

Code: Select all
      dim Test as byte
      Test = Cecksum(8 , 11)

      If test = Ar(12) Then ' dove test viene di


Così la condizione viene sodisfatta. Perchè?
User avatar
suibaf
 
Posts: 122
Joined: 08 Mar 2014, 09:55
Location: Lecce

Re: Funzione

Postby deluca » 13 Apr 2014, 20:16

Se inverti i termini nel confronto dell' IF, dovrebbe funzionare.
La variabile deve stare a sinistra e la funzione a destra, tutto qui:

Code: Select all
If Ar(12) = Cecksum(8 , 11) Then


questo "bugs", se così si può chiamare in questo caso, lo avevo già incontrato e l'avevo risolto in questo modo, invertendo i termini nel confronto.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)


Return to BASCOM-AVR

Who is online

Users browsing this forum: No registered users and 2 guests

cron