10. Βιβλιοθήκες (Modules)

Η Python μας επιτρέπει την ομαδοποίηση συναρτήσεων με κριτήριο των κοινών τους χαρακτηριστικών. Με αυτό τον τρόπο έχουμε την σωστή οργάνωσή των συναρτήσεων και την ευχρηστία κατά την συγγραφή κώδικα Python. Παράδειγμα βιβλιοθήκης είναι η math, η οποία περιέχει όλες τις συναρτήσεις για μαθηματικούς υπολογισμούς. Για να μπορέσουμε να χρησιμοποιήσουμε τις συναρτήσεις μιας βιβλιοθήκης, θα […]

19. H macro directive

Υπάρχουν εφαρμογές στον προγραμματισμό σε γλώσσα Assembly στις οποίες μια ομάδα εντολών εκτελεί μια εργασία η οποία επαναλαμβάνεται στο ίδιο πρόγραμμα. Είναι βαρετό να γράφουμε ξανά και ξανά αυτήν την ομάδα εντολών όποτε χρειάζεται. Επομένως για να μειώσουμε το χρόνο εγγραφής του κώδικα και να μειώσουμε την πιθανότητα λαθών χρησιμοποιούμε την έννοια των macros. Τα […]

18. Πρόσβαση στην μνήμη EEPROM των AVR

Κάθε μέλος της οικογένειας μικροελεγκτών AVR έχει κάποιο ποσό μνήμης EEPROM στο σώμα του. Όπως έχουμε αναφέρει σε προηγούμενη ενότητα τα δεδομένα της μνήμης SRAM χάνονται με την διακοπή της τροφοδοσίας τάσης. Έτσι χρειαζόμαστε ένα μέρος να αποθηκεύουμε τα δεδομένα μας έτσι ώστε να διατηρούνται με την διακοπή τάσης. Αυτό το πετυχαίνουμε με τον τύπο […]

17. Διαμόρφωση των bits των καταχωρητών GPR και Ι/Ο

Θέτοντας σε 1 τα bits των GPR Η εντολή SBR (Set Bits in Register) θέτει σε 1 καθορισμένα bits των καταχωρητών γενικού σκοπού. Έχει την ακόλουθη σύνταξη: Όπου Κ είναι μια 8-bit τιμή που μπορεί να είναι μεταξύ 0x00 έως 0xFF και ο καταχωρητής Rd ένας από τους R16 – R31 καταχωρητές GPR. Η εντολή […]

16. Εγγραφή και διάβασμα δεδομένων στη μνήμη ROM

Σε προηγούμενη ενότητα είδαμε ότι ο AVR μπορεί να έχει το πολύ 8ΜΒ μνήμης προγράμματος και το πολύ 64ΚΒ μνήμης δεδομένων. Μπορούμε να χρησιμοποιήσουμε την μνήμη προγράμματος για την αποθήκευση σταθερών δεδομένων. Σε αυτή την ενότητα θα μάθουμε πώς να έχουμε πρόσβαση στα σταθερά δεδομένα που έχουν εκχωρηθεί στη μνήμη προγράμματος ROM. Πρώτα εξετάζουμε πώς […]

9. Η έννοια της συνάρτησης στην Python

Η έννοια της συνάρτησης Στον προγραμματισμό με τη γλώσσα Python θα έχουμε παρατηρήσει, ότι χρησιμοποιούμε κάποιο κομμάτι κώδικα πολλαπλές φορές. Κάποιες φορές είναι κάτι απλό όπως η προβολή ενός μηνύματος ή άλλες φορές ένα μπλοκ κώδικα που εκτελεί σύνθετους μαθηματικούς υπολογισμούς. Θα ήταν ωραίο στον προγραμματισμό να γράφαμε το μπλοκ μια φορά και να αναφερόμαστε […]

8. Εντολές επανάληψης for και while

Δημιουργία ακολουθίας αντικειμένων με την εντολή range( ) Για την δημιουργία βρόγχων χρησιμοποιούμε την συνάρτηση range( ). Η συνάρτηση range( ) δημιουργεί ακολουθίες αριθμών και έχει την ακόλουθη σύνταξη: range(αρχή, τέλος, βήμα) όπου αρχή, τέλος και βήμα είναι ακέραιοι αριθμοί. Μπορούμε να καλέσουμε την συνάρτηση range με τρεις διαφορςτικούς τρόπους: range(τέλος)  Δίνει μια ακολουθία αριθμών […]

7. Η εντολή if ελέγχου ροής εκτέλεσης κώδικα

Πολλές φορές κατά την εκτέλεση ενός προγράμματος, χρειάζεται η ανακατεύθυνση της ροής εκτέλεσης με την λήψη κατάλληλης απόφασης. Ο βασικός παράγοντας στη λήψη απόφασης είναι η αποτίμηση της λογικής έκφρασης (συνθήκης) της εντολής ελέγχου η οποία δίνει δυο τιμές True ή False. Η πιο απλή εντολή που χρησιμοποιείται για τον έλεγχο ροής προγράμματος είναι η […]

6. Έξοδος και είσοδος δεδομένων στην Python

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

5. Λογικές εκφράσεις με σχεσιακούς και λογικούς τελεστές

Όπως είπαμε σε άλλη ενότητα η Python έχει ένα λογικό τύπο δεδομένων που ονομάζεται bool ο οποίος αποτελείται από δυο τιμές True και False. Μια λογική παράσταση είναι μια απλή ή σύνθετη έκφραση που μπορεί να πάρει μια από τις δυο τιμές True ή False. Η Python περιλαμβάνει δυο σύνολα πράξεων για την δημιουργία λογικών […]

15. Μέθοδοι διευθυνσιοδότησης – μέρος 2ο

Χρησιμοποιούμε direct ή register indirect addressing mode για να έχουμε πρόσβαση σε δεδομένα που βρίσκονται αποθηκευμένα στη μνήμη δεδομένων. Σε προηγούμενη ενότητα δείξαμε πώς να χρησιμοποιούμε direct addressing mode (άμεση μέθοδος διευθυνσιοδότησης). Η register indirect addressing mode (η έμμεση με καταχωρητή μέθοδος διευθυνσιοδότησης) είναι μια σημαντική μέθοδος διευθυνσιοδότησης για τους AVRs. Στην register indirect addressing […]

14. Μέθοδοι διευθυνσιοδότησης – μέρος 1ο

H CPU μπορεί να έχει πρόσβαση σε δεδομένα με διαφορετικούς τρόπους. Τα δεδομένα μπορεί να βρίσκονται σε ένα καταχωρητή ή στη μνήμη ή να παρέχονται με σταθερές τιμές. Οι διάφοροι τρόποι για την πρόσβαση δεδομένων ονομάζονται μέθοδοι διευθυνσιοδότησης (addressing modes) Single – register (immediate) addressing mode Σ αυτή την μέθοδο διευθυνσιοδότησης ο τελεστέος είναι ένας […]

5. Η έννοια της δομής δεδομένων και η εντολή typedef

Η έννοια της δομής δεδομένων Μια δομή δεδομένων είναι ένα γκρούπ σχετικών μεταβλητών που μπορούν να προσπελαστούν κάτω από κοινό όνομα. Κάθε μέλος της δομής δεδομένων έχει το δικό του τύπο, που μπορεί να είναι διαφορετικό από τα άλλα μέλη της δομής. Η σύνταξη ορισμού μιας δομής δεδομένων είναι η ακόλουθη: struct     structname{      tape1   member1;      […]

4. Οι έννοιες: της συνάρτησης, του δείκτη και του πίνακα

Η έννοια της συνάρτησης Ένα πρόγραμμα σε γλώσσα C αποτελείται από μια ή περισσότερες συναρτήσεις. Κάθε πρόγραμμα στη C περιέχει απαραιτήτως τη συνάρτηση main() από όπου ξεκινά η εκτέλεση του προγράμματος. Σε ένα πρόγραμμα που αποτελείται από πολλαπλές συναρτήσεις, το σώμα ορισμού μιας συνάρτησης δεν πρέπει να βρίσκεται μέσα σε άλλη. Η ίδια συνάρτηση μπορεί […]

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

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

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

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

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

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

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

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

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

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

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

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