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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οι έννοιες: (α)της συνάρτησης, (β)του δείκτη, (γ)του πίνακα

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

Έλεγχος ροής προγράμματος: 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 […]