Newsgroup: it.hobby.elettronica.digitale
Titolo: display 7 segmenti e PIC

Salve, premetto che sono un novellino di programmazione PIC ed attualmente 
sto imparando con il mikrobasic.
Chi mi spiega in maniera semplice, perche' affianco alla costante DISPLAY 
devo scrivere K tra parentesi quadre?
quel K a cosa si riferisce?Non verrebbe piu' logico scrivere:
portb=display  ?
mi rimane difficile da capire il meccanismo dell'array.
I commenti sono attinenti al programma oppure ho scritto delle sciocchezze? 
:)
 program Seven_segment01
'creiamo un array di una costante.Ogni numero decimale tra parentesi,
'equivale ad un numero che verra' rappresentato sul display 7 segmenti
'a partire da 0 fino a 9
const display as byte[10]= (63,6,91,79,102,109,125,7,127,111)
dim k as byte                   'creiamo una variabile di lavoro K
main:
trisb=0                             'tutta la portb come uscita
portb=0                           'tutta la portb a livello basso
for k =0 to 9                    'inizia il conteggio della costante
portb=display[k]
delay_ms(1000)               'attesa 1 secondo
next k                              'torna a for finche' non arriva a 9
portb=0                           'tutta la portb a livello basso (segmenti 
spenti)
end.
ringrazio chi vorra'.
paperetto

"paperetto" <pape...@NOVALIDO.it> ha scritto nel messaggio 
news:482f5132$0$40209$4faf...@reader5.news.tin.it...

K e' una variabile che hai dichiarato ed e' di tipo byte cioe' puo' assumere 
valori che vanno da 00000000 11111111 ovvero da 0 a 255 ad ogni incremento 
della variabile k visualizzerai sul display un valore dell' array che hai 
dichiarato, in parole semplici quando k=0 portb sara' uguale a 63 quando k=9 
sara' uguale a 111 creando un array hai semplicemente creato 10 variabili: 
display0=63 display1=6 display2=91 display3=79 display4=102 display5=109 
display6=125 display7=7 display8=127 display9=111
l'array serve proprio a questo scopo, pensa se avresti dovuto dichiarare 
singolarmente tutte e 10 variabili come ho fatto ora, pensa poi volendo fare 
un orologio per gestire i minuti avresti dovuto creare 60 variabili. 

 mi rimane difficile da capire il meccanismo dell'array.
suggerirei per prima cosa di imparare il Basic (se proprio non c'č 
niente di meglio...) e poi di usare i PIC e tutto il resto.
-- 
bikerfab
Viaggi in bicicletta, report foto e informazioni
Travelling by bicycle, report, pics and information
http://bikerfab.altervista.org/

 ringrazio chi vorra'.
Premetto che non conosco Basic, solo qualcosina di C e spero che sia chiaro.
Partiamo dal fatto che con la dichiarazione:
const display as byte[10]= (63,6,91,79,102,109,125,7,127,111)
hai creato una sequenza di byte (ovvero di numeri da 0 a 255), l'hai 
chiamata 'display' e l'hai qualificata come costante, cioè che non si 
può più modificare d'ora in poi.
Il primo numero di questa "sequenza" (meglio chiamarla vettore o array) 
ha indice 0, mentre l'ultimo ha indice 9 (quindi l'indice va da 0 [primo 
elemento] a 9 [ultimo elemento]....da 0 a 9 sono infatti 10 numeri).
Dunque avrai, display[0]=63, display[1]=6, ..., display[9]=111.
Per identificare un generico numero di questo vettore devi usare 
l'espressione:
display[k]
Ove k è l'indice (che varia  da 0 a 9).
Così, se dichiari una variabile k e la fai variare da 0 a 9...ottieni 
tutti i numeri dell'array.
Così, per esempio, avrai che
quando k=0
display[k]=63
quando k=1
display[k]=6
...
quando k=9
display[k]=111
Come fare variare la variabile k fra 0 e 9?. Con una semplice istruzione 
(o meglio "ciclo") "for".
Il ciclo for è essenzialmente un contatore che va a "variare una 
variabile", nel tuo caso k, fra un valore minimo e un valore massimo.
Per ogni valore di k esegue delle istruzioni contenute fra "for" e "next".
La parte di codice con il for e':
for k =0 to 9                    'inizia il conteggio della costante
portb=display[k]
delay_ms(1000)               'attesa 1 secondo
next k
Che tradotto in un pseudolinguaggio molto macaronico...significa...
Con k che va da 0 a 9, fai questo:
INIZIO
   Manda su portb il numero display[k];
   Aspetta 1000 ms (cioè 1s)
FINE
Cosa succederà nel tuo programma? Arrivati a for, k vale innanzitutto 0, 
ed essendo display[0]=63 avrai che verranno eseguite queste istruzioni:
-Manda su portb 63 (ovvero in bit: 00111111)
-Aspetta 1s
Terminate queste istruzioni, k viene incrementata automaticamente a 1 e 
ripete le due istruzioni, questa volta con k=1:
-Manda su portb 111 (ovvero in bit: 00000110)
-Aspetta 1s
...
Questo si ripeterà fino a k=9:
-Manda su portb 6 (ovvero in bit: 01101111)
-Aspetta 1s
Con k=9 il ciclo for termina, si esce dunque dal ciclo e si passa a 
eseguire la prima istruzione immediatamente successiva allo stesso for 
ovvero, nel tuo caso:
portb=0  'tutta la portb a livello basso
Spero di non averti confuso ulteriormente le idee.