Page 1 of 1

Somma aritmetica in BASCOM-AVR

PostPosted: 31 Mar 2013, 16:06
by anoir2
Code: Select all
Ledx Alias Pind.0
Ldx Alias Pind.1
Lcx Alias Pind.2
Lsx Alias Pind.3
Lesx Alias Pind.4

dim linea as byte

linea = (lesx*1) + (lsx*2) + (lcx*4) + (ldx*8) + (ledx*16)


mi restuisce un errore nell'assegnazione dell'espressione alla variabile linea... Togliendo le parentesi, pensando che facesse confusione con gli array, mi da questo errore:

Error : 35 3 paramaters expected

Si aspetta 3 parametri ma non capisco cosa voglia realmente...

Re: Somma aritmetica in BASIC

PostPosted: 31 Mar 2013, 18:41
by deluca
Salve anoir2, benvenuto al forum e buona Pasqua anche a te.

ho capito a cosa ti riferisci, si tratta di un line-sensor per robot.... giusto?
Il tuo intento è di ottenere un valore discreto relativo ai led attivati durante il movimento mentre il robot segue la classica linea nera.
Se leggi direttamente la porta D hai già il valore, non è necessario che esegui una somma logico-binaria.

Quindi avresti:
linea=pind, oppure se lavori in logica negata(led attivi bassi) avresti: linea=Not Pind

se gli altri bit della porta (pind 5,6,7 sono connessi ad altre periferiche potresti adottare la tecnica AND_bit e fare cosi:

linea=Pind And &B_0001_1111 , dove gli 1 rappresentano i bit leds.

a questo punto hai il valore LINEA e tramite un SELECT CASE puoi enumerare i casi comportamentali del tuo robot tenendo conto del valore LINEA precedentemente ottenuto.

Ok?

Re: Somma aritmetica in BASIC

PostPosted: 31 Mar 2013, 19:13
by anoir2
La ringrazio per l'utilissimo suggerimento! :D Un altra domanda... Comunque in BASCOM non è possibile fare un espressione come quella che ho scritto, vero?

Re: Somma aritmetica in BASIC

PostPosted: 31 Mar 2013, 19:19
by deluca
yes, non è possibile poichè il compilatore Bascom è super-compatto ed in grado di ottimizzare i calcoli generando 1/3 del codice BIN scritto in "C" ardu.
Scrivi qualche linea in più, ma in compenso ottieni un codice molto compatto e deterministico.