Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PIC12F509 in modalità SLEEP

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: PIC12F509 in modalità SLEEP

Messaggioda Foto UtentePaolino » 14 apr 2010, 15:18

c1b8 ha scritto:Noto che Paolino mi ha anticipato, ma posto lo stesso il mio messaggio per le considerazioni diverse dallo sleep.

Benissimo, hai integrato con altre info. :D

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4220
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[12] Re: PIC12F509 in modalità SLEEP

Messaggioda Foto Utentedavidde » 14 apr 2010, 16:23

Vi stavo rispondendo e sono arrivati a rompermi le.... uova nel paniere... diciamo così che è meglio... :).

C1b8 non ti preoccupare, le tue critiche al mio programma (e al programmatore) sono quanto di meglio potessi sperare. E' il terzo programma per microcontrollore che scrivo e anche se non sono in grado di valutarne l' entità so bene che errori, imprecisioni e banalità non mancano, quindi grazie davvero per il tempo dedicatomi.

A Paolino ormai dovrò fare un monumento.... anzi già che ci sono lo faccio a tutti e due =D> .

Adesso disegno la flow-chart e rivedo il programma seguendo i vostri suggerimenti poi posto tutto così mi dite cosa ne pensate .... arrivooooo .....
Avatar utente
Foto Utentedavidde
13,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3926
Iscritto il: 2 ago 2007, 11:40
Località: Bologna

0
voti

[13] Re: PIC12F509 in modalità SLEEP

Messaggioda Foto UtentePaolino » 14 apr 2010, 16:35

davidde,
vai tranquillo. Non dimentico i suggerimenti che mi hai dato tu! Sono io che mio sto sdebitando.
Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4220
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[14] Re: PIC12F509 in modalità SLEEP

Messaggioda Foto Utentedavidde » 15 apr 2010, 2:11

Dunque, ho rivisto il codice seguendo le vostre istruzioni.

Per quanto riguarda la SLEEP avete pienamente ragione. Pensavo che al risveglio il microcontrollore venisse resettato automaticamente invece non è così ed effettivamente il GOTO MAIN ci sta tutto. Poi ho eliminato tutti quegli inutili GOTO, (erano davvero troppi) e infine ho rivisto le dichiarazioni utilizzando la RES che è effettivamente più comoda (questa parte delle impostazioni iniziali mi è ancora un po' ostica).
Infine per provare ho usato anche la direttiva #DEFINE per chiamare il nome dei pin d' uscita GPIO,0 e GPIO,1 con il colore del led che vi sono collegati. E' andato tutto bene e il programma funziona perfettamente :) .

Questa è la flow-chart di quello che vorrei ottenere, più o meno dovrebbe andare bene, anche se non è dettagliatissima. All' esterno a fianco dei blocchi di elaborazione (quelli rettangolari) ho aggiunto le tempestiche di accensione e spegnimento dei due led.

Flow-chart lampeggiatore.png
Flow-chart lampeggiatore.png (105.45 KiB) Osservato 1311 volte


Questo è il codice con le modifiche che mi avete suggerito:

Codice: Seleziona tutto
#include P12F509.INC                         
__CONFIG    B'000000001010'

        ORG 10H

TIMER_1        RES 1
TIMER_2        RES 1
TIMER_3        RES 1
CONTEGGIO      RES 1
CONTEGGIO_ACC  RES 1
CONTEGGIO_LAMP RES 1
#DEFINE        LED_GIALLO  GPIO,0
#DEFINE        LED_ROSSO   GPIO,1
         

INIT            MOVWF OSCCAL

                MOVLW  B'00001000'  ;DEFINISCE GP3 COME INGRESSO, GLI ALTRI COME USCITE
                TRIS   GPIO   

                MOVLW  B'00000000'  ;PORTA A LIVELLO LOGICO BASSO TUTTE LE USCITE
                MOVWF  GPIO   

                MOVLW  B'01000000'   
                OPTION

                MOVLW  D'255'
                MOVWF  TIMER_1

                MOVLW  D'255'
                MOVWF  TIMER_2

                MOVLW  D'8'
                MOVWF  TIMER_3

                MOVLW  D'10'
                MOVWF  CONTEGGIO

                MOVLW  D'100'
                MOVWF  CONTEGGIO_ACC

                MOVLW  D'10'
                MOVWF  CONTEGGIO_LAMP


MAIN            BTFSS GPIO,3
                GOTO MAIN               

SEGNALE_FISSO   BSF LED_GIALLO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO 
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO

SEGNALE_LAMP    BCF LED_GIALLO
                CALL RITARDO
                BSF LED_GIALLO
                CALL RITARDO           
                DECFSZ CONTEGGIO
                GOTO SEGNALE_LAMP
                MOVLW D'10'
                MOVWF CONTEGGIO               
                BCF LED_GIALLO

ACCENSIONE      BSF LED_ROSSO     
                CALL RITARDO
                DECFSZ CONTEGGIO_ACC
                GOTO ACCENSIONE
                MOVLW D'100'
                MOVWF CONTEGGIO_ACC
                BCF LED_ROSSO               

ACCENSIONE_LAMP BCF LED_ROSSO
                CALL RITARDO_LENTO
                BSF LED_ROSSO
                CALL RITARDO           
                DECFSZ CONTEGGIO_LAMP
                GOTO ACCENSIONE_LAMP
                MOVLW D'10'
                MOVWF CONTEGGIO_LAMP               
                BCF LED_ROSSO

LUCE_RECUPERO   BSF LED_GIALLO
                BTFSS GPIO,3
                GOTO LUCE_RECUPERO
                BCF LED_GIALLO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO 
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO           
                SLEEP                     
                GOTO MAIN

RITARDO         DECFSZ TIMER_1
                GOTO RITARDO
                MOVLW D'255'
                MOVWF TIMER_1
                DECFSZ TIMER_2
                GOTO RITARDO
                MOVLW D'255'
                MOVWF TIMER_2
                RETURN

RITARDO_LENTO   DECFSZ TIMER_1
                GOTO RITARDO_LENTO
                MOVLW D'255'
                MOVWF TIMER_1
                DECFSZ TIMER_2
                GOTO RITARDO_LENTO
                MOVLW D'255'
                MOVWF TIMER_2
                DECFSZ TIMER_3
                GOTO RITARDO_LENTO
                MOVLW D'8'
                MOVWF TIMER_3
                RETURN

END



Come vi sembra ?


L' unico dubbio che mi rimane è legato alla ORG 10H iniziale. Mi spiego, se al posto dell indirizzo iniziale 10H provo a partire dall' indirizzo 0H il programma non viene eseguito e simulandolo si vede che entra in un loop che va dalla riga TRIS GPIO alla riga MOVWF TIMER_3 (i punti esatti sono indicati nel codice qui sotto con una fila di x)... non riesco proprio a capire il perché:

Codice: Seleziona tutto
#include P12F509.INC                         
__CONFIG    B'000000001010'

        ORG 0H

TIMER_1        RES 1
TIMER_2        RES 1
TIMER_3        RES 1
CONTEGGIO      RES 1
CONTEGGIO_ACC  RES 1
CONTEGGIO_LAMP RES 1
#DEFINE        LED_GIALLO  GPIO,0
#DEFINE        LED_ROSSO   GPIO,1
         

INIT            MOVWF OSCCAL

                MOVLW  B'00001000'  ;DEFINISCE GP3 COME INGRESSO, GLI ALTRI COME USCITE
xxxxxxx         TRIS   GPIO   

                MOVLW  B'00000000'  ;PORTA A LIVELLO LOGICO BASSO TUTTE LE USCITE
                MOVWF  GPIO   

                MOVLW  B'01000000'   
                OPTION

                MOVLW  D'255'
                MOVWF  TIMER_1

                MOVLW  D'255'
                MOVWF  TIMER_2

                MOVLW  D'8'
xxxxxxx         MOVWF  TIMER_3

                MOVLW  D'10'
                MOVWF  CONTEGGIO

                °
                °


Provo a vedere se riesco a capirlo e poi torno a litigare con OSCCAL.... ormai lo odio :| ...

Ciao e grazie !
Avatar utente
Foto Utentedavidde
13,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3926
Iscritto il: 2 ago 2007, 11:40
Località: Bologna

0
voti

[15] Re: PIC12F509 in modalità SLEEP

Messaggioda Foto UtentePaolino » 15 apr 2010, 9:12

davidde ha scritto:L' unico dubbio che mi rimane è legato alla ORG 10H iniziale. Mi spiego, se al posto dell indirizzo iniziale 10H provo a partire dall' indirizzo 0H il programma non viene eseguito e simulandolo si vede che entra in un loop che va dalla riga TRIS GPIO alla riga MOVWF TIMER_3 (i punti esatti sono indicati nel codice qui sotto con una fila di x)... non riesco proprio a capire il perché:

Forse riesco a spiegartelo io. Almeno ci provo.
Prova a guardare questa immagine, che riporta gli indirizzi di memoria del PIC12F509:
MappaMemoria_PIC12F509.jpg
MappaMemoria_PIC12F509.jpg (38.76 KiB) Osservato 1281 volte

Se noti, l'area di memoria disponibile per poter mettere le tue variabili inizia dall'indirizzo 07h e termina all'indirizzo 3Fh. Quando tu dichiari:
Codice: Seleziona tutto
        ORG 0H

TIMER_1        RES 1
TIMER_2        RES 1
TIMER_3        RES 1
CONTEGGIO      RES 1
CONTEGGIO_ACC  RES 1
CONTEGGIO_LAMP RES 1

quello che accade è che le variabili appena indicate vengono collocate tra l'indirizzo 00h e l'indirizzo 05h. Ma osservando la figura di prima, a quegli indirizzi si trovano i registri: INDF, TMR0, PCL, STATUS, FSR, OSCCAL.
Se invece dichiari:
Codice: Seleziona tutto
        ORG 10H ; è sufficnete indicare un numero maggiore o uguale a 07h

TIMER_1        RES 1
TIMER_2        RES 1
TIMER_3        RES 1
CONTEGGIO      RES 1
CONTEGGIO_ACC  RES 1
CONTEGGIO_LAMP RES 1

le cose funzionano perché le tue variabili sono collocate nell'area utente! Spero di essere stao chiaro... :oops:
In sostanza, ti basta un
Codice: Seleziona tutto
        ORG 07H
; definisci qui le tue variabili

per risolvere il problema. Non escludo che il problema che hai avuto con OSCCAL sia dovuto a qualche errore di indirizzo.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4220
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[16] Re: PIC12F509 in modalità SLEEP

Messaggioda Foto Utentec1b8 » 15 apr 2010, 9:27

Per ora ho dato uno sguardo velocissimo e posso dire che il codice mi sembra decisamente più leggibile di prima (bene l'utilizzo della define) e corretto. Solo una osservazione sul flow-chart: i blocchi di test (i rombi), come tutti i blocchi, hanno un solo input, nel primo controllo "pulsante premuto" hai disegnato 2 input, si capisce lo stesso ma secondo me non è sintatticamente corretto.
Lo guarderò con più calma.

In quanto alla org posso solo aggiungere (Paolino mi ha nuovamente anticipato di poco :mrgreen: ) che devi stare attento a non confondere area di memoria RAM da area di memoria programma o FLASH.
Nei PIC le diverse tipologie di memoria (programma, ram) sono tutte indirizzate in modo separato e quindi iniziano tutte da indirizzo 0, senza per questo sovrapporsi. Nel tuo programma dovrai quindi avere due org, una per i dati ed una per il codice.
La prima org (dei dati), indicata prima della prima dichiarazione di variabile, dovrà iniziare da una locazione di ram non utilizzata dai registri interni del PIC (vedi datasheet). La seconda org sarà sempre org 0h e sarà indicata prima della prima istruzione programma.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[17] Re: PIC12F509 in modalità SLEEP

Messaggioda Foto UtentePaolino » 15 apr 2010, 11:35

c1b8 ha scritto:Solo una osservazione sul flow-chart: i blocchi di test (i rombi), come tutti i blocchi, hanno un solo input, nel primo controllo "pulsante premuto" hai disegnato 2 input, si capisce lo stesso ma secondo me non è sintatticamente corretto.

Credo anch'io. Lo cambierei in:
Flow.jpg
Flow.jpg (16.38 KiB) Osservato 1255 volte

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4220
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[18] Re: PIC12F509 in modalità SLEEP

Messaggioda Foto Utentedavidde » 16 apr 2010, 0:29

Ciao, grazie per i chiarimenti !!

La flow-chart è sistemata :).
Mi sono guardato attentamente le direttive e ho capito abbastanza bene a cosa servono e come devono essere usate, almeno le più importanti. Mi sono rivisto anche come è suddivisa la memoria e adesso il quadro mi è più chiaro.

Ancora però non riesco a compilare il codice come vorrei perché mi esce un errore sempre relativo alla sovrascrizione della memoria. Vi posto il pezzo di codice interessato:

Codice: Seleziona tutto
             PROCESSOR  P12F509
             RADIX      DEC
             INCLUDE   P12F509.INC                         
             __CONFIG   000000001010B             

                ORG 7H

TIMER_1         RES 1
TIMER_2         RES 1
TIMER_3         RES 1
CONTEGGIO       RES 1
CONTEGGIO_ACC   RES 1
CONTEGGIO_LAMP  RES 1
#DEFINE         LED_GIALLO   GPIO,0
#DEFINE         LED_ROSSO    GPIO,1
#DEFINE         INTERRUTTORE GPIO,3

                ORG 0H             

                MOVWF  OSCCAL
                MOVLW  00001000B  ;DEFINISCE GP3 COME INGRESSO, GLI ALTRI COME USCITE
                TRIS   GPIO   
                MOVLW  00000000B  ;PORTA A LIVELLO LOGICO BASSO TUTTE LE USCITE
                MOVWF  GPIO   
                MOVLW  01000000B   
                OPTION
x               MOVLW  255
                MOVWF  TIMER_1
                MOVLW  255
                MOVWF  TIMER_2
                MOVLW  8
x               MOVWF  TIMER_3
                MOVLW  10
                MOVWF  CONTEGGIO
                MOVLW  100
               °
               °


Come si vede ho cambiato le ORG impostando per l' area dati la partenza dalla locazione 7h mentre per l' area programma la 0h. Quando compilo mi esce l' errore "Overwriting previous address contents" per le locazioni 7h,8h,9h,Ah,Bh,Ch corrispondenti alle righe indicate con il simbolo x sul codice. Se invece elimino la seconda ORG o parto da 10h tutto si compila senza errori.

Avete idea di dove stia sbagliando o del perché ?

Ciao e grazie !
Avatar utente
Foto Utentedavidde
13,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3926
Iscritto il: 2 ago 2007, 11:40
Località: Bologna

0
voti

[19] Re: PIC12F509 in modalità SLEEP

Messaggioda Foto Utentec1b8 » 16 apr 2010, 10:51

Ciao,
è un problema sorto con le ultime versioni di MPLab. In pratica il compilatore non è in grado di scindere dichiarazioni di variabili da dichiarazioni di programma (intesa come indirizzi da utilizzare).
Se hai questo problema devi cambiare la dichiarazione delle variabili utilizzando la direttiva CBLOCK:
Codice: Seleziona tutto
CBLOCK 07H
     TIMER_1 : 1
     TIMER_2 : 1
     TIMER_3 : 1
     CONTEGGIO : 1
     CONTEGGIO_ACC  : 1
     ESEMPIO : 2
ENDC

Nella riga della CBLOCK dichiari anche l'indirizzo di partenza, come per la org.
All'interno del blocco, che termina con ENDC, dichiari le variabili, per ogni variabile la sua dimensione dopo il simbolo ':'
Ho aggiunto la variabile ESEMPIO lunga 2 byte solo come esempio.
In questo modo rimangono tutti i vantaggi che aveva la RES ma non crei ambiguità al compilatore.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[20] Re: PIC12F509 in modalità SLEEP

Messaggioda Foto Utentedavidde » 18 apr 2010, 12:49

Grande c1b8 !!! Era proprio l' istruzione che mi serviva. Ora MPlab compila senza problemi e il programma gira senza più alcun inghippo. Dopo aver sistemato il problema delle locazioni di memoria sono riuscito a risolvere anche il malfunzionamento del registro OSCCAL. Tra l' altro credo proprio avesse ragione Paolino quando diceva:

Non escludo che il problema che hai avuto con OSCCAL sia dovuto a qualche errore di indirizzo.


Perché dopo aver sistemato le definizioni iniziali (con CBLOCK) sono riuscito a lavorare su tale registro come indicato dal datasheet.

Aggiungo il codice definitivo per aiutare chi potrebbe aver bisogno di seguirlo come esempio:

Codice: Seleziona tutto
             PROCESSOR  P=P12F509         ; indica al compilatore per quale PIC deve compilare il programma
             RADIX      DEC               ; indica che i valori numerici non specificati sono in radice 10
             INCLUDE    P12F509.INC       ; include il file specificato nel codice sorgente                     
             __CONFIG   000000001010B     ; definisce il valore da memorizzare nella word di configurazione       

CBLOCK 7H                                 ; definisce le variabili del programma indicando al compilatore di iniziare a riservare le locazioni di memoria dall' indirizzo 7H
TIMER_1         : 1                       ; riserva un byte (l'indirizzo è scelto automaticamente dal compilatore)             
TIMER_2         : 1                       ; riserva un byte (l'indirizzo è scelto automaticamente dal compilatore)
TIMER_3         : 1                       ; riserva un byte (l'indirizzo è scelto automaticamente dal compilatore)
CONTEGGIO       : 1                       ; riserva un byte (l'indirizzo è scelto automaticamente dal compilatore)
CONTEGGIO_ACC   : 1                       ; riserva un byte (l'indirizzo è scelto automaticamente dal compilatore)
CONTEGGIO_LAMP  : 1                       ; riserva un byte (l'indirizzo è scelto automaticamente dal compilatore)
ENDC                                      ; termina la CBLOCK

#DEFINE         LED_GIALLO   GPIO,0       ; definisce come led_giallo il pin GPIO,0
#DEFINE         LED_ROSSO    GPIO,1       ; definisce come led_rosso il pin GPIO,1
#DEFINE         INTERRUTTORE GPIO,3       ; definisce come interruttore il pin GPIO,3

ORG 0H                                    ; informa il compilatore di cominciare a scrivere i dati che seguono dall'
                                          ; indirizzo 0H della memoria programma               

                MOVWF  OSCCAL     ; carica il registro OSCCAL con il valore contenuto all' indirizzo 3FF per calibrare l' oscillatore interno
                MOVLW  00001000B 
                TRIS   GPIO       ; definisce il pin GP3 come ingresso e tutti gli altri come uscite
                MOVLW  00000000B 
                MOVWF  GPIO       ; porta a livello logico basso tutte le uscite
                MOVLW  01000000B   
                OPTION            ; configura il registro OPTION abilitando il risveglio (dalla sleep) per il cambio di stato logico dei pin e disabilitando le resistenze di pull-up
                MOVLW  255
                MOVWF  TIMER_1
                MOVLW  255
                MOVWF  TIMER_2
                MOVLW  8
                MOVWF  TIMER_3
                MOVLW  10
                MOVWF  CONTEGGIO
                MOVLW  100
                MOVWF  CONTEGGIO_ACC
                MOVLW  10
                MOVWF  CONTEGGIO_LAMP   

MAIN            BTFSS INTERRUTTORE
                GOTO MAIN               

SEGNALE_FISSO   BSF LED_GIALLO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO 
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO

SEGNALE_LAMP    BCF LED_GIALLO
                CALL RITARDO
                BSF LED_GIALLO
                CALL RITARDO           
                DECFSZ CONTEGGIO
                GOTO SEGNALE_LAMP
                MOVLW 10
                MOVWF CONTEGGIO               
                BCF LED_GIALLO

ACCENSIONE      BSF LED_ROSSO     
                CALL RITARDO
                DECFSZ CONTEGGIO_ACC
                GOTO ACCENSIONE
                MOVLW 100
                MOVWF CONTEGGIO_ACC
                BCF LED_ROSSO               

ACCENSIONE_LAMP BCF LED_ROSSO
                CALL RITARDO_LENTO
                BSF LED_ROSSO
                CALL RITARDO           
                DECFSZ CONTEGGIO_LAMP
                GOTO ACCENSIONE_LAMP
                MOVLW 10
                MOVWF CONTEGGIO_LAMP               
                BCF LED_ROSSO

LUCE_RECUPERO   BSF LED_GIALLO
                BTFSS INTERRUTTORE
                GOTO LUCE_RECUPERO
                BCF LED_GIALLO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO 
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO
                CALL RITARDO           
                SLEEP                     
                GOTO MAIN

RITARDO         DECFSZ TIMER_1
                GOTO RITARDO
                MOVLW 255
                MOVWF TIMER_1
                DECFSZ TIMER_2
                GOTO RITARDO
                MOVLW 255
                MOVWF TIMER_2
                RETURN

RITARDO_LENTO   DECFSZ TIMER_1
                GOTO RITARDO_LENTO
                MOVLW 255
                MOVWF TIMER_1
                DECFSZ TIMER_2
                GOTO RITARDO_LENTO
                MOVLW 255
                MOVWF TIMER_2
                DECFSZ TIMER_3
                GOTO RITARDO_LENTO
                MOVLW 8
                MOVWF TIMER_3
                RETURN

END


Non è molto chiaro perché essendo troppo lunghi i commenti l' editor va a capo in automatico. Per visualizzare il programma correttamente copiarlo e incollarlo su un editor di testo (tipo notepad).

Ragazzi, il codice è piuttosto semplice ma la soddisfazione per aver capito tutte le righe e il perché dell' utilizzo di certe direttive piuttosto che altre è immensa! Vi ringrazio davvero tanto per la pazienza e la competenza dedicatemi =D> =D> !

Alla prossima :wink: !

Ciao e grazie ancora !

David
Avatar utente
Foto Utentedavidde
13,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3926
Iscritto il: 2 ago 2007, 11:40
Località: Bologna

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti