Έλεγχος ροής προγράμματος: if – while – for – goto

Οι εντολές ελέγχου ροής ορίζουν τη σειρά με την οποία εκτελούνται οι εντολές ενός προγράμματος στη γλώσσα C. Κάθε εντολή θα πρέπει να τερματίζεται με το ελληνικό ερωτηματικό. Οι αγκύλες { και } χρησιμοποιούνται για να ορίσουν ένα μπλοκ εντολών σαν να ήταν μια συντακτικά ισοδύναμη απλή εντολή. Οι εντολές ελέγχου εκτέλεσης του προγράμματος είναι […]

Τύποι μεταβλητών – αριθμητικοί και λογικοί τελεστές

Μεταβλητές και τύποι δεδομένων Στον προγραμματισμό των μικροελεγκτών AVR χρησιμοποιούμε μεταβλητές για το χειρισμό των δεδομένων του προβλήματος που προσπαθούμε να επιλύσουμε. Στον προγραμματισμό με τη γλώσσα C, oι μεταβλητές πρέπει να δηλώνονται πριν τις χρησιμοποιήσουμε. Μια δήλωση μεταβλητής πρέπει να περιλαμβάνει το όνομα και το τύπο μεταβλητής και αν θέλουμε μπορούμε να τις αρχικοποιούμε […]

Εισαγωγή στον προγραμματισμό των AVR με τη γλώσσα C

Οι AVR όπως όλοι οι μικροελεγκτές καταλαβαίνουν αριθμούς που αποτελούνται από ένα σύνολο από 0ς και 1ς. Με αυτό τον τρόπο, οι εντολές που θέλουμε να εκτελέσουν οι μικροελεγκτές AVR, βρίσκονται κωδικοποιημένες στη μνήμη προγράμματος σαν ένα σύνολο δυαδικών αριθμών. Έχουν αναπτυχθεί πολλά «εργαλεία» που μας βοηθούν στην συγγραφή προγραμμάτων τα οποία αποτελούνται από μια […]

Εντολές περιστροφής και μετατόπισης byte

Οι μικροελεγκτές AVR με τις εντολές ROL και ROR εκτελούν περιστροφή ή μετατόπιση κατά ένα bit διαμέσου της σημαίας κρατουμένου. Παρακάτω θα εξετάσουμε αυτές τις εντολές διότι χρησιμοποιούνται ευρέως στον προγραμματισμό. Περιστροφή διαμέσου του κρατουμένου: Υπάρχουν δυο εντολές περιστροφής στους AVR που εμπλέκουν τη σημαία κρατουμένου, αυτές είναι οι ROR και ROL. Η εντολή περιστροφής […]

Εντολές διακλάδωσης υπό συνθήκη

Εντολές  σύγκρισης Οι μικροελεγκτές AVR έχουν την εντολή CP για να συγκρίνουν τελεστέους. Η εντολή σύγκρισης στην ουσία είναι μια αφαίρεση, όπου οι τιμές των τελεστέων δεν αλλάζουν. Υπάρχει επίσης και η εντολή “CPI  Rd, k” στην οποία ο δεξιός τελεστέος είναι μια σταθερή τιμή. Ο AVR έχει μερικές εντολές διακλάδωσης που μπορούν να χρησιμοποιηθούν […]

Εντολές δημιουργίας λογικών εκφράσεων

Εκτός από τις Ι/Ο και τις αριθμητικές εντολές, οι λογικές εντολές είναι μερικές από τις πιο ευρέα χρησιμοποιούμενες εντολές. Σε αυτή την ενότητα καλύπτουμε τις Boolean λογικές εντολές όπως οι AND, OR, Exclusive – OR (XOR) και το συμπλήρωμα. Η λογική εντολή AND Αυτή η εντολή εκτελεί το λογικό AND πάνω σε δυο τελεστέους (GPRs) […]

Πράξεις με προσημασμένους αριθμούς

Μέχρι στιγμής τα αριθμητικά δεδομένα που χρησιμοποιούσαμε παρίσταναν αριθμούς χωρίς πρόσημο. Όμως στη καθημερινή ζωή χρησιμοποιούμε θετικούς αλλά και αρνητικούς αριθμούς. Για παράδειγμα όταν αναφερόμαστε σε θερμοκρασία 5 βαθμούς Κελσίου κάτω από το μηδέν, αυτή παριστάνεται με την αρνητική τιμή -5, ενώ η θερμοκρασία 20 βαθμούς πάνω από το μηδέν με +20. Οι ηλεκτρονικοί υπολογιστές […]

Πράξεις με μη προσημασμένους αριθμούς

Πρόσθεση μη προσημασμένων αριθμών Για την πρόσθεση δυο 8-bit προσημασμένων αριθμών, χρησιμοποιούμε την εντολή ADD, που έχει σαν όρισμα δυο γενικού σκοπού καταχωρητών GPRs, στους οποίους έχουμε από πριν φορτώσει τις τιμές που θέλουμε να προσθέσουμε Η εντολή προσθέτει τα περιεχόμενα του καταχωρητή Rr σε εκείνα του καταχωρητή Rd. Αυτή η εντολή μπορεί να αλλάξει […]

Προγραμματισμός Ι/Ο θυρών και χειρισμός bit των I/O καταχωρητών

Στην οικογένεια των μικροελεγκτών AVR υπάρχει ένας αριθμός θυρών για Ι/Ο λειτουργίες που είναι διαφορετικός για κάθε μέλος της οικογένειας AVR. Στον 28-pin μικροελεγκτή ATmega 328 υπάρχουν συνολικά 23 πινς για τις τρεις θύρες PORTB, PORTC και PORTD. Τα υπόλοιπα πινς χρησιμοποιούνται σαν VCC, GND, RESET, AREF, AGND και AVCC. Ο αριθμός των θυρών που […]

Η εντολή CALL και ο σωρός

Η εντολή CALL και ο σωρός Μια άλλη εντολή διακλάδωσης είναι η CALL, η οποία χρησιμοποιείται για να καλέσουμε μια υπορουτίνα. Οι υπορουτίνες χρησιμοποιούνται συχνά για να καλέσουμε κομμάτια κώδικα που εκτελούνται συχνά. Αυτό κάνει το πρόγραμμα περισσότερο δομημένο και έχουμε εξοικονόμηση  μνήμης προγράμματος. Στους μικροελεγκτές AVR έχουμε τέσσερις εντολές για να καλούμε υπορουτίνες: CALL […]

Διακλαδώσεις και βρόγχοι

Πολλές φορές θέλουμε να πάμε τη ροή της εκτέλεσης ενός προγράμματος Assembly σε άλλη εντολή. Αυτό μπορούμε να το κάνουμε  με την υπό συνθήκη ή χωρίς συνθήκη διακλάδωση. Με την υπό συνθήκη διακλάδωση είναι οι εντολές: π.χ. BRNE  ή  BRSH ή με χωρίς συνθήκη είναι: οι JMP ή RJMP Χρησιμοποιώντας την εντολή BRNE για την […]

Data memory and I/O registers

AVR Data Memory Σε ένα μικροελεγκτή AVR υπάρχουν δυο τύποι μνήμης: Η μνήμη κώδικα (code memory space) και η μνήμη δεδομένων (data memory space). Ο κώδικας που γράφουμε αποθηκεύεται στην μνήμη κώδικα ενώ τα δεδομένα στην μνήμη δεδομένων. Η μνήμη δεδομένων αποτελείται από τρία είδη μνήμης: GPRs (καταχωρητές γενικού σκοπού), τη μνήμη Ι/Ο και την […]

Ο τύπος δεδομένων String και η εντολή print

Ο τύπος δεδομένων string Το string ή στην ελληνική γλώσσα «συμβολοσειρά» είναι ένας νέος τύπος δεδομένων που αποτελείται από μια σειρά χαρακτήρων κλεισμένους μέσα σε μονούς ή διπλούς αποστρόφους. Για να δημιουργήσουμε μια μεταβλητή τύπου string και να της αποδώσουμε μια τιμή, χρησιμοποιούμε την εντολή εκχώρησης, όπως φαίνεται παρακάτω: Μπορούμε να ενώνουμε συμβολοσειρές με το […]

Μαθηματικές πράξεις στην Python

Τύποι δεδομένων της Python Όπως είπαμε, οι μεταβλητές είναι ονόματα των θέσεων μνήμης στις οποίες αποθηκεύονται δεδομένα. Τα δεδομένα αυτά μπορεί να είναι του τύπου: Αριθμοί – συμβολοσειρές – Λίστες – Λεξικά – Πλειάδες – Σύνολα και Αρχεία. Οι μεταβλητές δημιουργούνται την στιγμή που τους ανατίθονται δεδομένα. Ο τύπος της μεταβλητής που θα δημιουργηθεί είναι […]

Εισαγωγή στην Python

Η Python είναι μια διαδραστική, διερμηνευόμενη και αντικειμενοστραφής γλώσσα προγραμματισμού. Η Python αναπτύχθηκε από τον Guido van Rossum την δεκαετία των 80 στο National Institute for Mathematics and Computer Science της Ολλανδίας. Η Python είναι μια διαδραστική γλώσσα που σημαίνει ότι μπορείς να ζητήσεις μια εντολή και μπορείς να δεις άμεσα το αποτέλεσμα χωρίς  να […]

Χρήση της γραμμής εντολών

Η εντολή man Για να μάθουμε το πώς θα χρησιμοποιούμε μια εντολή κάνουμε χρήση της εντολής man. Για να εμφανίσουμε πληροφορίες με τον τρόπο που θα χρησιμοποιούμε π.χ. την εντολή mkdir δίνουμε στην γραμμή εντολών: Με τον συνδυασμό των πλήκτρων Ctrl + Z κάνουμε έξοδο από την man Ημερομηνία, ώρα και ημερολόγιο Για να εμφανίσουμε […]

Άδειες πρόσβασης αρχείων και καταλόγων

Ένα από τα πιο σημαντικά ορίσματα που παίρνει η εντολή ls είναι το “-l”. Κατά την εκτέλεση αυτής της εντολής με το συγκεκριμένο όρισμα εμφανίζεται μια λίστα με τις άδειες πρόσβασης των αρχείων και υποκαταλόγων που εμπεριέχονται στον τρέχον κατάλογο. Επίσης δείχνει τα μεγέθη των αρχείων και πότε αυτά τροποποιήθηκαν τελευταία. Στο παράδειγμα της παρακάτω […]

Το ολοκληρωμένο κύκλωμα

Τα ολοκληρωμένα κυκλώματα έχουν πλέον γίνει αναπόσπαστο μέρος της ζωής μας. Για παράδειγμα, οι περισσότεροι άνθρωποι έχουν ακούσει τον όρο « μικροεπεξεργαστής». Ένας μικροεπεξεργαστής είναι ένα ολοκληρωμένο κύκλωμα ( ή όπως συνηθίζεται, απλά « ολοκληρωμένο») που επεξεργάζεται όλες τις πληροφορίες σε ένα Ηλεκτρονικό Υπολογιστή ( Η/Υ). Συγκεκριμένα, κρατά πληροφορίες για το ποια πλήκτρα έχουν πατηθεί, […]

Η δίοδος

Η δίοδος ή κρυσταλλοδίοδος είναι το ηλεκτρονικό εξάρτημα που επιτρέπει τη διέλευση του ηλεκτρικού ρεύματος στην μια κατεύθυνση ενώ απαγορεύει την διέλευση του ρεύματος στην αντίθετη κατεύθυνση. Αποτελείται από την επαφή ενός ημιαγωγού τύπου Ρ με ένα ημιαγωγό τύπου Ν. Ο ακροδέκτης που συνδέεται στο τμήμα Ρ λέγεται άνοδος, ενώ ο ακροδέκτης που συνδέεται στο […]

Προγραμματισμός σε γλώσσα assembly

Εισαγωγή Η CPU ενός μικροελεγκτή δέχεται εντολές και δεδομένα σε δυαδική μορφή δηλαδή αριθμούς αποτελούμενοι από 0 και 1. Το σύνολο των εντολών που γράφουμε εκφρασμένο σε δυαδικό ή δεκαεξαδικό κώδικα ονομάζεται γλώσσα μηχανής (machine code). Για να διευκολυνθούμε στην ανάπτυξη κώδικα μηχανής χρησιμοποιούμε τον assembler, ο οποίος είναι μια εφαρμογή που δέχεται μνημονικά ονόματα […]