Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια χαρά...

 

Εχω συνδέσει τον avr stk500 και προσπαθώ μέσω του codevision να γράψω ένα απλό πρόγραμμα το οποίο είναι όταν πατάω ένα switch

να ανάβει ένα led, με τον εξής κώδικα:

 

 

#include <mega8515.h>

 

void main(void)

{

 

DDRA=0x00; //eisodos(switch)

DDRB=0xff; //exodos(led)

 

while (1)

{

PINB.0=1; //led

 

if(PINA.0==0){ //switch

PINB.0=0;

}

 

 

}

}

 

λογικά έχω κάποιο λάθος , αλλά λύση δέ βρίσκω...

αν μπορεί κάποιος άς βοηθήσει...

Δημοσ.

Με αυτόν το κώδικα όταν θα πατάς το κουμπί θα σβήνει το led. Λόγο μηχανικών αναπηδήσεων στο κουμπί μπορεί να μην παίρνεις την σωστή είσοδο.

Αρχικά έλεγξε την είσοδό σου αν λαμβάνει σήμα με το πάτημα του κουμπιού. Έχεις το PINA.0==0 ίσο με 0 άρα η συνδεσμολογία του κουμπιού πηγαίνει με το πάτημα στην γείωση???

 

Το πρόγραμμά σου πρέπει να παγώνει στο σημείο ελέγχου για το πάτημα του κουμπιού και να περιμένει. Ίσως με μια else{continue;}

Δημοσ.

Ο κωδικας δεν ειναι λαθος γιατι στο αναπτυξιακο που χρησιμοποιεί τα παντα ειναι με αναστροφη λογικη συνδεδεμενα

Δημοσ.

Οι έξοδοι είναι PORTB

 

και με το if δεν θα προλάβεις να δεις τίποτα.

 

>
while (1)
 {
  PINB.0=1; //led 

  while(PINA.0==0)
          { //switch
            PORTB.0=0;
          }
 }

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...