Jump to content
PLC Forum


Sign in to follow this  
Pildo

Problema Con Due Programmini In C

Recommended Posts

Pildo

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 :smile:

Share this post


Link to post
Share on other sites

simuffa

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

Share this post


Link to post
Share on other sites
giacomo56

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.

Share this post


Link to post
Share on other sites
Pildo

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.

Share this post


Link to post
Share on other sites
Pildo

Ho messo le istruzioni tris e port al posto giusto, ma non è cambiato nulla. Mistero☺

Share this post


Link to post
Share on other sites
Livio Orsini

Butta via i simulatori e lavora sul micro direttamente, magari usando un ICD.

Share this post


Link to post
Share on other sites
simuffa

sono uguali... l'unica cosa è il commento iniziale, prova a toglierlo

Share this post


Link to post
Share on other sites
Pildo

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 circuito

Provo a togliere il commento, anche se non dovrebbe influire, ma non do nulla per scontato.

Share this post


Link to post
Share on other sites
giacomo56

Per curiosità ho provato il simulatore ed il programma non funzionante e ... funziona!.

Ciao.

Share this post


Link to post
Share on other sites
simuffa

Per curiosità ho provato il simulatore ed il programma non funzionante e ... funziona!.

Ciao.

ahahah anche io :D

Share this post


Link to post
Share on other sites
Pildo

Uso Mikroc, comunque ho copiato ed incollato il listato su un nuovo progetto e ora funziona, probabilmente si è "incartato" qualcosa.

Grazie a tutti.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...