Pildo Inserito: 14 febbraio 2015 Segnala Share Inserito: 14 febbraio 2015 Ciao a tutti, come ho già scritto in un precedente post, mi sto dilettando cin i pic (16f84a) e sto iniziando porgrammando in Mikroc, l'altra sera ho fatto un semplicissimo programma dove premendo un tasto collegato su RA1 di accende un led su RB1 per un secondo. Questo programma non sono riuscito a farlo funzionare, l'ho provato anche con realpic simulator. Ho deciso di provare a fare un altro programma ricominciando da zero, il risultato è che il secondo funziona, allora sono andato a vedere quali sono le differenze tra i due programmi e la sorpresa è stata che apparentemente non ci sono differenze. Ve li allego: Questo è quello che funziona /* pic16f84a 4 MHz premendo un pulsante (A1) si accende un led (B1)*/ #define pulsante porta.B1 #define led portb.B1 void set() { porta=0xff; //porta a tutti ingressi portb=0x00; //porta b tutte uscite trisb=0x00; //bit porta b tutti a livello basso } void main() { set(); while(1) { led=0; if(pulsante==0) { led=1; delay_ms(1000); } } } Questo è quello che non funziona // PIC 16F84A 4 MHz // premendo il pulsante su RA1 si accende il led su RB1 per un secondo #define pulsante porta.b1 #define led portb.b1 void set() { porta=0xff; // porta a tutti ingressi portb=0x00; //porta b tutte uscite trisb=0x00; // bit porta b tutti i bit a zero } void main(){ set(); while(1) { led=0; if (pulsante==0) { led=1; delay_ms(1000); } } } Probabilmente l'errore è davanti ai miei occhi ma non riesco a vederlo, mi aiutereste per cortesia? Mi viene il dubbio di aver impostato male l'oscillatore o altri parametri, ma con la mia inesperienza non riesco a trovare dove andare a controllarli. Scusatemi, accatto consigli ed insulti Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 14 febbraio 2015 Segnala Share Inserita: 14 febbraio 2015 sono uguali rivedi queste istruzioni perché non sono quello che hai commentato porta=0xff; // porta a tutti ingressi portb=0x00; //porta b tutte uscite trisb=0x00; // bit porta b tutti i bit a zero porta=0xff; mette sulla porta A tutti 1 in uscita, non imposta la porta a come ingresso stessa cosa porta b mette in uscita tutti zeri trisb=0 stabilisce che la porta B è un'uscita avresti dovuto scrivere trisa=0xff per fare in modo che la porta a sia in ingresso Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 14 febbraio 2015 Segnala Share Inserita: 14 febbraio 2015 I programmi sono uguali, il problema risiede altrove.I commenti dei registri port e tris vanno scambiati, tris imposta la direzione, port il valore.Hai messo una resistenza di pull-up all'ingresso pulsante?Ciao. Link al commento Condividi su altri siti More sharing options...
Pildo Inserita: 14 febbraio 2015 Autore Segnala Share Inserita: 14 febbraio 2015 Giusto, ho invertito le istruzioni tris con port, ora mi chiedo come fa a funzionare un programma.Il problema forse è proprio qui. Ho messo la resistenza di pullup, ma non mi funziona neanche con Realpuc simulator. Link al commento Condividi su altri siti More sharing options...
Pildo Inserita: 14 febbraio 2015 Autore Segnala Share Inserita: 14 febbraio 2015 Ho messo le istruzioni tris e port al posto giusto, ma non è cambiato nulla. Mistero☺ Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 14 febbraio 2015 Segnala Share Inserita: 14 febbraio 2015 Butta via i simulatori e lavora sul micro direttamente, magari usando un ICD. Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 14 febbraio 2015 Segnala Share Inserita: 14 febbraio 2015 sono uguali... l'unica cosa è il commento iniziale, prova a toglierlo Link al commento Condividi su altri siti More sharing options...
Pildo Inserita: 14 febbraio 2015 Autore Segnala Share Inserita: 14 febbraio 2015 Hai ragione, ma l'ho scaricato proprio per assicurarmi di non aver sbagliato qualcosa sul circuito vero fatto sulla breadboard, mi ha confermato i risultati ottenuti con il circuitoProvo a togliere il commento, anche se non dovrebbe influire, ma non do nulla per scontato. Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 14 febbraio 2015 Segnala Share Inserita: 14 febbraio 2015 Per curiosità ho provato il simulatore ed il programma non funzionante e ... funziona!.Ciao. Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 14 febbraio 2015 Segnala Share Inserita: 14 febbraio 2015 Per curiosità ho provato il simulatore ed il programma non funzionante e ... funziona!. Ciao. ahahah anche io Link al commento Condividi su altri siti More sharing options...
Pildo Inserita: 14 febbraio 2015 Autore Segnala Share Inserita: 14 febbraio 2015 Bene! Dubbi su dubbi Link al commento Condividi su altri siti More sharing options...
simuffa Inserita: 14 febbraio 2015 Segnala Share Inserita: 14 febbraio 2015 che compilatore usi? Link al commento Condividi su altri siti More sharing options...
Pildo Inserita: 14 febbraio 2015 Autore Segnala Share Inserita: 14 febbraio 2015 Uso Mikroc, comunque ho copiato ed incollato il listato su un nuovo progetto e ora funziona, probabilmente si è "incartato" qualcosa. Grazie a tutti. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora