- Messaggi: 143
- Ringraziamenti ricevuti 1
primo programma
12 Anni 7 Mesi fa #1
da Fausto
primo programma è stato creato da Fausto
Ciao a tutti,
per una volta non chiedo aiuto ma vorrei condividere con voi una piccola gioia.
Mi hanno dato un piccolo lavoro da fare in azienda ed ho subito risposto alla soluzione "con un micro". Mi sono messo e ho realizzato il tutto con il prototipo.
Il programma è una sciocchezza, lo so, ma la soddisfazione che ho avuto nel vederlo funzionare mi ha reso piu' che soddistatto. Dopo il primo LED che si accende, vedere un proprio proogramma che gira credo che sia una cosa indimenticabile...Vorrei condividerlo con voi, perchè senza di voi non sarei riuscito neanche a compilarlo o ad aprire MPLAB
Quindi grazie a tutti, in particolare a Mauro
include <p18f2458.h>
#include "delay.h"
#pragma config FOSC = HS //OSC = HS High frequency
#pragma config WDT = OFF //Diseable the watchdog timer
#pragma config LVP = OFF // Diseable programmation LVP
#pragma config PBADEN = ON // Enable the analog input
void main (void)
{
int ADC=0;
int dato=0;
int i=0;
//set the portA in input
LATA=0x00;
TRISA=0XFF;
//set the PortB in output
LATB=0x00;
TRISB=0X00;
//set the PortC in output
LATC=0x00;
TRISC=0x00;
LATCbits.LATC6=0;
LATBbits.LATB2=0;
/*inizialization ADC: Vref -, Vref +, AN0 ON */
ADCON1=0b00111110;
/*channel AN0 enable but the module ADC is still disable.*/
ADCON0=0b00000000;
/*Select acquisition time and conversion clock
Tamp=0.2us
Tc=1.093us
Tcoeff= 1.2us
Tacq= 2.5us
if TAD=4/Fosc=0.2us
and 16TAD acquisition time
*/
ADCON2=0b10110100;
/*Enable the module*/
ADCON0bits.ADON=0x01;
// ciclo infinito
while (1)
{
ADC=0;
for(i=0;i<8;i++)
{
//Go the module ADC
ADCON0bits.GO=1;
//wait
while(ADCON0bits.GO);
ADC=((int) ADRESH)<<8 | ADRESL;
/*sum*/
dato=dato+ADC;
}
//shift 3 position to get a average
dato=dato>>3;
if(dato>500 && dato<1000)
//switch led red and green on
{
LATCbits.LATC6=1;
LATBbits.LATB2=1;
}
if (dato<500){
//switch led green on
LATCbits.LATC6=0;
LATBbits.LATB2=1;
}
if (dato>1000){
//switch led red on
LATCbits.LATC6=1;
LATBbits.LATB2=0;
}
}
}
per una volta non chiedo aiuto ma vorrei condividere con voi una piccola gioia.
Mi hanno dato un piccolo lavoro da fare in azienda ed ho subito risposto alla soluzione "con un micro". Mi sono messo e ho realizzato il tutto con il prototipo.
Il programma è una sciocchezza, lo so, ma la soddisfazione che ho avuto nel vederlo funzionare mi ha reso piu' che soddistatto. Dopo il primo LED che si accende, vedere un proprio proogramma che gira credo che sia una cosa indimenticabile...Vorrei condividerlo con voi, perchè senza di voi non sarei riuscito neanche a compilarlo o ad aprire MPLAB
Quindi grazie a tutti, in particolare a Mauro
include <p18f2458.h>
#include "delay.h"
#pragma config FOSC = HS //OSC = HS High frequency
#pragma config WDT = OFF //Diseable the watchdog timer
#pragma config LVP = OFF // Diseable programmation LVP
#pragma config PBADEN = ON // Enable the analog input
void main (void)
{
int ADC=0;
int dato=0;
int i=0;
//set the portA in input
LATA=0x00;
TRISA=0XFF;
//set the PortB in output
LATB=0x00;
TRISB=0X00;
//set the PortC in output
LATC=0x00;
TRISC=0x00;
LATCbits.LATC6=0;
LATBbits.LATB2=0;
/*inizialization ADC: Vref -, Vref +, AN0 ON */
ADCON1=0b00111110;
/*channel AN0 enable but the module ADC is still disable.*/
ADCON0=0b00000000;
/*Select acquisition time and conversion clock
Tamp=0.2us
Tc=1.093us
Tcoeff= 1.2us
Tacq= 2.5us
if TAD=4/Fosc=0.2us
and 16TAD acquisition time
*/
ADCON2=0b10110100;
/*Enable the module*/
ADCON0bits.ADON=0x01;
// ciclo infinito
while (1)
{
ADC=0;
for(i=0;i<8;i++)
{
//Go the module ADC
ADCON0bits.GO=1;
//wait
while(ADCON0bits.GO);
ADC=((int) ADRESH)<<8 | ADRESL;
/*sum*/
dato=dato+ADC;
}
//shift 3 position to get a average
dato=dato>>3;
if(dato>500 && dato<1000)
//switch led red and green on
{
LATCbits.LATC6=1;
LATBbits.LATB2=1;
}
if (dato<500){
//switch led green on
LATCbits.LATC6=0;
LATBbits.LATB2=1;
}
if (dato>1000){
//switch led red on
LATCbits.LATC6=1;
LATBbits.LATB2=0;
}
}
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Fausto
- Autore della discussione
- Premium Member
Riduci
Di più
12 Anni 7 Mesi fa #2
da Matteo Garia
Risposta da Matteo Garia al topic Re: primo programma
Complimenti!
Ti capisco, pure io ho avuto una grandissima soddisfazione quando ho visto il mio primo programma dedicato ad un'applicazione reale in funzione
(si trattava di un controllo automatico di un'elettrovalvola per l'aria compressa, che ho installato nel nostro garage/laboratorio)
Ti capisco, pure io ho avuto una grandissima soddisfazione quando ho visto il mio primo programma dedicato ad un'applicazione reale in funzione
(si trattava di un controllo automatico di un'elettrovalvola per l'aria compressa, che ho installato nel nostro garage/laboratorio)
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Matteo Garia
- Moderator
Riduci
Di più
- Messaggi: 376
- Ringraziamenti ricevuti 38
12 Anni 7 Mesi fa #3
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: primo programma
Complimenti!
...spero tu abbia fatto bella figura!
...io metto solo del materiale a disposizione!
...sta poi alle persone trarne vantaggio e farne uso!
...un libro non si legge da solo!
...c'é bisogno della volonta' del leggerlo.
Solo questo permette di raccogliere i frutti.
Buon lavoro.
...ich Wunsche dir vielen Spaß im Mikrocontroller Welt!
Mauro
...spero tu abbia fatto bella figura!
...io metto solo del materiale a disposizione!
...sta poi alle persone trarne vantaggio e farne uso!
...un libro non si legge da solo!
...c'é bisogno della volonta' del leggerlo.
Solo questo permette di raccogliere i frutti.
Buon lavoro.
...ich Wunsche dir vielen Spaß im Mikrocontroller Welt!
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.