Newsgroup: it.hobby.elettronica.digitale
Titolo: Cifra non significativa e PIC

ciao a tutti,
sto scrivendo un programma in PicBasic per un pic 16f628 connesso ad
un display 16x2 caratteri. Devo visualizzare l'orario, però le ore mi
piacerebbe scriverle cosi: "08:05" e invece sul display mi si
visualizzano come "8:5". Come posso fare per visualizzare anche lo
zero non significativo davanti a orari tipo quello dell'esempio sopra?
grazie e buona serata!

 zero non significativo davanti a orari tipo quello dell'esempio sopra?
Ad esempio provando a postare un po' di codice :)
Ciao!
Marco / iw2nzm

 grazie e buona serata!
Quando componi la stringa da inviare, immagino tu faccia qualcosa tipo (io 
conosco il C)
sprintf((unsigned int *)LCD_buffer, "%u:%u", (unsigned int)ore, (unsigned 
int)minuti);
basta che formatti il dato obbligando 2 cifre, 0 se non c'è nessuna cifra:
sprintf((unsigned int *)LCD_buffer, "%02u:%02u", (unsigned int)ore, 
(unsigned int)minuti);
Ciao
-- 
____________________
      CG Engineering
 Lab. Ricerca & Sviluppo
********************
Skype : cg_ingegnering
MSN : 
cgaudiola...@interfree.it
ICQ UIN# : 104528066 

 (unsigned int)minuti);
ho usato il picbasic e questo è un esempio del codice che riguarda il
display:
'----------------------------------------------
ora var byte
minuti var byte
giorno var byte
mese var byte
minuti=06
ora=08
mese=12
giorno=17
lcdout $fe,1,$fe,2,dec ora,":",dec minuti
pause 50
lcdout $fe,$c0,"   ",dec giorno,"/",dec mese,"/",dec anno
--------------------------------------------------------------------------
credo che già a livello di assegnazione del valore alla variabile il
compilatore elimini la cifra non significativa.

 lcdout $fe,$c0,"   ",dec giorno,"/",dec mese,"/",dec anno
Non conosco questo compilatore ma a spanne tu gli stai dicendo di 
visualizzare valori decimali, quindi numerici. A meno che abbia funzioni 
di formattazione come ad esempio printf in C, una strada alternativa è 
di crearti una stringa con la formattazione voluta e poi visualizzare 
quella. O ancora fare un test della variabile: se è < 10 aggiungi uno 
zero iniziale.
Ciao!
Marco / iw2nzm

compilatore elimini la cifra non significativa.
Come ti hanno gia' detto dare dei valori alle varibile anteponendo lo zero 
non cambia il risultato, vale a dire che scrivere
minuti=06 e minuti=6 e' la stessa cosa, comunque la soluzione dal mio punto 
di vista e' semplice, dal programma principale richiami due subroutine a 
seconda se venga verificata la condizione per le ore tipo:
if ora < 10 then
gosub anteponi_zero
endif
anteponi_zero:
lcdout $fe,1,$fe,2,"0",dec ora,":",dec minuti
return
il codice e' per darti una idea di come si puo' risolvere il problema poi 
vedi tu se trovi soluzioni migliori e forse piu' efficienti


grazie ragazzi! anche io avevo pensato a una soluzione del genere ma
pensavo che ci fosse una soluzione più efficiente. Quindi devo
prevedere svariate routine di anteponi_zero, quando ora<10 and
minuti<10 devo anteporre lo zero ad entrambi, poi ci saranno momenti
in cui solo "ora" è minore di 10 mentre minuti>10 e cosi via...insomma
ci sarà un massacro di if ..then! :-)
naturalmente sono graditi consigli più efficenti del mio....
grazie ciao

grazie ciao
Mi vengono in mente altri tre sistemi, il primo dovresti provare ad usare la 
forma:
lcdout $fe,1,$fe,2,dec2 ora,":",dec2 minuti cioe' dovresti forzare a 
mostrare sempre due cifre, pero' devi provare e vedere se va, oppure 
potresti vedere l'istruzione lookup cioe' creare uan tabella, oppure usare 
la forma:
LCDOUT 254,132,DEC ORA
LCDOUT 254,134,":"
LCDOUT 254,135,DEC MINUTI
facendo cosi' potresti metter i controlli if fra quelle istruzione e far 
saltare all'apposita etichetta, comunque fai qualche prova che secondo me 
mettereDEC2 deve funzionare 

pensavo che ci fosse una soluzione più efficiente.
lcdout $fe,1,$fe,2, 48+(ora DIG 1),48+(ora DIG 0),":",48+(minuti DIG 
1),48+(minuti DIG 0)
Ciao
Marco


grandissimo enzo!
non conoscevo l'opzione dec2...Funziona alla grande! grazie ciao!

non conoscevo l'opzione dec2...Funziona alla grande! grazie ciao!
Prego