ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051"

Transcript

1 ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051 ΝΙΚΟΛΑΪ ΗΣ ΝΙΚ. ΘΕΣΣΑΛΟΝΙΚΗ ΜΑΪΟΣ 2006

2

3 Αφιερώνεται στο γιο µου Γιάννη

4 EMY-8051-V7.DOC

5 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1 ΤΟ ΠΡΟΓΡΑΜΜΑ MICROVISION ΓΕΝΙΚΑ ΗΜΙΟΥΡΓΙΑ PROJECT ΣΥΓΓΡΑΦΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΜΕΤΑΦΡΑΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Ο ΕΚΣΦΑΛΜΑΤΩΤΗΣ (DEBUGGER) Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΤΟΥ Η εσωτερική µνήµη RAM Οι SFR (Καταχωρητές Ειδικών Λειτουργιών) Η εξωτερική RAM Η µνήµη ROM ή µνήµη προγράµµατος ΕΜΦΑΝΙΣΗ / ΤΡΟΠΟΠΟΙΗΣΗ ΤΩΝ ΠΕΡΙΕΧΟΜΕΝΩΝ ΜΝΗΜΗΣ ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ (ADDRESSING MODES) Άµεση ιευθυνσιοδότηση (Immediate addressing) Απευθείας ιευθυνσιοδότηση (Direct addressing) ιευθυνσιοδότηση Καταχωρητή (Register addressing) Έµµεση διευθυνσιοδότηση (Indirect addressing) ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ ΠΡΟΣΘΕΣΗ ΑΡΙΘΜΩΝ ΤΟΥ 1 BYTE ΠΡΟΣΘΕΣΗ ΑΡΙΘΜΩΝ 2 Η ΠΕΡΙΣΣΟΤΕΡΩΝ BYTES ΑΦΑΙΡΕΣΗ...47

6 4.4 ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ ΚΑΙ ΙΑΙΡΕΣΗ ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ ΙΑΚΛΑ ΩΣΕΙΣ ΧΩΡΙΣ ΣΥΝΘΗΚΗ Μακρινή διακλάδωση Σχετική διακλάδωση ΙΑΚΛΑ ΩΣΕΙΣ ΥΠΟ ΣΥΝΘΗΚΗ ιακλάδωση υπό συνθήκη µε έλεγχο byte ιακλάδωση υπό συνθήκη µε έλεγχο bit Απόλυτη διακλάδωση ΣΥΓΚΡΙΣΕΙΣ ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ ΣΤΟΙΒΑ ΥΠΟΡΟΥΤΙΝΕΣ Πόσο πρέπει να είναι το µέγεθος της στοίβας; ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ. ΕΝΤΟΛΕΣ ΙΑΧΕΙΡΙΣΗΣ BITS ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ BITS ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ ΣΕ BITS ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ ΣΕ BYTES ΕΝΤΟΛΕΣ ΠΕΡΙΣΤΡΟΦΗΣ ΕΝΤΟΛΕΣ ΡΥΘΜΙΣΗΣ BITS ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ ΕΠΕΚΤΑΣΕΙΣ ΤΟΥ ΒΑΣΙΚΟΥ ΜΟΝΤΕΛΟΥ...83

7 8.1.1 Επί πλέον µνήµη RAM Επί πλέον χρονιστές Πρόσθετες σειριακές θύρες Αναλογικές θύρες Μνήµη ROM Μικρότερα µοντέλα Μικροελεγκτές ειδικών προδιαγραφών ΧΑ ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ Εξοµοιωτής ROM Εξοµοιωτής εντός κυκλώµατος (ICE) Πλακέτες αξιολόγησης (EVB) ISP Προγράµµατα εκσφαλµάτωσης Λογικός αναλυτής Οδηγίες χρήσης του προγράµµατος FLIP ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) ΕΚΤΕΛΕΣΗ ΣΕ ΠΛΗΡΗ ΤΑΧΥΤΗΤΑ ΒΗΜΑΤΙΚΗ ΕΚΤΕΛΕΣΗ ΠΑΥΣΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ Ορισµός σηµείων παύσης ΑΛΛΑ ΕΡΓΑΛΕΙΑ ΕΚΣΦΑΛΜΑΤΩΣΗΣ Παράθυρο επίβλεψης (watch window) Disassembly window Παράθυρο συµβόλων ΤΕΧΝΙΚΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ ΣΥΓΚΡΙΣΗ ΜΕΓΑΛΩΝ ΚΑΙ ΠΡΟΣΗΜΑΣΜΕΝΩΝ ΑΡΙΘΜΩΝ...115

8 Απροσήµαστοι αριθµοί Προσηµασµένοι αριθµοί ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ ΚΑΙ ΙΑΙΡΕΣΗ ΜΕΤΑΞΥ ΠΡΟΣΗΜΑΣΜΕΝΩΝ ΑΡΙΘΜΩΝ ΥΠΟΛΟΓΙΣΜΟΣ ΧΡΟΝΙΚΩΝ ΚΑΘΥΣΤΕΡΗΣΕΩΝ ΕΦΑΡΜΟΓΗ 1: ΓΕΝΝΗΤΡΙΑ ΧΑΜΗΛΩΝ ΣΥΧΝΟΤΗΤΩΝ ΠΑΡΑΓΩΓΗ ΤΕΤΡΑΓΩΝΙΚΟΥ ΠΑΛΜΟΥ ΠΑΡΑΓΩΓΗ ΗΜΙΤΟΝΟΕΙ ΟΥΣ ΚΥΜΑΤΟΜΟΡΦΗΣ ΠΑΡΑΓΩΓΗ ΤΡΙΓΩΝΙΚΗΣ ΚΥΜΑΤΟΜΟΡΦΗΣ ΕΦΑΡΜΟΓΗ 2. ΠΑΡΑΓΩΓΗ PWM ΕΦΑΡΜΟΓΗ 3: ΜΗΧΑΝΗ ΚΑΤΑΣΤΑΣΕΩΝ ΜΗΧΑΝΗ ΥΟ ΚΑΤΑΣΤΑΣΕΩΝ ΜΗΧΑΝΗ ΤΕΣΣΑΡΩΝ ΚΑΤΑΣΤΑΣΕΩΝ ΥΠΟΛΟΓΙΣΜΟΣ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΡΑΣΤΑΣΕΩΝ ΑΡΙΘΜΗΤΙΚΗ ΣΤΑΘΕΡΗΣ ΥΠΟ ΙΑΣΤΟΛΗΣ (FIXED POINT ARITHMETIC) ΑΡΙΘΜΗΤΙΚΗ ΜΕΓΑΛΩΝ ΑΚΕΡΑΙΩΝ Πολλαπλασιασµός µεγάλων ακεραίων ιαίρεση µεγάλων ακεραίων Υπολογισµός τετραγωνικής ρίζας Τριγωνοµετρικοί αριθµοί ΣΕΙΡΑ ΕΚΤΕΛΕΣΗΣ ΤΩΝ ΠΡΑΞΕΩΝ ΠΡΟΣΘΕΣΗ ΣΤΟΝ ΚΩ ΙΚΑ BCD...147

9 ΕΙΣΑΓΩΓΗ Στα εργαστηριακά µαθήµατα των Μικροϋπολογιστών και Μικροελεγκτών θα µελετηθεί ο µικροελεγκτής 8051 και ο τρόπος σύνδεσης και προγραµµατισµού του για υλοποίηση ελεγκτών για αυτόµατο έλεγχο. Επιλέγηκε ο 8051 επειδή είναι ένας από τους πιο δηµοφιλείς µικροελεγκτές σήµερα, υπάρχει πληθώρα εργαλείων software και hardware και έχει πολύ καλή υποστήριξη. Στο πρώτο αυτό εργαστηριακό µάθηµα των Μικροϋπολογιστών θα µελετηθεί ο πυρήνας του 8051, η οργάνωση της µνήµης του, το ρεπερτόριο εντολών του και οι βασικές τεχνικές για τον προγραµµατισµό του σε assembly. Στο επόµενο εργαστηριακό µάθηµα των Μικροελεγκτών θα µελετηθούν τα περιφερειακά που είναι ενσωµατωµένα στον µικροελεγκτή και θα επιλυθούν µερικά κλασικά προβλήµατα αυτοµατισµού µε τη βοήθεια του Το βασικό software εργαλείο για το µάθηµα θα είναι το πρόγραµµα προσοµοίωσης του 8051 της εταιρείας Keil, το microvision (µvision v2). Το πρόγραµµα αυτό σε demo version µε περιορισµό µέχρι 2 ΚBytes κώδικα περιέχεται στο CD που διανέµει το εργαστήριο. Η τελευταία έκδοση διανέµεται δωρεάν από την εταιρεία από τη διεύθυνση Θεωρείται τελείως απαραίτητη η ανελλιπής παρακολούθηση των παραδόσεων των θεωρητικών µαθηµάτων. Έχει καταβληθεί προσπάθεια ώστε να συµβαδίζει το εργαστήριο µε τη θεωρία και, αν ένας σπουδαστής παρακολουθεί τα θεωρητικά µαθήµατα, θα µπορέσει να ανταποκριθεί στο εργαστήριο. Πολύ σηµαντικές θεωρούνται οι εργαστηριακές ασκήσεις 2 και 3 µε αντικείµενα την οργάνωση µνήµης και τους τρόπους διευθυνσιοδότησης του Χωρίς την κατανόηση αυτών των αντικειµένων, είναι δύσκολη η συνέχεια στις υπόλοιπες εργαστηριακές ασκήσεις.

10 ΕΙΣΑΓΩΓΗ ΕΡΓΑΣΤΗΡΙΑΚΗ ΙΑ ΙΚΑΣΙΑ Πρέπει να πραγµατοποιούνται 12, τουλάχιστον, εργαστηριακές ασκήσεις για να θεωρείται ότι ολοκληρώθηκε το εργαστήριο. Κάθε σπουδαστής πρέπει να ολοκληρώσει µε επιτυχία τουλάχιστον το 80% από αυτές για να επιτύχει στο εργαστήριο. Εάν αποτύχει ή απουσιάσει σε µία ή δύο ασκήσεις, ο σπουδαστής έχει το δικαίωµα να τις επαναλάβει στο τέλος του εξαµήνου για βελτίωση της βαθµολογίας του. Εάν αποτύχει ή απουσιάσει σε µία ή δύο επί πλέον, ο σπουδαστής υποχρεούται να τις επαναλάβει στο τέλος του εξα- µήνου. Σηµειώστε πάντως ότι, για τις τελευταίες ασκήσεις, δεν υπάρχει ο απαραίτητος χρόνος για την πραγµατοποίηση συµπληρωµατικών ασκήσεων. Για τον υπολογισµό του βαθµού της κάθε εργαστηριακής άσκησης προστίθενται οι εξής βαθµοί: - Ο βαθµός από τη συµµετοχή στην εργαστηριακή διαδικασία κατά τη διάρκεια της άσκησης. Η συµµετοχή στον τελικό βαθµό θα είναι 30%. - Ο βαθµός ενός τεστ πάνω στα συµπεράσµατα της άσκησης, στο τέλος αυτής. Η συµµετοχή του βαθµού του τεστ στον τελικό βαθµό θα είναι 50%. Στις ασκήσεις 8, 10, 11 και 12 αντί για τεστ θα γίνεται εξέταση, προφορική ή γραπτή, σε ηµεροµηνία που θα καθορίζεται και θα ανακοινώνεται. - Ο βαθµός της εργαστηριακής έκθεσης (οµαδικής) που θα παραδίδεται µία εβδοµάδα µετά τη διεξαγωγή της άσκησης. Η µη έγκαιρη παράδοση της έκθεσης συνεπάγεται και τη µείωση του βαθµού της κατά µισή µονάδα για κάθε εβδοµάδα καθυστέρησης. Η συµµετοχή του βαθµού της έκθεσης στον τελικό θα είναι 20%. Ο χρόνος παράδοσης της µιας εβδοµάδας δεν ισχύει για την εργαστηριακή έκθεση της άσκησης 10. Ο τελικός βαθµός του εργαστηριακού µαθήµατος θα προκύπτει από την άθροιση των βαθµών των εργαστηριακών ασκήσεων του σπουδαστή και τη διαίρεση δια του πλήθους των ασκήσεων που πραγµατοποιήθηκαν (τουλάχιστον 12 κατά το νόµο). Οι ασκήσεις 8, 11 και 12 γίνονται µε τη µορφή project. Κάθε σπουδαστής προµηθεύεται από το εµπόριο τα εξαρτήµατα και πραγµατοποιεί τις ασκήσεις κατ ιδίαν. Η παράδοση και η εξέταση των project γίνεται σε ηµεροµηνία που 2 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

11 καθορίζεται και ανακοινώνεται, προς το τέλος των µαθηµάτων κάθε εξαµήνου. Η εξέταση των project είναι προφορική. Για να µπορέσει ο σπουδαστής να ανταποκριθεί στις απαιτήσεις των εργαστηριακών ασκήσεων πρέπει να προσέρχεται επαρκώς προετοιµασµένος. Κάθε οµάδα θα πρέπει να αποθηκεύει τα προγράµµατά της σε δισκέτα ή σε flash disk. Τα περιεχόµενα των καταλόγων (directories) των εργαστηριακών οµάδων διαγράφονται αυτόµατα, καθηµερινά. Οι σταθερές κωδ1 και κωδ2 που αναφέρονται στο κείµενο θα προσδιορίζονται από τους καθηγητές στην αρχή κάθε µαθήµατος.

12 ΕΙΣΑΓΩΓΗ 4 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

13 1 ΤΟ ΠΡΟΓΡΑΜΜΑ microvision Το µvision χρησιµοποιείται για: Τη συγγραφή προγραµµάτων σε assembly και σε C και τη µετάφρασή τους για την παραγωγή του εκτελέσιµου κώδικα. Να προσοµοιάζει τη CPU 8051 και να εκτελεί τον κώδικα µέσα στον υπολογιστή. Να µεταφέρει τον κώδικα σε διάφορες πλακέτες - στόχους (targets) και να τον εκτελεί µέσα σ' αυτές. Το µvision διατίθεται δωρεάν από την εταιρεία Keil για κώδικα µέχρι 2 KBytes, στη διεύθυνση Ακολουθεί µία σύντοµη περιγραφή του. 1.1 ΓΕΝΙΚΑ Φαντάζεστε ότι το να γράψουµε ένα πρόγραµµα σηµαίνει να ανοίξουµε ένα αρχείο κειµένου, να γράψουµε εκεί το πρόγραµµα και να το µεταφράσου- µε παράγοντας το δυαδικό αρχείο. Το δυαδικό αυτό αρχείο πρόκειται να εκτελεστεί, είτε από τον προσοµοιωτή είτε από διάφορες πλακέτες - στόχους. Είναι και αυτός ένας τρόπος εργασίας, αλλά όχι πάντοτε σωστός. Σε µεγάλες εφαρµογές όλο το πρόγραµµα δεν είναι σε ένα αρχείο αλλά σε πολλά. Καθένα αρχείο περιέχει µία ή περισσότερες δοκιµασµένες ρουτίνες. Πολλές φορές, οι ρουτίνες αυτές είναι και σε διαφορετικές γλώσσες, συνήθως συµβολική (assembly) και C. Μεταφράζεται ξεχωριστά το κάθε αρχείο και, στο τέλος, δηµιουργείται µε τη βοήθεια του linker το εκτελέσιµο αρχείο. Επειδή, λοιπόν, µία εφαρµογή περιέχει συνήθως πολλά αρχεία, το µvision δηµιουργεί ένα project για κάθε εφαρµογή και στο project αυτό εντάσσονται όλα τα αρχεία της σε οµάδες (groups). Ας δούµε πώς γίνεται αυτό. 1.2 ΗΜΙΟΥΡΓΙΑ PROJECT Για να δηµιουργήσετε ένα project, ακολουθήστε τα επόµενα βήµατα. 1) Επιλέξτε <Project> και µετά <New Project>

14 1. ΤΟ ΠΡΟΓΡΑΜΜΑ Εικόνα 1-1. ηµιουργία νέου project Εµφανίζεται το γνωστό σας παράθυρο για να επιλέξετε φάκελο και να πληκτρολογήσετε το όνοµα του αρχείου (project). ηµιουργήστε µέσα στο φάκελο My Documents (Τα Έγγραφά µου) έναν κατάλογο µε όνοµα «My1stProj» και δώστε όνοµα «My1stProject». Εικόνα 1-2. Πληκτρολόγηση ονόµατος project 2) Επιλέξτε τον <T89C51RD2> της <Temic>. 6 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

15 1. ΤΟ ΠΡΟΓΡΑΜΜΑ Εικόνα 1-3. Επιλογή µικροελεγκτή για το project Η αρχική οθόνη του προγράµµατος θα πρέπει να περιλαµβάνει τα παράθυρα που εµφανίζονται στην Εικόνα 1-4. Στην εικόνα αυτή σας υποδεικνύεται ο τρόπος εµφάνισης / απόκρυψης των παραθύρων. Εικόνα 1-4. Η αρχική οθόνη του προγράµµατος µvision ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

16 1. ΤΟ ΠΡΟΓΡΑΜΜΑ 3) ώστε την επιθυµητή συχνότητα ρολογιού του µικροελεγκτή (Xtal 12 MHz) επιλέγοντας <Project> και <Options for Target Target1> (εικονίδιο ). Εικόνα 1-5. Επιλογή παραµέτρων στόχου (target options) Επίσης, στην καρτέλα Output ενεργοποιήστε το «Create HEX file». 4) ηµιουργήστε ένα νέο αρχείο κειµένου πατώντας το εικονίδιο <New file>. Ανοίγει ένα νέο παράθυρο για να γράψετε το πρόγραµµα. Εικόνα 1-6. ηµιουργία νέου αρχείου 8 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

17 1. ΤΟ ΠΡΟΓΡΑΜΜΑ 5) Επιλέξτε <File> και <Save as> ή κάντε κλικ στο εικονίδιο της δισκέτας. Ανοίγει το παράθυρο αποθήκευσης του αρχείου. Επιλέξτε ένα όνοµα της προτίµησής σας µε επέκταση «.Α51», π.χ. My1stProgram.A51. Η επέκταση Α51 βοηθά το πρόγραµµα να επιλέξει αυτόµατα το συµβολοµεταφραστή (assembler) για την παραγωγή του αντικειµενικού κώδικα. Εάν η επέκταση είναι διαφορετική, τότε θα πρέπει να δηλώσετε εσείς ότι η µετάφραση θα γίνει µε τον assembler. Μόλις γίνει αντιστοίχιση του αρχείου µε τον assembler, είτε µέσω της επέκτασης Α51 είτε από τις επιλογές του προγράµµατος, αλλάζουν χρώµα στο παράθυρο του προγράµµατος όλες οι λέξεις που αναγνωρίζει ο µεταφραστής (καταχωρηµένες λέξεις = reserved words). 6) Στη συνέχεια, πρέπει να δηλώσετε ότι το αρχείο My1stProgram.Α51 είναι µέλος του Source Group 1. Κάντε δεξί κλικ στο <Source Group 1> και στο παράθυρο που εµφανίζεται, επιλέξτε <Add Files to Group Source Group 1 >. Εικόνα 1-7. Ένταξη ενός πηγαίου αρχείου στο source group Στο παράθυρο Add Files to Group που θα εµφανιστεί, επιλέξτε <Files of type: Asm Source file> και το αρχείο <My1stProgram.A51>. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

18 1. ΤΟ ΠΡΟΓΡΑΜΜΑ Αυτό ήταν. Προσοχή µόνο στο εξής: Επειδή το σώσιµο γίνεται αυτόµατα, δεν υπάρχει επιλογή Save Project, ενώ υπάρχουν Open και Close Project. Αυτό είναι, όµως, επικίνδυνο να σας µπερδέψει: οτιδήποτε αρχεία ανοίγετε, το πρόγραµµα θεωρεί ότι θέλει να τα περιλάβετε στο project και θα τα ανοίγει κάθε φορά που ανοίγετε το project. Φυσικά, δε θα συµµετέχουν στην παραγωγή του κώδικα, αν δεν τα εντάξετε στο Source Group. 1.3 ΣΥΓΓΡΑΦΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Ακολουθώντας τη διαδικασία που ήδη περιγράφηκε στην προηγούµενη παράγραφο, µπορεί να δηµιουργηθεί ένα project, που να περιέχει ένα αρχείο. Τα ονόµατα που δίδονται είναι συνήθως τέτοια, που να θυµίζουν την εργασία που εκτελεί το πρόγραµµα. Μένει τώρα να περιγραφεί ο τρόπος που συντάσσεται ένα πρόγραµµα. εν είναι απαραίτητο, στην παρούσα φάση, να καταλάβετε τα προγράµµατα που ακολουθούν, αλλά να δείτε τις γενικές αρχές, που πρέπει να τηρούνται στη συγγραφή τους. Στην αρχή µπαίνει µία σύντοµη περιγραφή της εργασίας που εκτελείται. Μην παραλείπετε αυτήν την περιγραφή, θεωρώντας ότι είναι κάτι περιττό. Θα σας φανεί πολύτιµη µετά από καιρό, που θα χρειαστεί να αντλήσετε ιδέες ή να µεταφέρετε το πρόγραµµα για τη σύνθεση ενός άλλου µεγαλύτερου. Στη συνέχεια µπαίνει η οδηγία cseg at 0 προς τον assembler, για να δηλωθεί η αρχική διεύθυνση, όπου θα αρχίσει η τοποθέτηση του κώδικα που θα παραχθεί από το δικό σας πηγαίο πρόγραµµα. Μπορείτε να παραλείψετε τη δήλωση της αρχικής διεύθυνσης αν αυτή είναι 0, αλλά καλό θα είναι να τη γράφετε πάντοτε. Είναι πολύ χρήσιµο να σχολιάζετε τα προγράµµατά σας, έτσι ώστε να φαίνεται το σκεπτικό σας κατά τη σύνταξη, αλλά και κατά την επιλογή των συγκεκριµένων εντολών. Αν µπορείτε, ίσως, να παραλείψετε τα αρχικά σχόλια, σε κάποια προγράµµατα που εκτελούν προφανή εργασία, δεν µπορείτε να παραλείψετε το σχολιασµό του σκεπτικού σας και των εντολών. Είναι αδύνατο να διορθώσετε τα λάθη ενός ασχολίαστου προγράµµατος µετά από λίγο καιρό 10 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

19 1. ΤΟ ΠΡΟΓΡΑΜΜΑ από τη συγγραφή του. Προσέξτε όµως: δε θεωρείται σχολιασµός η επεξήγηση της λειτουργίας µιας εντολής, π.χ. MOV A,#13 ;φορτώνω στο συσσωρευτή τον αριθµό 13 Στο σχολιασµό της εντολής εξηγούµε το γιατί υπάρχει η εντολή και όχι τι δουλειά κάνει. Π.χ. MOV A,#13 ;13 είναι ο ASCII κωδικός για την αλλαγή γραµµής Τέλος, η οδηγία end δηλώνει στον assembler να σταµατήσει τη µετάφραση. Η οδηγία end απευθύνεται στον assembler και δεν είναι εντολή προς τη CPU για να σταµατήσει την εκτέλεση του προγράµµατος. Στη συνέχεια φαίνεται ένα τυπικό πρόγραµµα. ;Αρχείο My_First_Program.Α51 ; ; ;My1stProgram είναι ένα δοκιµαστικό πρόγραµµα. Προσθέ-; ;τει τους αριθµούς 12 & 34. Φυλάει το αποτέλεσµα στη ; ;θέση 30h. ; ; ; cseg at 0 HALT: MOV A,#12 ;Βάλε στον Α τον πρώτο αριθµό ADD A,#34 ;Πρόσθεσε στον Α τον δεύτερο αριθµό MOV 30h,A ;Φύλαξε το αποτέλεσµα στη θέση 30h JMP HALT end Πρόγραµµα 1-1. Τυπική δοµή ενός προγράµµατος. Εάν δε βλέπετε ελληνικούς χαρακτήρες στο παράθυρο των αρχείων assembly, επιλέξτε <View> <Options> <Colors & Fonts> <Editor Asm Files> <default text> <Courier New>. Προσέξτε το τέλος του προγράµµατος: είναι ένας ατέλειωτος βρόχος HALT: JMP HALT. Τα προγράµµατα του προσωπικού µας υπολογιστή εκτελούνται και εποπτεύονται από το λειτουργικό σύστηµα. Εκεί, τέλος του προγράµµατος σηµαίνει επιστροφή στο λειτουργικό σύστηµα. Όµως, ένα ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

20 1. ΤΟ ΠΡΟΓΡΑΜΜΑ πρόγραµµα που γράφεται για τον 8051 είναι προορισµένο να µπει στη ROM και να εκτελείται συνεχώς (embedded). Στα προγράµµατα της assembly δεν υφίσταται η έννοια «τέλος του προγράµµατος». Θυµίζουµε ότι το end που βάζουµε στο τέλος των προγραµµάτων µας είναι οδηγία προς το µεταφραστή να σταµατήσει τη µετάφραση. 1.4 ΜΕΤΑΦΡΑΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Το πρόγραµµα που γράφετε σε µορφή κειµένου λέγεται πηγαίο πρόγραµµα (source program) ή συµβολικό πρόγραµµα (assembly program). Το πρόγραµµα αυτό είναι κατανοητό από εσάς, όχι όµως από τον υπολογιστή. Για να µπορέσει να εκτελεστεί από τη CPU, πρέπει να µεταφραστεί στη «γλώσσα» της, δηλαδή στο δυαδικό σύστηµα. Τη µετάφραση αυτή αναλαµβάνει ο συµβολοµεταφραστής (assembler), και παράγεται ο αντικειµενικός κώδικας (object code) ή εκτελέσιµος κώδικας (executable code). MOV A,#12 MOV B,#0CEh MUL AB 74 0C 75 F0 CE A4 Πηγαίο πρόγραµµα (Source program) Αντικειµενικός κώδικας (Object code) Files>. Σχήµα 1-1. Συµβολοµεταφραστής (assembler) Για να παραχθεί ο κώδικας, κάντε κλικ στο εικονίδιο <Rebuild All Target 12 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

21 1. ΤΟ ΠΡΟΓΡΑΜΜΑ Εικόνα 1-8. Μετάφραση του πηγαίου αρχείου Προσέχετε στο Παράθυρο Εξόδου (Output Window), µήπως εµφανιστεί κάποιο µήνυµα λάθους. Στην περίπτωση αυτή δεν παράγεται κώδικας. Πρέπει να διορθώσετε το λάθος και να ξαναµεταφράσετε (βλ. Εικόνα 1-9). Εικόνα 1-9. Το παράθυρο εξόδου Output window Σε περίπτωση που ο συµβολοµεταφραστής συναντήσει συντακτικό λάθος, εµφανίζεται στο Output Window η περιγραφή του λάθους. Κάνοντας διπλό κλικ στην περιγραφή αυτή, τοποθετείται ο δροµέας (cursor) αυτόµατα στη γραµµή του πηγαίου προγράµµατος που περιέχει το λάθος, αν βέβαια αυτό είναι συντακτικό. Μπορείτε να δείτε τον παραγόµενο κώδικα, στο αρχείο My1stProgram.lst, επιλέγοντας <File> <Open> <Files of type: Listing> <My1stProgram.LST>. Τα αρχεία που χειρίζεται το µvision είναι: 1).a51 Πηγαίο αρχείο µε το κείµενο του προγράµµατος που γράφει ο χρήστης. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

22 1. ΤΟ ΠΡΟΓΡΑΜΜΑ 2).lst Αρχείο λίστας (κείµενο) που περιέχει το αποτέλεσµα της µετάφρασης: πηγαίο πρόγραµµα, κώδικας, διευθύνσεις και λάθη. 3).bin Ο εκτελέσιµος κώδικας σε δυαδική µορφή. Παράγεται µε ξεχωριστό πρόγραµµα µετατροπής που διαβάζει το hex (ΗΕΧ2ΒΙΝ.ΕΧΕ). 4).obj Ο κώδικας σε δυαδική µορφή µαζί µε τις διευθύνσεις που πρέπει να τοποθετηθεί και πληροφορίες εκσφαλµάτωσης. 5).hex Ο κώδικας σε ASCII µορφή, µαζί µε τις διευθύνσεις που πρέπει να τοποθετηθεί, σε Intel hex format. 6) (omf) Ο κώδικας σε δυαδική µορφή µαζί µε πληροφορίες εκσφαλµάτωσης. Χωρίς επέκταση ονόµατος, object metafile format. Είναι µία µορφή obj µε περισσότερες δυνατότητες. 7).m51 map file ή αρχείο χαρτογράφησης που δείχνει τη θέση των τµηµάτων µνήµης. Σηµειώστε τη χρήση των όρων πρόγραµµα και κώδικας στην παράγραφο αυτή: το πρόγραµµα περιέχει λέξεις (πηγαίο), ενώ ο κώδικας δεν µπορεί να διαβαστεί από εµάς. Πρόβληµα 1.1 Με βάση το προηγούµενο πρόγραµµα γράψτε ένα πρόγραµµα που να προσθέτει τους αριθµούς κωδ1 και κωδ2. α) Ανοίξτε τα αρχεία που δηµιουργούνται κατά τη µετάφραση και καταγράψτε και εξετάστε τα περιεχόµενά τους. β) Να βρεθεί ο κώδικας µηχανής (κωδικός λειτουργίας και αντικείµενο) και η διεύθυνση της εντολής MOV 30h,A. 1.5 Ο εκσφαλµατωτής (debugger) Είναι το κοµµάτι του µvision που εκτελεί το πρόγραµµά σας στο PC, σε προσοµοιωτή του Χρησιµοποιείται για έναν αρχικό έλεγχο των προγραµµάτων. Εσείς, στο µεγαλύτερο µέρος του βιβλίου, θα εργάζεστε µόνο στον debugger. 14 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

23 1. ΤΟ ΠΡΟΓΡΑΜΜΑ Καλείται από το εικονίδιο Start /Stop Debug Session ( ). Ανάλογα µε την ανάλυση της οθόνης σας και µε τις προηγούµενες ρυθµίσεις που έχουν γίνει στο πρόγραµµα, εµφανίζονται µερικά ή όλα από τα παράθυρα που φαίνονται στην Εικόνα Εικόνα Η αρχική οθόνη του debugger Πιέζοντας το εικονίδιο Step into ( ), εκτελούµε το πρόγραµµα που µεταφράσαµε εντολή προς εντολή, ενώ παρακολουθούµε τα περιεχόµενα των καταχωρητών (Registers) και της µνήµης (Memory #1) στα αντίστοιχα παράθυρα. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

24 1. ΤΟ ΠΡΟΓΡΑΜΜΑ Πρόβληµα 1.2 Το επόµενο πρόγραµµα γράφει στη θέση µνήµης 30h τo άθροισµα των αριθ- µών κωδ1 και κωδ2. Γράψτε, µεταφράστε, εκτελέστε το πρόγραµµα και καταγράψτε τις ενέργειές του για να επαληθεύσετε τη λειτουργία του. ;Πρόγραµµα για τη δοκιµή του assembler και του debugger. ;Γράφει στη θέση µνήµης 30h το άθροισµα 30h+8Ch cseg at 0 MOV A,#κωδ1 ADD A,#κωδ2 MOV 30h,A HALT: JMP HALT ;Πάρε τον πρώτο αριθµό (# = αριθµός) ;Πρόσθεσε το δεύτερο ;Βάλε το αποτέλεσµα στη θέση µνήµης 30h ; (χωρίς # = θέση µνήµης) ;Αέναος βρόχος (κάτι πρέπει να κάνει η CPU) end ;Τέλος της µετάφρασης Για να δείτε τα περιεχόµενα της µνήµης του προσοµοιωτή δώστε τη διεύθυνση d:0 και µεγαλώστε το παράθυρο της µνήµης ώστε να εµφανιστεί η θέση 30h. Για να τρέξετε δεύτερη φορά ένα πρόγραµµα, πατήστε πρώτα το µπουτόν reset ώστε να µηδενιστεί ο απαριθµητής προγράµµατος. 16 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

25 2 Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ Στην αρχιτεκτονική von Neuman η CPU αναφέρεται σε ένα συνεχόµενο χώρο διευθύνσεων. Το χώρο αυτό µοιράζονται πρόγραµµα και δεδοµένα. Στην αρχιτεκτονική Harvard υπάρχουν ξεχωριστοί χώροι διευθύνσεων για το πρόγραµµα και τα δεδοµένα. Οι διευθύνσεις είναι οι ίδιες για τους δύο αυτούς χώρους και η επιλογή µεταξύ αυτών γίνεται ανάλογα µε τον τρόπο προσπέλασης ή την εντολή που χρησιµοποιεί η CPU. Ο 8051 ανήκει στην κατηγορία αυτή. Για την επιλογή µεταξύ µνήµης προγράµµατος (ROM) και µνήµης δεδοµένων (RAM) ο 8051 διαθέτει τρεις ακροδέκτες. Ο!PSEN (Not Program Storage Enable) ενεργοποιείται για την επιλογή της ROM ενώ οι!rd (Not Read) και!wr (Not Write) για την επιλογή της RAM. Με κατάλληλο συνδυασµό των ακροδεκτών!psen και!rd (λογικό AND), o 8051 µπορεί να µετατραπεί από αρχιτεκτονική Harvard σε von Neuman. Τα είδη µνήµης που µπορεί να χρησιµοποιήσει ο προγραµµατιστής για να αποθηκεύσει δεδοµένα και διευθύνσεις (µνήµη γενικής χρήσης) είναι: 1. Οι καταχωρητές Α, Β, DPTR και οι καταχωρητές οµάδας R0 R7 είναι η γρηγορότερη µνήµη επειδή η αναφορά σε αυτούς γίνεται µε το όνοµά τους και δεν απαιτείται διεύθυνση. 2. Απευθείας RAM µε µέγεθος 128 bytes (διευθύνσεις 00h 7Fh) στην εσωτερική µνήµη RAM. 3. Έµµεση RAM µε µέγεθος 128 bytes (διευθύνσεις 80h...0FFh) στην εσωτερική µνήµη RAM. 4. Εξωτερική RAM µε µέγεθος από 1 µέχρι 64 KBytes. Είναι η πιο αργή µνήµη επειδή η προσπέλασή της γίνεται µόνον µέσω του ειδικού καταχωρητή δείκτη (DPTR). Εσωτερικά, τα περισσότερα εξαρτήµατα µε βάση τον 8051, διαθέτουν µνήµη RAM και ROM. Στη RAM αποθηκεύονται και ανακαλούνται δεδοµένα ενώ από τη ROM ανακαλείται το προς εκτέλεση πρόγραµµα και οι σταθερές του προγράµµατος. Εάν η χωρητικότητα των µνηµών αυτών δεν επαρκεί, κάτι απίθανο στα τελευταία µοντέλα, τότε πρέπει να συνδεθεί εξωτερική ROM και

26 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ / ή RAM. Στο επόµενο σχήµα φαίνεται ο τρόπος µε τον οποίο συνδέονται εξωτερικές µνήµες ROM (προγράµµατος) και RAM (δεδοµένων) στον C2 C1 DATA BUS Vcc 33p X1 12MHz + SW1 33p C3 1u EA/VP X1 X2 RESET INT0 INT1 T0 T1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 U P P P P P P P P P P P P P P P P RD 17 WR 16 PSEN 29 ALE/P 30 TXD 11 RXD 10 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 A8 A9 A10 A11 A12 A13 A14 A15 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 ALE ADDRESS LATCH 2 D1 Q D2 Q D3 Q D4 Q D5 Q D6 Q D7 Q D8 Q8 12 U HC573 C 1 OC ADDRESS BUS!PSEN A0 A1 A2 A3 A4 A5 A6 A7!WR!RD VCC A15 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 CS1 CS2 WE OE A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 CE OE PGM VPP RAM ROM U U D0 11 D1 12 D2 13 D3 15 D4 16 D5 17 D6 18 D7 19 O0 11 O1 12 O2 13 O3 15 O4 16 O5 17 O6 18 O7 19 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 Σχήµα 2-1. ιασύνδεση εξωτερικών µνηµών ROM και RAM στον 8051 Για να ανακαλεί ο 8051 εντολές από εξωτερική µνήµη προγράµµατος, πρέπει ή να µην είναι εφοδιασµένος µε εσωτερική ROM ή να είναι γειωµένος ο ακροδέκτης!εα (not External Address). Ανεξάρτητα από την κατάσταση του ακροδέκτη!εα, αν ο 8051 ανακαλέσει εντολή από διεύθυνση που δεν υπάρχει στην ενσωµατωµένη ROM, τότε την ανακαλεί από την εξωτερική. Όταν χρησιµοποιείται εξωτερική µνήµη, οι θύρες Ρ0 και Ρ2 χρησιµοποιούνται ως διάδροµοι δεδοµένων και διευθύνσεων και δεν µπορούν να χρησιµοποιηθούν ως θύρες. Η θύρα Ρ2 εκπέµπει το byte υψηλής τάξης της διεύθυνσης. Η θύρα Ρ0 χρησιµοποιείται σε πολύπλεξη, είτε για να εκπέµπει το byte χαµηλής τάξης της διεύθυνσης, είτε για να στέλνει δέχεται δεδοµένα. Εάν το σήµα!ale είναι ενεργό, η Ρ0 εκπέµπει το byte χαµηλής τάξης της διεύθυνσης και το latch U4 (74HC573) κρατά αυτό το byte. 18 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

27 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ Η διάκριση µεταξύ ROM και RAM γίνεται µε τον εξής τρόπο. Όταν το σήµα!psen (not Program Storage Enable) είναι ενεργό, ο 8051 διαβάζει εντολή από τη ROM. Όταν το σήµα!rd είναι ενεργό, διαβάζει δεδοµένα. Τέλος, όταν το σήµα!wr είναι ενεργό, γράφει δεδοµένα. Είναι, λοιπόν, προφανές ότι το σήµα!psen ενεργοποιεί τη ROM ενώ τα σήµατα!rd και!wr ενεργοποιούν την ανάγνωση και την εγγραφή, αντίστοιχα, στη RAM. Η ενεργοποίηση των σηµάτων!rd και!wr γίνεται αυτόµατα, ανάλογα µε το είδος της εντολής που εκτελείται. Έτσι, κατά την εκτέλεση της εντολής ανάγνωσης MOV A,10 ενεργοποιείται το σήµα!rd, ενώ κατά την εκτέλεση της εντολής εγγραφής MOV 10,A ενεργοποιείται το σήµα!wr. Είναι γνωστό ότι από τη µνήµη ROM η CPU µόνο διαβάζει εντολές. Η εγγραφή γίνεται µε ειδικές συσκευές ή ειδικές διαδικασίες. Στον debugger γίνεται προσοµοίωση της µνήµης ROM και, εποµένως, το πρόγραµµα «εγγράφεται» χωρίς ιδιαίτερο πρόβληµα. 2.1 Η οργάνωση µνήµης του 8051 Ο 8051 µπορεί να κάνει προσπέλαση σε εσωτερική και εξωτερική µνήµη ROM και RAM. Ο τρόπος διευθυνσιοδότησης και η διεύθυνση προσδιορίζουν το είδος και τη θέση της µνήµης όπου θα γίνει προσπέλαση. Η φυσική µνήµη που µπορεί να προσπελάσει ο 8051 φαίνεται στο Σχήµα 2-2. ιακρίνουµε ότι η φυσική µνήµη χωρίζεται σε τέσσερα τµήµατα. Η επιλογή ενός από τα τµήµατα αυτά γίνεται αυτόµατα από τον µικροελεγκτή ανάλογα µε το είδος της εργασίας που εκτελείται. Η χρήση των τµηµάτων είναι η εξής. 1. Εσωτερική RAM: το µέγεθός της είναι 128 ή 256 bytes ανάλογα µε το µοντέλο. Παρατηρήστε ότι, αν το µέγεθός της είναι 256 bytes, το επάνω µισό της έχει τις ίδιες διευθύνσεις µε το τµήµα SFR. 2. SFR: καταχωρητές ειδικών λειτουργιών (Special Function Registers) για τη ρύθµιση του τρόπου µε τον οποίο θα εργάζεται ο µικροελεγκτής. Κάποιες θέσεις είναι κενές για µελλοντικές επεκτάσεις και δεν πρέπει να χρησιµοποιούνται. Οι καταχωρητές SFR θα περιγραφούν στα ση- µεία στα οποία θα χρησιµοποιηθούν για πρώτη φορά. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

28 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ Σχήµα 2-2. Οργάνωση µνήµης του Εξωτερική RAM (1-8 KBytes): η χρήση της είναι προαιρετική και προστίθεται µόνον όταν η εσωτερική RAM του µικροελεγκτή δεν επαρκεί. Η προσπέλασή της γίνεται µε ειδική εντολή (τη MOVX). 4. Εσωτερική ή εξωτερική ROM (8-64 KBytes): για την αποθήκευση του κώδικα. Η εγγραφή γίνεται µε ειδικές συσκευές (EPROM programmers) ή ειδικές διαδικασίες. Κάποια µοντέλα έχουν εσωτερική ROM και κάποια όχι, το δε µέγεθος ποικίλει από µοντέλο σε µοντέλο. Όταν τελειώσει η εσωτερική ROM, ο 8051 γυρνάει αυτόµατα στην εξωτερική. Είναι δυνατή η απενεργοποίηση της εσωτερικής ROM (γειώνοντας τον ακροδέκτη!εα) ώστε να αναφέρεται ο 8051 στην εξωτερική για όλες, ακόµη και τις χαµηλές, διευθύνσεις. Για το διάβασµα σταθερών από τη µνήµη του προγράµµατος (ROM) διατίθεται ιδιαίτερη εντολή (MOVC). 20 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

29 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ Πώς γίνεται διάκριση του κατάλληλου τµήµατος µνήµης αφού οι διευθύνσεις είναι ίδιες; - Η εκτέλεση προγράµµατος ή το διάβασµα σταθερών από την εσωτερική ROM γίνεται από ιδιαίτερους διάδροµους και, έτσι, δεν τίθεται θέµα διάκρισης. Για το διάβασµα από τη µνήµη προγράµµατος (εσωτερική ή εξωτερική) χρησιµοποιούµε την εντολή MOVC. - Όταν η CPU διαβάζει από την εξωτερική ROM (πρόγραµµα ή σταθερές), ενεργοποιεί τον ακροδέκτη!psen (Not Program Storage Enable). Η διάκριση εσωτερικής από εξωτερική ROM γίνεται ανάλογα µε τη διεύθυνση (εκτός αν είναι ενεργοποιηµένος ο ακροδέκτης!ea, οπότε επιλέγεται πάντοτε η εξωτερική ROM). - Στην προσπέλαση της RAM η διάκριση γίνεται ανάλογα µε το είδος της εντολής που εκτελεί ο χρήστης ή ανάλογα µε τον τρόπο διευθυνσιοδότησης της εντολής. Έτσι: για την εσωτερική RAM χρησιµοποιούµε τη MOV. o Η απευθείας προσπέλαση οδηγεί στους sfr ή στο κάτω µισό της εσωτερικής RAM. o Η έµµεση προσπέλαση οδηγεί πάντοτε στην εσωτερική RAM. για την εξωτερική RAM χρησιµοποιούµε την MOVX. Ο κανονικός 8051 έχει 128 bytes RAM, κάποια, όµως, παράγωγά του έχουν 256 bytes. Τα επί πλέον 128 bytes έχουν τις ίδιες διευθύνσεις µε τους SFR και η επιλογή µεταξύ SFR και άνω 128 bytes RAM γίνεται µε το χρησιµοποιούµενο τρόπο διευθυνσιοδότησης: ο απευθείας τρόπος οδηγεί στους SFR, ενώ ο έµµεσος στα πάνω 128 bytes της RAM (βλέπε Σχήµα 2-2). Περισσότερα για τους τρόπους διευθυνσιοδότησης, στην επόµενη εργαστηριακή ενότητα. Στη συνέχεια περιγράφονται αναλυτικά τα τέσσερα είδη µνήµης που µπορεί να προσπελάσει ο ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

30 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ Η εσωτερική µνήµη RAM Στο Σχήµα 2-3 παρατηρούµε τις διαθέσιµες θέσεις µνήµης γενικής χρήσης από 00h µέχρι 7Fh. Οι θέσεις µε διευθύνσεις από 20h µέχρι 2Fh έχουν µία δυνατότητα πολύ χρήσιµη σε ειδικές περιπτώσεις: είναι προσπελάσιµες κατά bit, δηλαδή µπορούµε µε κάποιες εντολές να αναφερθούµε σε ένα από τα bits των θέσεων αυτών. Οι 16 αυτές θέσεις µε προσπέλαση bit δίνουν 16x8=128 bits µε διευθύνσεις από 00h µέχρι 7Fh. Σηµειώστε, εδώ, ότι άλλα 128 bits µε διευθύνσεις από 80h µέχρι 0FFh βρίσκονται µέσα στους SFR. Στις θέσεις µνήµης από 00Η µέχρι 1FH µπορούµε να αναφερθούµε µε τη διεύθυνσή τους. Σχεδόν όλες οι εντολές, όµως, του 8051 µπορούν να αναφερθούν στις θέσεις αυτές πιο γρήγορα αν χρησιµοποιήσουµε τα συµβολικά ονόµατα R0 µέχρι R7. Τα οκτώ αυτά ονόµατα αναφέρονται στις οκτώ θέσεις µιας από τέσσερεις οµάδες (καταχωρητές οµάδας). Με ειδικό τρόπο, που θα περιγραφεί σε επόµενη εργαστηριακή άσκηση, αλλάζουµε ενεργή οµάδα. 22 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

31 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ Σχήµα 2-3. Λεπτοµερής χάρτης της εσωτ. µνήµης RAM (κάτω 128 bytes) Παρατηρήστε στο σχήµα ότι, µετά τη διεύθυνση 1Fh ακολουθεί η 20h και µετά την 2Fh, η 30h. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

32 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ Οι SFR (Καταχωρητές Ειδικών Λειτουργιών) (F8) - (F9) CH (FA) CCAP0H (FB) CCAP1H (FC) CCAP2H (FD) CCAP3H (FE) CCAP4H (FF) xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx (F0) B (F1) - (F2) - (F3) - (F4) - (F5) - (F6) - (F7) - (E8) - (E9) CL (EA) CCAP0L (EB) CCAP1L (EC) CCAP2L (ED) CCAP3L (EE) CCAP4L (EF) xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx (E0) ACC (E1) - (E2) - (E3) - (E4) - (E5) - (E6) - (E7) - (D8) CCON 00x00000 (D9) CMOD 00xxx000 (DA) CCAPM0 (DB) CCAPM1 (DC) CCAPM2 (DD) CCAPM3 (DE) CCAPM4 (DF) - x x x x x (D0) PSW (D1) - (D2) - (D3) - (D4) - (D5) - (D6) - (D7) - (C8) T2CON (C9) T2MOD (CA) RCAP2L (CB) RCAP2H (CC) TL (CD) T2H (CE) - (CF) xxxxxx (C0) - (C1) - (C2) - (C3) - (C4) - (C5) - (C6) - (C7) - (B8) IP x (B9)SADEN (BA) - (BB) - (BC) - (BD) - (BE) - (BF) - (B0) P (B1) - (B2) - (B3) - (B4) - (B5) - (B6) - (B7) IPH x (A8) IE (A9) ADDR (AA) - (AB) - (AC) - (AD) - (AE) - (AF) - (A0) P (A1) - (A2) - (A3) - (A4) - (A5) - (A6) - (A7) - (98) SCON (99) SBUF xxxxxxxx (9A) - (9B) - (9C) - (9D) - (9E) - (9F) - (90) P (91) - (92) - (93) - (94) - (95) - (96) - (97) - (88) TCON (89) TMOD (8A) TL0 (8B) TL1 (8C) TH0 (8D) TH1 (8E) - (8F) (80) P0 (81) SP (82) DPL (83) DPH (84) - (85) - (86) - (87) PCON xx0000 Πίνακας 2-1. Οι καταχωρητές SFR και οι τιµές reset του 80C51Fx. Οι 128 θέσεις µνήµης µε διευθύνσεις από 80h µέχρι FFh αντιστοιχούν σε ειδικούς καταχωρητές (Special Function Registers), όπως, για παράδειγµα, η διεύθυνση 0Α0h η οποία αντιστοιχεί στη θύρα Ρ2. Όλοι οι καταχωρητές της πρώτης στήλης µε διευθύνσεις 80h, 88h, 90h, 98h, 0A0h, 0A8h,,0F0h και 24 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

33 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ 0F8h είναι προσπελάσιµοι κατά bit µε διευθύνσεις των bits από 80h µέχρι FFh. Για παράδειγµα, η διεύθυνση bit 88h αντιστοιχεί στο bit 0 του TCON. Τους καταχωρητές της πρώτης στήλης θα πρέπει να τους αποµνηµονεύσετε. ACC: Accumulator = Συσσωρευτής B: Καταχωρητής Β, κυρίως για πράξεις πολλαπλασιασµού και διαίρεσης. PSW: Processor Status register = Καταχωρητής κατάστασης ή σηµαιών. P0, P1, P2, P3: Θύρες Εισόδου-Εξόδου. IE: Interrupt Enable register = Καταχωρητής Ενεργοποίησης ιακοπών IP: Interrupt Priority register = Καταχωρητής Προτεραιότητας ιακοπών TCON: Καταχωρητής ελέγχου των χρονιστών 0 και 1. T2CON: Καταχωρητής ελέγχου του χρονιστή 2. CCON: Καταχωρητής ελέγχου του µετρητή PCA. SCON: Καταχωρητής ελέγχου της σειριακής θύρας. 0C0H, 0E8H, 0F8H, : κενές θέσεις, δεν πρέπει να χρησιµοποιούνται. Οι 16 αυτοί καταχωρητές µαζί µε τους 16 καταχωρητές των διευθύνσεων από 20h µέχρι 2Fh (βλέπε Σχήµα 2-3) αποτελούν το σετ καταχωρητών µε δυνατότητα προσπέλασης bit. Σε κάποιες διευθύνσεις, όπως η 84h, δεν αντιστοιχεί κανείς SFR. Σε αυτές τις διευθύνσεις δεν πρέπει να γράφουµε γιατί µπορεί να προκύψουν απρόσµενα αποτελέσµατα. Για να διαβάσουµε ή να γράψουµε στους SFR πρέπει να χρησιµοποιούµε µόνο απευθείας διευθυνσιοδότηση. Με έµµεση διευθυνσιοδότηση οδηγούµαστε στο πάνω µισό της εσωτερικής RAM. Περισσότερα για τους τρόπους διευθυνσιοδότησης στην επόµενη εργαστηριακή άσκηση. Παράδειγµα: Η εντολή MOV 90h,#55h γράφει στη θύρα Ρ1 µε διεύθυνση 90h τον αριθµό 55, ενώ οι εντολές MOV R0,#90h (@R0 σηµαίνει η διεύθυνση µνήµης που περιέχεται στον καταχωρητή R0) γράφουν στην εσωτερική RAM στη διεύθυνση 90h. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

34 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ Η εξωτερική RAM Είναι ξεχωριστό ολοκληρωµένο κύκλωµα µε διευθύνσεις που αρχίζουν και πάλι από το 0, αλλά αυτήν την φορά είναι των 16 bits. Ο 8051 δεν µπορεί να προσπελάσει µε άλλο τρόπο την εξωτερική µνήµη παρά µόνο µε έµµεσο, είτε µε διεύθυνση των 8 bits είτε µε διεύθυνση των 16 bits. Ο πιο συνηθισµένος τρόπος είναι ο δεύτερος. Για την προσπέλαση της εξωτερικής RAM µε διεύθυνση των 16 bits χρησιµοποιείται ο καταχωρητής ειδικής λειτουργίας DPTR (Data Pointer, SFR 82H και 83H) στον οποίο φορτώνεται η επιθυµητή διεύθυνση. Κατά το διάβασµα, το περιεχόµενο πηγαίνει στον συσσωρευτή Α, ενώ κατά το γράψιµο το περιεχόµενο γράφεται από τον Α στη µνήµη. Η εντολή για ανάγνωση είναι MOVX A,@DPTR, ενώ για εγγραφή Παράδειγµα: Οι παρακάτω εντολές γράφουν στην εξωτερική RAM µε διεύθυνση 7000h τον αριθµό 5Ah: MOV DPTR,#7000h MOV A,#5Ah (@DPTR είναι η διεύθυνση µνήµης που δείχνει ο DPTR) Η µνήµη ROM ή µνήµη προγράµµατος Μπορεί να περιέχεται εξ ολοκλήρου µέσα στον 8051, να είναι εξωτερικό ολοκληρωµένο κύκλωµα ή να είναι ένα αρχικό τµήµα της µέσα στον 8051 και το υπόλοιπο σε εξωτερικό ολοκληρωµένο. Η επιλογή της ROM γίνεται αυτό- µατα στη φάση της ανάκλησης (fetch) της εντολής, άρα το πρόγραµµα που πρόκειται να εκτελεστεί πρέπει να φυλάγεται στη ROM. Εάν σε κάποιον ελεγκτή µε 8051 επαρκεί η εσωτερική ROM του µικροελεγκτή, είναι διαθέσιµες και οι τέσσερις θύρες εισόδου / εξόδου Ρ0 Ρ3. Εάν χρειαστεί και εξωτερική ROM, οι θύρες Ρ0 και Ρ2 χρησιµοποιούνται ως διάδροµοι διευθύνσεων και δεδοµένων µε πολύπλεξη. Από τις ίδιες θύρες εξάγονται οι γραµµές διευθύνσεων και δεδοµένων για την προσπέλαση και της εξωτερικής µνήµης RAM. Είναι γνωστό ότι από τη ROM η CPU µπορεί µόνο να διαβάσει. Η εγγραφή του προγράµµατος στη ROM γίνεται µε ειδικές συσκευές ή ειδικές διαδικασίες. Όταν λέµε µνήµη µόνο ανάγνωσης εννοούµε ότι η CPU δεν 26 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

35 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ µπορεί να γράψει στη ROM µε τον κανονικό κύκλο εγγραφής της µνήµης. Οι µνήµες flash ROM γράφονται από τη CPU αλλά µε ειδικές ρουτίνες και µε σχετικά µεγάλη καθυστέρηση. Εντολή εγγραφής στη ROM δεν υπάρχει στο ρεπερτόριο των CPU. Ο debugger κάνει προσοµοίωση της ROM και, έτσι, η εγγραφή ανάγεται σε φόρτωµα του προγράµµατος στη µνήµη RAM του υπολογιστή. 2.2 Εµφάνιση / τροποποίηση των περιεχοµένων µνήµης Για να βλέπετε το εσωτερικό της µνήµης µέσα από τον debugger, δίνετε την εντολή d?:δ/νση. Εµφανίζονται τότε στο παράθυρο της µνήµης τα περιεχόµενά της. Στη θέση του? µπαίνει ένα από τα γράµµατα C, D, I, X, B ή P όπως δείχνει ο Πίνακας 2-2. C Code memory = µνήµη προγράµµατος D Direct addressable internal RAM = Εσωτερική απευθείας προσπελάσιµη µνήµη RAM I Indirect addressable internal RAM = Εσωτερική έµµεσα προσπελάσιµη µνήµη RAM X External memory = Εξωτερική µνήµη B Bit addressable RAM = Προσπελάσιµη κατά bit µνήµη RAM P Peripheral memory = Περιφερειακή µνήµη (ακροδέκτες θυρών εισόδου / εξόδου) Πίνακας 2-2. Προσδιορισµός του τύπου της µνήµης από τον debugger Πρόβληµα 2.1 Ανοίξτε τον debugger και δώστε στο παράθυρο Memory τη διεύθυνση D:0000h. Θα εµφανιστούν τα περιεχόµενα των θέσεων της απευθείας (Direct) προσπελάσιµης µνήµης (τα δύο αριστερά τµήµατα στο Σχήµα 2-2). Επαληθεύστε τις τιµές reset συγκρίνοντας µε αυτές που εµφανίζει ο Πίνακας 2-1. Για να τροποποιήσετε το περιεχόµενο µιας θέσης µνήµης κάντε δεξί κλικ στην παλιά τιµή και δώστε την καινούργια. Εναλλακτικά, από το παράθυρο Command µπορείτε να δώσετε τη διαταγή e?:δ/νση = τιµή, όπου? ένα από τα γράµµατα C, D, I, X, B ή P. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

36 2. Η ΟΡΓΑΝΩΣΗ ΜΝΗΜΗΣ ΚΑΙ ΟΙ ΤΡΟΠΟΙ ΠΡΟΣΠΕΛΑΣΗΣ Πρόβληµα 2.2 ώστε τη διαταγή e I:0010h=κωδ1, παρατηρήστε και εξηγήστε το αποτέλεσµά της. Για να αλλάξετε το περιεχόµενο ενός καταχωρητή δίνετε στο παράθυρο Command το όνοµα του καταχωρητή, το σύµβολο ίσον και τη νέα τιµή. Πρόβληµα 2.3 ώστε τις διαταγές Α=κωδ2, B=κωδ2+1, R0=κωδ2+2, R1=κωδ2+3 R7=κωδ2+9, DPTR= 8000h, SP=κωδ2+10, CY=1 και OV=1 και επαληθεύστε τα αποτελέσµατά τους στο παράθυρο Registers και στο παράθυρο Memory. Πρόβληµα 2.4 Φορτώστε το πρόγραµµα ΕΧ1_1 (σελ. 16) και επαληθεύστε τον κώδικα, όπως περιέχεται στη µνήµη, µε αυτόν που παρήγαγε ο µεταφραστής και περιέχεται στο αρχείο EX1_1.lst Πρόβληµα 2.5 Το επόµενο πρόγραµµα πολλαπλασιάζει τους αριθµούς κωδ1 και κωδ2. Γράφει το αποτέλεσµα στη θέση VAR1. Γράψτε, µεταφράστε και εκτελέστε το πρόγραµµα, επαληθεύοντας τη λειτουργία του. ;Πρόγραµµα πολλαπλασιασµού δύο σταθερών αριθµών ;Όνοµα: ; VAR1 equ 40h ; cseg at 0 MOV A,#κωδ1 ;Βάλε τον 1 ο αριθµό στον Α MOV B,#κωδ2 ;Βάλε τον 2 ο αριθµό στον Β MUL AB ;Πολλαπλασίασε Α επί Β MOV VAR1,B ;Φύλαξε το αποτέλεσµα, πρώτα το high byte MOV VAR1+1,A ;και µετά το low byte HALT: JMP HALT end 28 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

37 3 ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ 3.1 Τρόποι διευθυνσιοδότησης (addressing modes) ιευθυνσιοδότηση είναι ο προσδιορισµός από την εντολή της θέσης της πληροφορίας. Θέση της πληροφορίας είναι η θέση των δεδοµένων που πρόκειται να επεξεργαστούν από την εντολή και, επίσης, η θέση των αποτελεσµάτων της. Προσπέλαση είναι το διάβασµα ή γράψιµο µιας από αυτές τις θέσεις και αναφέρεται ξεχωριστά στην προέλευση των δεδοµένων και στη θέση των αποτελεσµάτων. Ο 8051 είναι εφοδιασµένος µε τους εξής τρόπους διευθυνσιοδότησης (ή τρόπους προσπέλασης) Άµεση ιευθυνσιοδότηση (Immediate addressing) Είναι ο πιο απλός τρόπος να προσδιοριστούν τα δεδοµένα της εντολής: συνοδεύουν τον κωδικό λειτουργίας της. Τα δεδοµένα είναι µέρος της εντολής. Τα άµεσα δεδοµένα δηλώνονται µε το σύµβολο #. Προσέξτε: αν παραλείψετε το #, η εντολή είναι πάλι σωστή, αλλά έχει άλλον τρόπο διευθυνσιοδότησης, τον απευθείας (βλέπε πιο κάτω). Παράδειγµα: MOV A,#12 σηµαίνει να γραφεί στον Α ο αριθµός 12 (0Ch). Η άµεση προσπέλαση αναφέρεται πάντοτε στην προέλευση των δεδοµένων. εν έχει νόηµα η εντολή MOV #12,A. Αντί των δεκαδικών σταθερών µπορεί να χρησιµοποιούνται και δεκαεξαδικές ή δυαδικές. Οι δεκαεξαδικές δηλώνονται µε 0x στην αρχή ή µε h στο τέλος. Και µε τη µία και µε την άλλη δήλωση δεν επιτρέπεται µία δεκαεξαδική σταθερά να αρχίζει από γράµµα. Σε ένα δεκαεξαδικό αριθµό που αρχίζει από γράµµα πρέπει να προσθέτετε στην αρχή το ψηφίο 0 αλλιώς θα πάρετε λάθος από το συµβολοµεταφραστή (π.χ. 0CC00h). Οι δυαδικοί αριθµοί δηλώνονται µε b στο τέλος (π.χ b)

38 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ Σχήµα 3-1. Άµεση ιευθυνσιοδότηση Εντολές µεταφοράς δεδοµένων µε άµεση διευθυνσιοδότηση Μερικές από τις εντολές που φορτώνουν στους καταχωρητές ή στη µνήµη µία σταθερά που δίνεται µαζί µε την εντολή είναι οι εξής (πλήρης λίστα των εντολών υπάρχει στο τέλος αυτής της άσκησης): MOV A,#12 ;Βάλε στον Α τη σταθερά 12 (συσσωρευτή άµεση) MOV R7,#12 ;Βάλε στον καταχωρητή R7 τη σταθερά 12 (καταχωρητή άµεση) MOV DPH,#12 ;Βάλε στο high byte του DPTR τη σταθερά 12 (απευθείας άµεση) MOV DPL,#34 ;Βάλε στο low byte του DPTR τη σταθερά 34 (απευθείας άµεση) MOV DPTR,#0CC00h ;Βάλε στον DPTR τη 16µπιτη σταθερά (εννοούµενη άµεση) ;Βάλε στη µνήµη που δείχνει ο R0 τη σταθερά 12 (έµµεση άµεση) MOV 12,#34 ;Βάλε στη µνήµη µε διεύθυνση 12 τη σταθερά 34 (απευθείας άµεση) Σταθερές: 0x ή h = 16δικό, b = δυαδικό, τίποτε = 10δικό Απευθείας ιευθυνσιοδότηση (Direct addressing) Τα δεδοµένα βρίσκονται στη µνήµη RAM και στην εντολή προσδιορίζεται η διεύθυνσή τους. Με τον τρόπο αυτό µπορεί να γίνει προσπέλαση στα κάτω 30 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

39 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ 128 bytes της RAM και στους SFR. Οι διευθύνσεις από (00h 7Fh) προσδιορίζουν το κάτω µισό της RAM ενώ οι διευθύνσεις από (80h FFh) προσδιορίζουν τους SFR. Οι διευθύνσεις από 00 µέχρι 07 αναφέρονται στους καταχωρητές της οµάδας 0 R0 µέχρι R7 αντίστοιχα (βλέπε Σχήµα 2-3, σελ. 23). Οι διευθύνσεις από 08h µέχρι 1Fh αναφέρονται στους καταχωρητές των υπόλοιπων οµάδων. Παρά το γεγονός ότι οι διευθύνσεις αυτές οδηγούν στους καταχωρητές, η χρήση των διευθύνσεων αντί των ονοµάτων των καταχωρητών δίνει µεγαλύτερες εντολές, δηλαδή µε περισσότερα bytes και, εποµένως, πιο αργές. Παράδειγµα: MOV A,12 σηµαίνει να τοποθετηθεί στον Α το περιεχόµενο της µνήµης µε διεύθυνση 12. Με απευθείας διευθυνσιοδότηση (direct addressing) κάνουµε προσπέλαση στα κάτω 128 bytes της εσωτερικής RAM και στους SFR. Σχήµα 3-2. Απευθείας διευθυνσιοδότηση ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

40 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ Εντολές µεταφοράς δεδοµένων απευθείας διευθυνσιοδότησης Μερικές από τις εντολές µεταφοράς δεδοµένων που δίνουν τη διεύθυνση του ενός δεδοµένου, είτε της προέλευσης είτε του προορισµού, είναι: MOV A,12 ;Βάλε στον Α το περιεχόµενο της θέσης µνήµης 12 (συσσωρευτή απευθείας) MOV 12,A ;Βάλε στη µνήµη στη θέση 12 το περιεχόµενο του Α (απευθείας συσσωρευτή) MOV R7,12 ;Βάλε στον R7 το περιεχόµενο της θέσης 12 (καταχωρητή απευθείας) MOV 12,R7 ;Βάλε στη θέση 12 το περιεχόµενο του καταχωρητή R7 (απευθείας καταχωρητή) XCH A,12 ;Αντάλλαξε το περιεχόµενο του Α µε αυτό της θέσης µνήµης 12 (συσσωρευτή απευθείας) MOV 12,34 ;Βάλε στη µνήµη στη θέση 12 το περιεχόµενο της θέσης 34 (απευθείας) PUSH 12 ;Βάλε στη στοίβα το περιεχόµενο της µνήµης µε διεύθυνση 12 (απευθείας) POP 12 ;Βγάλε από τη στοίβα και γράψε στη µνήµη στη διεύθυνση 12 (απευθείας) ιευθυνσιοδότηση Καταχωρητή (Register addressing) Στα προηγούµενα παραδείγµατα χρησιµοποιήθηκε ως αποδέκτης της πληροφορίας ο συσσωρευτής Α. Ο 8051 διαθέτει πολλές εντολές στις οποίες η προέλευση ή / και ο προορισµός των δεδοµένων είναι ένας από τους καταχωρητές Α και R0 µέχρι R7 της επιλεγµένης οµάδας καταχωρητών. Οι εντολές αυτές περιέχουν το όνοµα του καταχωρητή µέσα στον κωδικό λειτουργίας και είναι απλούστερες, δηλαδή δίνουν µικρότερο κώδικα και εκτελούνται ταχύτερα. Για παράδειγµα, η εντολή MOV A,Rn όπου n=0 7 είναι εντολή του ενός byte και δίνει τον εξής κώδικα: r r r 32 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

41 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ όπου r r r η διεύθυνση του καταχωρητή R0 µέχρι R7 από την ενεργή οµάδα καταχωρητών. Μόνο µία από τις τέσσερις οµάδες καταχωρητών µπορεί να είναι ενεργή σε κάθε χρονική στιγµή. Τα bits RS1 και RS0 στον καταχωρητή των σηµαιών PSW προσδιορίζουν την ενεργή οµάδα. Στο reset αποκτούν τιµή 00 και, έτσι, επιλέγεται η πρώτη οµάδα καταχωρητών. Μπορείτε να επιλέξετε ως ενεργή κάποια από τις τέσσερεις οµάδες (0 µέχρι 3) τροποποιώντας ανάλογα τα bits αυτά Εντολές µεταφοράς δεδοµένων µε διευθυνσιοδότηση καταχωρητή Μερικές από τις εντολές µεταφοράς δεδοµένων στις οποίες η προέλευση και / ή ο προορισµός των δεδοµένων είναι καταχωρητές, είναι: MOV A,R7 ;Βάλε στον Α το περιεχόµενο του R7 (συσσωρευτή καταχωρητή) MOV R7,A ;Βάλε στον R7 το περιεχόµενο του Α (καταχωρητή συσσωρευτή) XCH A,R7 ;Αντάλλαξε τα περιεχόµενα του Α και του R7 (συσσωρευτή καταχωρητή) Στον 8051, δεν υπάρχουν εντολές µε προσπέλαση καταχωρητή καταχωρητή. Μπορείτε, όµως, να χρησιµοποιείτε τη διεύθυνση του καταχωρητή (µε απευθείας προσπέλαση): MOV 0,R1 ή MOV R0,1 αντί για MOV R0,R1 που δεν υπάρχει. Το µειονέκτηµα, βέβαια, της µεθόδου αυτής είναι ότι προσδιορίζοντας τη διεύθυνση ενός καταχωρητή προσδιορίζεται αυτόµατα και η οµάδα του, κάτι που δεν γίνεται µε το όνοµα του καταχωρητή. Στην τελευταία περίπτωση εννοείται η ενεργή οµάδα καταχωρητών, όποια και να είναι αυτή Έµµεση διευθυνσιοδότηση (Indirect addressing) Με τον τρόπο αυτό γίνεται προσπέλαση στη µνήµη αλλά η διεύθυνσή της δε δίνεται από την εντολή. Η εντολή προσδιορίζει έναν καταχωρητή που περιέχει τη διεύθυνση του δεδοµένου. Οι καταχωρητές που µπορούν να περι- ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

42 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ έχουν έναν αριθµό τον οποίο οι εντολές αυτού του τύπου εκλαµβάνουν ως διεύθυνση είναι οι R0 και R1 (καθώς και οι DPTR και A σε κάποιες ειδικές εντολές). Χαρακτηριστικό σύµβολο αυτού του τρόπου διευθυνσιοδότησης είναι Έτσι, η εντολή: MOV A,@R0 σηµαίνει να φορτωθεί ο συσσωρευτής µε το περιεχόµενο της µνήµης της οποίας η διεύθυνση περιέχεται στον καταχωρητή R0 της ενεργής οµάδας καταχωρητών. είκτης στην εντολή αυτή µπορεί να είναι ο R0 ή ο R1. Σχήµα 3-3. Έµµεση διευθυνσιοδότηση Με την έµµεση διευθυνσιοδότηση µπορεί να γίνει προσπέλαση και στα 256 bytes της εσωτερικής µνήµης RAM. Ενώ οι διευθύνσεις από 0 µέχρι 127 οδηγούν στο κάτω µισό της RAM, όπως και µε την απευθείας διευθυνσιοδότηση, οι διευθύνσεις από 128 µέχρι 255 οδηγούν στο πάνω µισό της RAM, σε αντίθεση µε την απευθείας προσπέλαση που οδηγεί στους SFR. Οι εργασίες ανάγνωσης και εγγραφής στη στοίβα είναι µε έµµεση διευθυνσιοδότηση εφόσον η διεύθυνση της κορυφής της στοίβας περιέχεται στο δείκτη της στοίβας SP. Έτσι, το πάνω µισό της RAM µπορεί να χρησιµοποιηθεί ως χώρος για τη στοίβα. Περισσότερα γι αυτό αργότερα. 34 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

43 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ Ο αριθµός που εκλαµβάνεται ως διεύθυνση λέγεται δείκτης ή διάνυσµα δεδοµένων (data pointer ή data vector) Εντολές µεταφοράς δεδοµένων µε έµµεση διευθυνσιοδότηση Μερικές από τις εντολές µεταφοράς δεδοµένων µε έµµεση διευθυνσιοδότηση είναι: MOV ;Βάλε στον Α το περιεχόµενο της µνήµης που δείχνει ο R0 (συσσωρευτή έµµεση) ;Βάλε στη µνήµη που δείχνει ο R0 το περιεχόµενο του Α (έµµεση συσσωρευτή). ;Βάλε στη µνήµη που δείχνει ο R0 το περιεχόµενο της θέσης µνήµης 12 (έµµεση απευθείας) MOV ;Βάλε στη µνήµη µε δ/νση 12 το περιεχόµενο της µνήµης που δείχνει ο R0 (απευθείας έµµεση) XCH ;Αντάλλαξε τα περιεχ. του Α και της µνήµης που δείχνει ο R0 (συσσωρευτή έµµεση) XCHD ;Αντάλλαξε τα nibbles χαµηλής τάξης (low nibbles) του Α και της µνήµης που δείχνει ο R0 (συσσωρευτή έµµεση) Σηµείωση: nibble είναι το ένα από τα δύο µισά του ενός byte (π.χ. low nibble είναι τα bits 0, 1, 2 και 3) Εντολές µεταφοράς προς και από την εξωτ. µνήµη RAM Για να µπορεί να γίνει διάκριση µεταξύ εξωτερικής και εσωτερικής RAM, µια που οι διευθύνσεις είναι ίδιες, χρησιµοποιείται ιδιαίτερη εντολή, η MOVX. Όλες οι εντολές για την εξωτερική µνήµη είναι έµµεσης προσπέλασης. MOVX A,@R0 ;Βάλε στον Α το περιεχόµενο της εξωτ. µνήµης που δείχνει ο R0 (το high byte της δ/νσης παραµένει αναλλοίωτο) MOVX A,@DPTR ;Βάλε στον Α το περιεχόµενο της εξωτερικής µνήµης που δείχνει ο DPTR ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

44 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ ;Βάλε στην εξ. µνήµη που δείχνει ο R0 το περιεχόµενο του Α (το high byte της δ/νσης παραµένει αναλλοίωτο) ;Βάλε στην εξ. µνήµη που δείχνει ο DPTR το περιεχόµενο του Α. Ο πιο συνηθισµένος τρόπος για να γράψουµε στην εξωτερική RAM είναι να βάλουµε στον Α το επιθυµητό περιεχόµενο, στον DPTR τη διεύθυνση και να δώσουµε την εντολή MOVX: MOV A,#12 ;Βάλε τα δεδοµένα στον Α MOV DPTR,#0CC00h ;Βάλε τη διεύθυνση στον DPTR ;Γράψε στην εξωτερική µνήµη Εντολές ανάγνωσης δεδοµένων από τη µνήµη προγρ/τος Από τη µνήµη ROM ο 8051 µπορεί να εκτελεί κώδικα, αλλά για να διαβάσει δεδοµένα (π.χ. έναν πίνακα µε σταθερές), πρέπει να χρησιµοποιηθεί η εντολή MOVC. Η εντολή αυτή δέχεται µόνο έµµεση προσπέλαση. MOVC MOVC ;Βάλε στον Α από τη µνήµη προγράµµατος που δείχνει ;το άθροισµα του Α και του DPTR ; Βάλε στον Α από τη µνήµη προγράµµατος που δείχνει ;το άθροισµα του Α και του PC Να επιλυθούν τα επόµενα προβλήµατα γράφοντας κατάλληλο πρόγραµµα. Πρόβληµα 3.1 Αντιγράψτε το περιεχόµενο της θέσης κωδ1 της εσωτερικής µνήµης RAM στον καταχωρητή R4, χρησιµοποιώντας διευθυνσιοδότηση: α) καταχωρητή απευθείας β) απευθείας απευθείας γ) έµµεση στην κωδ1 δ) έµµεση στον R4 36 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

45 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ Πρόβληµα 3.2 Γράψτε τη σταθερά κωδ2 στις θέσεις µνήµης RAM από 20h µέχρι 23h, µε διευθυνσιοδότηση: (ο ίδιος τρόπος κάθε φορά και στις 4 θέσεις µνήµης) α) απευθείας άµεση β) απευθείας απευθείας γ) απευθείας καταχωρητή δ) έµµεση άµεση Πρόβληµα 3.3 Γράψτε στην εξωτερική µνήµη RAM στη διεύθυνση 0C000h τη σταθερά κωδ1 Πρόβληµα 3.4 Γράψτε τη σταθερά κωδ2 στη θέση 0Ε0h της εσωτερικής RAM. 3.2 Εντολές µεταφοράς δεδοµένων Παρά το γεγονός ότι οι εντολές αυτές αντιγράφουν δεδοµένα από µία θέση σε άλλη, έχει επικρατήσει ο όρος µεταφορά. Οι εντολές µεταφοράς δεδοµένων είναι οι MOV, MOVX, MOVC, XCH, PUSH και POP. Στο επόµενο σχήµα φαίνεται το είδος της µεταφοράς που εκτελεί η κάθε µία από αυτές τις εντολές. Μελετήστε προσεκτικά το σχήµα αυτό. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

46 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ Σχήµα 3-4. Οι εντολές µεταφοράς δεδοµένων του 8051 Οι εντολές µεταφοράς δεδοµένων δεν επηρεάζουν τις σηµαίες εκτός, βέβαια, αν ο προορισµός είναι ο PSW. Οι εντολές µεταφοράς δεδοµένων έχουν ήδη περιγραφεί στην προηγούµενη παράγραφο. Οι εντολές που εξετάστηκαν στην άσκηση αυτή είναι οι εξής. DATA TRANSFER ΜΕΤΑΦΟΡΑ Ε ΟΜΕΝΩΝ MNEMONIC Περιγραφή Byte Clock MOV A,Rn MOV A,direct MOV MOV A,#data MOV Rn,A MOV Rn,direct MOV Rn,#data MOV direct,a MOV direct,rn Move register to Accumulator Μετάφερε τον καταχωρητή στο συσσωρευτή 1 12 Move direct byte to Accumulator Μετάφερε το απευθείας byte στο συσσωρευτή Move indirect RAM to Accumulator Μετάφερε την έµµεση RAM στο συσσωρευτή Move immediate data to Accumulator Μετάφερε το άµεσο δεδοµένο στον συσσωρευτή Move Accumulator to register Μετάφερε το συσσωρευτή στον καταχωρητή Move direct byte to register Μετάφερε το απευθείας byte στον καταχωρητή Move immediate data to register Μετάφερε το άµεσο δεδοµένο στον καταχωρητή Move Accumulator to direct byte Μετάφερε το συσσωρευτή στο απευθείας byte Move register to direct byte Μετάφερε τον καταχωρητή στο απευθείας byte ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

47 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ MOV direct,direct MOV MOV direct,#data MOV DPTR,#data16 MOVC MOVC MOVX MOVX XCH A,Rn XCH A,direct XCH XCHD Move direct byte to direct Μετάφερε το απευθείας byte στο απευθείας byte Move indirect RAM to direct byte Μετάφερε την έµµεση RAM στο απευθείας byte Move immediate data to direct byte Μετάφερε το άµεσο δεδοµένο στο απευθείας byte Move Accumulator to indirect RAM Μετάφερε το συσσωρευτή στην έµµεση RAM Move direct byte to indirect RAM Μετάφερε το απευθείας byte στην έµµεση RAM Move immediate data to indirect RAM Μετάφερε το άµεσο δεδοµένο στην έµµεση RAM Load Data Pointer with a 16-bit constant Φόρτωσε τον δείκτη δεδ. µε τη σταθερά των 16 bits Move Code byte relative to DPTR to A Μετάφερε το byte του κώδικα (DPTR) στον Α Move Code byte relative to PC to A Μετάφερε το byte του κώδικα (PC) στον Α Move external RAM (8-bit addr) to A Μετάφερε από την εξ.ram (δ/νση 8 bits) στον Α Move external RAM (16-bit addr) to A Μετάφερε από την εξ.ram (δ/νση 16 bits) στον Α Move A to external RAM (8-bit addr) Μετάφερε τον Α στην εξωτ. RAM (δ/νση 8 bits) Move A to external RAM (16-bit addr) Μετάφερε τον Α στην εξωτ. RAM (δ/νση 16 bits) Exchange register with Accumulator Αντάλλαξε τον καταχωρητή µε το συσσωρευτή Exchange direct byte with Accumulator Αντάλλαξε το απευθείας byte µε το συσσωρευτή Exchange indirect RAM with Accumulator Αντάλλαξε την έµµεση RAM µε το συσσωρευτή Exchange low-order digit indirect RAM with A Αντάλλαξε τα low nibble της έµµεσης RAM και Α ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

48 3. ΤΡΟΠΟΙ ΙΕΥΘΥΝΣΙΟ ΟΤΗΣΗΣ ΕΝΤΟΛΕΣ ΜΕΤΑΦΟΡΑΣ Ε ΟΜΕΝΩΝ 40 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

49 4 ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ Ο 8051 είναι εφοδιασµένος µε τα απαραίτητα κυκλώµατα για την εκτέλεση πρόσθεσης και αφαίρεσης αριθµών του ενός byte, απροσήµαστων ή προση- µασµένων 1. Επίσης µπορεί και εκτελεί πολλαπλασιασµό και διαίρεση σε απροσήµαστους αριθµούς του 1 byte. Και οι τέσσερις αυτές πράξεις µπορούν να εκτελεστούν µόνο στο συσσωρευτή: - Βάζουµε τον πρώτο αριθµό στον Α. - Εκτελούµε την πράξη µεταξύ του Α και µιας θέσης µνήµης ή ενός καταχωρητή. Το αποτέλεσµα µένει στον Α. - Γράφουµε το περιεχόµενο του Α στη θέση όπου θέλουµε να φυλαχτεί το αποτέλεσµα. Ο πολλαπλασιασµός και η διαίρεση εκτελούνται µόνο µεταξύ του συσσωρευτή Α και του καταχωρητή Β. Ο 8051 µπορεί και προσθέτει και αφαιρεί αριθµούς: α) Καθαρά δυαδικούς. β) Προσηµασµένους κωδικοποιηµένους στο συµπλήρωµα ως προς 2. Τέλος, µπορεί και προσθέτει αριθµούς του κώδικα BCD. Υπενθυµίζουµε ότι στον κώδικα BCD δεν µετατρέπεται ολόκληρος ο αριθ- µός στο δυαδικό σύστηµα, αλλά ένα ένα τα ψηφία του µετατρέπονται σε 4 bits του δυαδικού. Για παράδειγµα, ο αριθµός 2005 στο δυαδικό σύστηµα γράφεται: = = 2005 Ο ίδιος αριθµός στον κώδικα BCD γράφεται: Στις σηµειώσεις αυτές χρησιµοποιείται ο όρος «απροσήµαστος» για να δηλώσει αριθµό του καθαρά δυαδικού συστήµατος (pure binary number) και ο όρος «προσηµασµένος» για να δηλώσει αριθµό του κώδικα του συµπληρώµατος ως προς

50 4. ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ Ο 8051 µπορεί επίσης να πολλαπλασιάζει και να διαιρεί αριθµούς, αλλά µόνο καθαρά δυαδικούς. Κάθε µία από τις πράξεις που προαναφέρθηκαν εκτελείται µε µία µόνο εντολή του Εννοείται, βέβαια, ότι µε συγγραφή του κατάλληλου προγράµµατος µπορούµε να κάνουµε οποιαδήποτε πράξη σε οτιδήποτε αριθ- µούς, ακόµη και του κώδικα κινητής υποδιαστολής. Οι εντολές για την πρόσθεση είναι οι ADD και ADDC (Add with Carry), για την αφαίρεση η SUBB (Subtract with Borrow), για τον πολλαπλασιασµό η MUL (Multiply) και για τη διαίρεση η DIV (Divide). Σχετικές µε την εκτέλεση των πράξεων είναι και οι εντολές CLR C (Clear Carry) και SETB C (Set Bit Carry) που κάνουν τη σηµαία του κρατούµενου αντίστοιχα 0 ή 1. Τέλος οι εντολές INC (Increment) για αύξηση κατά 1, DEC (Decrement) για µείωση κατά 1 και η DA A (Decimal Adjust after Addition) για δεκαδική ρύθµιση του συσσωρευτή µετά από πρόσθεση. 4.1 Πρόσθεση αριθµών του 1 byte Η πρόσθεση γίνεται µεταξύ του συσσωρευτή και µιας των εξής τριών προελεύσεων: - µια σταθερά (ADD A,#12) - το περιεχόµενο ενός καταχωρητή οµάδος (ADD A,R7) - το περιεχόµενο µιας θέσης µνήµης µε απευθείας ή έµµεση διευθυνσιοδότηση (ADD A,12 ή ADD A,@R0). Παραδείγµατα: Κάνοντας τις πράξεις µε το χέρι λέµε ότι οι δύο πρώτες πράξεις δεν βγάζουν κρατούµενο, δηλαδή το αποτέλεσµα χωρά στα 8 bits του Α. Η τρίτη 42 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

51 4. ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ και η τέταρτη πράξη βγάζουν τελικό κρατούµενο το οποίο είναι το ένατο bit του αποτελέσµατος. Κάνοντας τις πράξεις σε µία CPU των 8 bits λέµε ότι το αποτέλεσµα των δύο πρώτων πράξεων χωρά στα 8 bits ενώ δεν χωρά στον Α το αποτέλεσµα της τρίτης και τέταρτης πράξης. Το κρατούµενο φυλάγεται σε ένα F/F εφόσον δεν χωρά να ταξιδέψει στον οκτάµπιτο διάδροµο δεδοµένων. Το F/F αυτό λέγεται σηµαία κρατούµενου (Carry flag) και έχει πάντοτε τιµή, είτε 0 είτε 1. Έτσι, οι δύο πρώτες πράξεις δίνουν κρατούµενο 0 ενώ οι δύο τελευταίες δίνουν κρατούµενο 1. Εφόσον, τώρα, το αποτέλεσµα των 9 bits δεν χωρά στον Α, λέµε ότι το αποτέλεσµα είναι λάθος. Ένδειξη ότι συνέβη λάθος είναι η σηµαία του κρατούµενου: όταν είναι 0 το αποτέλεσµα είναι σωστό, όταν είναι 1 το αποτέλεσµα χρειάζεται εννέα bits για να παρασταθεί. Η σηµαία του κρατούµενου ενηµερώνεται σε κάθε πρόσθεση, χάνοντας το παλιό της περιεχόµενο. Μπορεί και ο χρήστης να τροποποιεί τη σηµαία του κρατούµενου µε τις εντολές SETB C για να την κάνει 1 και CLR C για να την κάνει 0. Θα δούµε πιο κάτω ότι αυτό χρειάζεται στην αφαίρεση. Εάν, τώρα, ερµηνεύσουµε τους αριθµούς στα προηγούµενα παραδείγ- µατα πρόσθεσης ως προσηµασµένους, θα ερµηνεύσουµε τα αποτελέσµατα διαφορετικά. Θυµόσαστε, ίσως, ότι το επί πλέον ψηφίο (η σηµαία του κρατούµενου) δεν σηµαίνει τίποτε αν οι αριθµοί είναι προσηµασµένοι. Αντίθετα, κριτήριο για την ορθότητα ή όχι του αποτελέσµατος είναι η αλλαγή πρόσηµου του αποτελέσµατος: αν δεν συνέβη αλλαγή, το αποτέλεσµα της πρόσθεσης των προσηµασµένων αριθµών είναι σωστό, ενώ, αν συνέβη, είναι λάθος. Να θυµηθούµε εδώ ότι δεν υπάρχει περίπτωση να πάρουµε λάθος αποτέλεσµα από την πρόσθεση ετερόσηµων αριθµών. Έτσι, σωστές, στα προηγούµενα παραδείγµατα, είναι η πρώτη και η τέταρτη πράξη. Λάθος η δεύτερη και η τρίτη. Για τον έλεγχο της ορθότητας του αποτελέσµατος οι επεξεργαστές διαθέτουν µία επί πλέον σηµαία, τη σηµαία υπερχείλισης (Overflow flag) η οποία ενηµερώνεται σε κάθε πρόσθεση. Αν OV=0, τότε το αποτέλεσµα της πρόσθεσης των προσηµασµένων αριθµών είναι σωστό, ενώ, αν OV=1, το αποτέλεσµα χρειάζεται 9 bits για να παρασταθεί. Η σηµαία της υπερχείλισης ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

52 4. ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ υπολογίζεται από το XOR µεταξύ του τελικού κρατούµενου που προκύπτει από την πρόσθεση των high bits (bit 7) και του αµέσως προηγούµενου κρατούµενου που προκύπτει από την πρόσθεση των bits 6. Θυµίζουµε ότι οι απροσήµαστοι αριθµοί που µπορούν να παρασταθούν σε 8 bits είναι από ενώ οι προσηµασµένοι από ΠΡΟΣΟΧΗ: Και στις δύο περιπτώσεις, και στην πρόσθεση, δηλαδή, των απροσήµαστων και στην πρόσθεση των προσηµασµένων αριθµών, όταν το αποτέλεσµα δεν χωρά να παρασταθεί σε 8 bits, λέµε ότι έχουµε υπερχείλιση. Μόνο που η υπερχείλιση των απροσήµαστων αριθµών ανιχνεύεται από τη σηµαία του κρατούµενου ενώ η υπερχείλιση των προσηµασµένων ανιχνεύεται από τη σηµαία της υπερχείλισης (µπέρδεµα;). Με άλλα λόγια, τη σηµαία του κρατούµενου την ελέγχουµε για να δούµε αν έχουµε υπερχείλιση στους απροσήµαστους αριθµούς ενώ τη σηµαία της υπερχείλισης την ελέγχουµε για να δούµε αν έχουµε υπερχείλιση στους προσηµασµένους αριθµούς. Πρόβληµα 4.1 Ερµηνεύνοντάς τους σαν προσηµασµένους, µετατρέψτε όλους τους 2δικούς αριθµούς των παραδειγµάτων της σελ. 42 στο 10δικό σύστηµα και επαληθεύστε ότι το αποτέλεσµα της 2ης και 3ης πρόσθεσης είναι έξω από τα όρια. Οι σηµαίες του κρατούµενου και της υπερχείλισης είναι και η µόνη διαφορά στο χειρισµό προσηµασµένων και απροσήµαστων αριθµών. Για το λόγο αυτό, εξάλλου, εγκαταλείφθηκε το συµπλήρωµα ως προς 1 και υιοθετήθηκε το συµπλήρωµα ως προς 2: τα ίδια κυκλώµατα που χειρίζονται τους απροσήµαστους αριθµούς µπορούν και χειρίζονται και τους προσηµασµένους. Σε κάθε πράξη η CPU ενηµερώνει και τις δύο σηµαίες, και τη σηµαία του κρατούµενου και τη σηµαία της υπερχείλισης. εν ενδιαφέρουν, όµως, και οι δύο σηµαίες ταυτόχρονα. Οι αριθµοί είναι είτε απροσήµαστοι, οπότε ελέγχουµε τη σηµαία του κρατούµενου, είτε προσηµασµένοι, οπότε ελέγχουµε τη σηµαία της υπερχείλισης. Για να εκτελέσει η CPU µία πρόσθεση, όπως ήδη αναφέρθηκε, πρέπει να χρησιµοποιηθεί ο συσσωρευτής. εν υπάρχει, δηλαδή, η εντολή: πρόσθεσε 44 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

53 4. ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ τον αριθµό α µε τον αριθµό β και φύλαξε το αποτέλεσµα στη θέση µνήµης γ. Για το λόγο αυτό πρέπει να γίνει πρόγραµµα µε το οποίο θα µεταφέρεται ο πρώτος αριθµός στον Α, θα προστίθεται εκεί ο δεύτερος αριθµός και, τέλος, θα µεταφέρεται το αποτέλεσµα από τον Α στην επιθυµητή θέση µνήµης. Πρόβληµα 4.2 Το επόµενο πρόγραµµα προσθέτει στο οποιοδήποτε περιεχόµενο της θέσης µνήµης κωδ2+27 τη σταθερά 64h. MOV A,κωδ2+27 ADD A,#64h MOV κωδ2+27,a οκιµάστε το πρόγραµµα τρέχοντάς το µερικές φορές και επαληθεύστε τη λειτουργία του. ηµιουργήστε έναν πίνακα µε στήλες α/α, Αποτέλεσµα, C και OV, σηµειώστε πώς µεταβάλλονται σε κάθε τρέξιµο οι σηµαίες και δικαιολογήστε και ερµηνεύστε τις παρατηρήσεις σας. Οι σηµαίες C (ή CY) και OV (ή V) βρίσκονται στον καταχωρητή κατάστασης PSW (Processor Status Word) µαζί µε άλλες των οποίων η σηµασία θα εξηγηθεί στα επόµενα. Bit C AC F0 RS1 RS0 OV F1 P ΣΥΜ- ΒΟΛΟ ΛΕΙΤΟΥΡΓΙΑ PSW.7 C Carry flag = Σηµαία κρατούµενου. PSW.6 AC Auxiliary Carry flag = Βοηθητική σηµαία κρατούµενου για πράξεις BCD. PSW.5 F0 Flag 0. Γενικής χρήσης, διαθέσιµη στο χρήστη. PSW.4 RS1 Bit 1 επιλογής οµάδας καταχωρητών. PSW.3 RS0 Bit 0 επιλογής οµάδας καταχωρητών. PSW.2 OV Overflow flag = Σηµαία υπερχείλισης. PSW.1 PSW.0 F1 P Flag 1. Γενικής χρήσης, διαθέσιµη στο χρήστη. Χρησιµοποιείται από τους compilers. Parity flag = Σηµαία άρτιας ισοτιµίας. Γίνεται 1/0 σε κάθε κύκλο εντολής για να δείξει περιττό / άρτιο πλήθος 1 στον Α. Πίνακας 4-1. Τα bits του καταχωρητή κατάστασης PSW (sfr d:0d0h) ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

54 4. ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ Για την παρατήρηση των σηµαιών στον debugger ανοίξτε στο παράθυρο registers τον καταχωρητή PSW. Πρόβληµα 4.3 Επαναλάβετε το προηγούµενο πρόβληµα, προσθέτοντας τη σταθερά 94h αντί της 64h. Πρόβληµα 4.4 Γράψτε ένα πρόγραµµα που να προσθέτει τα περιεχόµενα των 4 διαδοχικών θέσεων της εξωτερικής µνήµης RAM µε αρχική διεύθυνση την 8000h+κωδ1. Το αποτέλεσµα να µένει στον Α. Υπόδειξη: Α XRAM, A A+άθροισµα, άθροισµα Α 4.2 Πρόσθεση αριθµών 2 ή περισσότερων bytes Σε 2 bytes µπορούν να παρασταθούν οι απροσήµαστοι αριθµοί από 0 µέχρι και οι προσηµασµένοι από µέχρι Οι αριθµοί αυτοί φυλάγονται στη µνήµη, συνήθως µε το byte υψηλής τάξης στη χαµηλή διεύθυνση και το byte χαµηλής τάξης στην αµέσως µεγαλύτερη διεύθυνση. Για να βρούµε τα bytes χαµηλής και υψηλής τάξης ενός αριθµού τον µετατρέπουµε στο 16δικό ή στο δυαδικό σύστηµα και παίρνουµε το αριστερό µισό για high byte και το δεξί µισό για low. Από το 10δικό σύστηµα µπορούµε να διαιρέσουµε δια 256 και να πάρουµε το πηλίκο ως high byte και το υπόλοιπο ως low. Οι συµβολοµεταφραστές έχουν ειδική οδηγία (assembler directive) για να δίνουν το high και low byte, π.χ. high(label), low(1000). Για να προστεθούν αριθµοί των 2 bytes πρέπει να προστεθούν σε δύο «δόσεις» µια και ο 8051 δεν µπορεί να χειριστεί αριθµούς των 16 bits. Στην αρχή προστίθενται τα bytes χαµηλής τάξης των δύο αριθµών και, µετά, προστίθενται τα bytes υψηλής τάξης. Στην δεύτερη αυτή πρόσθεση πρέπει να προστεθούν όχι µόνο τα bytes υψηλής τάξης αλλά και το κρατούµενο από την πρόσθεση των bytes χαµηλής τάξης. Για την περίπτωση αυτή, ο 8051 διαθέτει ξεχωριστή εντολή, την ADDC. Η εντολή αυτή προσθέτει τρεις αριθµούς: - το περιεχόµενο του Α - το περιεχόµενο της προσδιοριζόµενης από την εντολή θέσης και - το κρατούµενο 46 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

55 4. ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ Για την πρόσθεση λοιπόν των low bytes χρησιµοποιείται η εντολή ADD ενώ για την πρόσθεση των high bytes η ADDC. 9A BC MOV A,#0BCh ADD A,#78h ;Πρόσθεση MOV R1,A R0 R1 MOV A,#9Ah ADDC A,#56h ;Πρόσθεση µε κρατούµενο MOV R0,A Πρόγραµµα 4-1. Ένα απλό πρόγραµµα πρόσθεσης Το προηγούµενο πρόγραµµα δεν εκτελεί χρήσιµη εργασία µια που η πρόσθεση σταθερών αριθµών δεν έχει νόηµα στον προγραµµατισµό. Το αποτέλεσµα είναι εκ των προτέρων γνωστό ότι θα είναι F134 (R0=F1, R1=34). Πρόβληµα 4.5 Με βάση το προηγούµενο πρόγραµµα, γράψτε ένα πρόγραµµα που να προσθέτει την 16µπιτη σταθερά κωδ1h. κωδ2h µε την κωδ2h. κωδ1h. Επαληθεύστε µετατρέποντας τους αριθµούς στο δεκαδικό σύστηµα. Εάν έχουµε αριθµούς πάνω από 2 bytes, δηλαδή απροσήµαστους µεγαλύτερους από ή προσηµασµένους έξω από την περιοχή , τους προσθέτουµε µε τον ίδιο τρόπο, δηλ. µε ADD τα bytes χαµηλής τάξης και ADDC τα bytes υψηλότερων τάξεων. Στην περίπτωση αυτή, ενδιαφέρουν οι σηµαίες µόνον από την πρόσθεση των high bytes. Πρόβληµα 4.6 Γράψτε ένα πρόγραµµα, που να προσθέτει στον αριθµό των 24 bits που περιέχεται στη µνήµη στις θέσεις 40h (high byte), 41h (medium byte) και 42h (low byte) τη σταθερά κωδ1x256+κωδ2. Τρέξτε το µερικές φορές, καταγράψτε, δικαιολογήστε και ερµηνεύστε τις σηµαίες κρατούµενου και υπερχείλισης. Επαναλάβετε µε τη σταθερά κωδ1x256+κωδ Αφαίρεση Για την αφαίρεση χρησιµοποιείται η εντολή SUBB. ιαβάζεται SUBtract with Borrow δηλαδή αφαίρεσε µε δανειζόµενο. Η ίδια σηµαία C, που χρησιµο- ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

56 4. ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ ποιείται ως κρατούµενο στην πρόσθεση, χρησιµοποιείται ως δανειζόµενο στην αφαίρεση. Ενώ για την πρόσθεση διατίθενται δύο εντολές, ADD και ADDC, για την αφαίρεση ο 8051 έχει µόνο µία. Του λείπει η εντολή SUB. Αντί αυτής, όµως, µπορεί να χρησιµοποιηθεί ο συνδυασµός εντολών: CLR C SUBB A,MEM ;Αφαιρεί από τον Α το περιεχόµενο της mem ; Με την πρώτη εντολή µηδενίζεται το δανειζόµενο ενώ, µε τη δεύτερη, γίνεται η αφαίρεση µε δανειζόµενο. Έτσι, όταν γίνεται αφαίρεση αριθµών των 2 ή περισσότερων bytes, γράφεται στην αρχή η εντολή CLR C και, µετά, γίνονται όλες οι αφαιρέσεις µε SUBB. Κατά τα άλλα, ισχύουν όλα όσα είπαµε για την πρόσθεση. Πρόβληµα 4.7 Γράψτε ένα πρόγραµµα που να αφαιρεί από τον αριθµό των 24 bits που περιέχεται στη µνήµη στις θέσεις 40h (high byte), 41h (medium byte) και 42h (low byte) τη σταθερά κωδ1x256+κωδ2. Τρέξτε µερικές φορές το πρόγραµµα και καταγράψτε και ερµηνεύστε τις σηµαίες κρατούµενου και υπερχείλισης. Επαναλάβετε, αφαιρώντας τη σταθερά κωδ1x256+κωδ2. Στο διπλανό σχήµα, φαίνεται ο τρόπος που ενηµερώνονται οι σηµαίες C και OV κατά την αύξηση και µείωση απροσήµαστων και προσηµασµένων αριθµών. Η µετάβαση από 00 σε FF και αντίστροφα έχει το νόηµα της υπερχείλισης στους απροσήµαστους αριθµούς, οπότε C=1. Η µετάβαση από 7F σε 80 και αντίστροφα έχει το νόηµα της Σχήµα 4-1. Ο κύκλος των σηµαιών C και OV υπερχείλισης (αλλαγή πρόση- µου) στους προσηµασµένους αριθµούς. Η µετάβαση από το σηµείο αυτό, είτε στην αύξηση είτε στην µείωση, δίνει OV=1. 48 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

57 4. ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ Σε αριθµούς µε πολλά bytes οι σηµαίες ελέγχονται µόνο στο high byte. Η µείωση ενός απροσήµαστου αριθµού κάτω από το 0 ή ενός προσηµασµένου κάτω από 128 λέγεται πολλές φορές υπο-χείλιση (underflow). 4.4 Πολλαπλασιασµός και ιαίρεση Στον πολλαπλασιασµό και τη διαίρεση οι καταχωρητές Α και Β κρατούν τους δύο αρχικούς αριθµούς αλλά και το αποτέλεσµα. Στον πολλαπλασιασµό ο Α κρατά το low και ο Β το high byte του αποτελέσµατος. Στη διαίρεση ο Α κρατά το πηλίκο και ο Β το υπόλοιπο. Οι εντολές είναι MUL AB, για τον πολλαπλασιασµό, και DIV AB, για τη διαίρεση. εν υπάρχει άλλος τρόπος διευθυνσιοδότησης. Και ο πολλαπλασιασµός και η διαίρεση είναι πράξεις µεταξύ απροσήµαστων αριθµών. Εάν το γινόµενο στον πολλαπλασιασµό µε τη MUL είναι µεγαλύτερο από 255, η σηµαία υπερχείλισης γίνεται 1. Εάν καλέσετε τη DIV µε Β=0 (διαίρεση µε το 0) τότε τα περιεχόµενα των Α και Β είναι τυχαία και η σηµαία υπερχείλισης γίνεται 1. Μετά τον πολλαπλασιασµό και τη διαίρεση, η σηµαία του κρατούµενου µηδενίζεται πάντοτε. Πρόβληµα 4.8 Γράψτε ένα πρόγραµµα που να πολλαπλασιάζει και να διαιρεί τους αριθµούς κωδ1 και κωδ2. Τρέξτε το πρόγραµµα σε πλήρη ταχύτητα (χωρίς step into) και επαληθεύστε τα αποτελέσµατά του. Προσοχή: µην µπερδεύετε την εµφάνιση ενός αριθµού (δυαδική, δεκαδική, δεκαεξαδική) της µνήµης του µικροελεγκτή µε την ερµηνεία του (καθαρά δυαδικός αριθµός, στο συµπλήρωµα ως προς 2, κώδικας BCD, κώδικας ASCII, κλπ). Για παράδειγµα: Εµφάνιση Ερµηνεία υαδική: Απροσήµαστος: 146 εκαδική: 146 ή 110 Προσηµασµένος: -110 εκαεξαδική: 92 Κώδικας BCD: 92 Κώδικας ASCII: Τ ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

58 4. ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ Οι εντολές που εξετάστηκαν στην άσκηση αυτή είναι οι εξής. ARITHMETIC OPERATIONS ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ MNEMONIC Περιγραφή Byte Clock ADD A,Rn ADD A,direct ADD ADD A,#data ADDC A,Rn ADDC A,direct ADDC ADDC A,#data DA A DEC A DEC Rn DEC direct DIV AB INC A INC Rn INC direct INC DPTR MUL AB SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data Add register to Accumulator Πρόσθεσε τον καταχωρητή στο συσσωρευτή Add direct byte to Accumulator Πρόσθεσε το απευθείας byte στο συσσωρευτή Add indirect RAM to Accumulator Πρόσθεσε την έµµεση RAM στο συσσωρευτή Add immediate data to Accumulator Πρόσθεσε το άµεσο δεδοµένο στο συσσωρευτή Add register to Accumulator with carry Πρόσθεσε µε κρατούµενο τον καταχωρητή στον Α Add direct byte to Accumulator with carry Πρόσθεσε µε κρατούµ. το απευθείας byte στον Α Add indirect RAM to Accumulator with carry Πρόσθεσε µε κρατούµ. την έµµεση RAM στον Α Add immediate data to A with carry Πρόσθεσε το άµεσο δεδοµένο στον Α µε κρατούµ. Decimal Adjust Accumulator Ρύθµισε δεκαδικά τον συσσωρευτή Decrement Accumulator Μείωσε τον συσσωρευτή Decrement Register Μείωσε τον καταχωρητή Decrement direct byte Μείωσε το απευθείας byte Decrement indirect RAM Μείωσε την έµµεση RAM Divide A by B ιαίρεσε τον Α µε τον Β Increment Accumulator Αύξησε τον συσσωρευτή Increment register Αύξησε τον καταχωρητή Increment direct byte Αύξησε το απευθείας byte Increment Data Pointer Αύξησε τον δείκτη δεδοµένων Increment indirect RAM Αύξησε την έµµεση RAM Multiply A and B Πολλαπλασίασε τους Α και Β Subtract Register from A with borrow Αφαίρεσε τον καταχ. από τον A µε δανειζόµενο Subtract direct byte from A with borrow Αφαίρεσε το απευθείας byte από τον A µε δανειζ. Subtract indirect RAM from A with borrow Αφαίρεσε την έµµεση RAM από τον Α µε δανειζ. Subtract immediate data from A with borrow Αφαίρεσε το άµεσο δεδοµένο από τον Α µε δανειζ ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

59 5 ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ Η CPU εκτελεί πρόγραµµα από τη µνήµη προγράµµατος (συνήθως ROM) ανακαλώντας bytes από διαδοχικές θέσεις µνήµης. Για το σκοπό αυτό, έχει έναν 16µπιτο καταχωρητή, τον απαριθµητή προγράµµατος (PC=Program Counter). O PC αυξάνεται κατά 1 αυτόµατα αµέσως µετά την ανάκληση κάθε byte προγράµµατος και, έτσι, δείχνει, κάθε φορά, τη διεύθυνση του επόµενου byte που έχει σειρά να ανακληθεί από τη µνήµη. Κατά την εκτέλεση µιας εντολής, ο PC δείχνει τη διεύθυνση της επόµενης εντολής. Εάν τροποποιήσουµε εκείνη τη στιγµή το περιεχόµενό του, η επόµενη εντολή δεν θα είναι αυτή που είναι γραµµένη αµέσως µετά αλλά αυτή που βρίσκεται στη µνήµη, εκεί που δείχνει το τροποποιηµένο περιεχόµενο του PC. Για την τροποποίηση του περιεχοµένου του απαριθµητή προγράµµατος δεν υπάρχει εντολή MOV, αν και η εντολή MOV PC,δ/νση θα προκαλούσε διακλάδωση στην εντολή που βρίσκεται στη δηλούµενη διεύθυνση. Γενικά, οι CPU είναι εφοδιασµένες µε διακλαδώσεις µακρινές ή απόλυτες και κοντινές ή σχετικές. Κάθε ένας από τους δύο αυτούς τύπους διακλάδωσης µπορεί να είναι µε συνθήκη ή χωρίς. Ο 8051 είναι εφοδιασµένος µε τους τρεις από τους τέσσερεις αυτούς τύπους διακλάδωσης. Απόλυτη ή µακρινή Σχετική ή κοντινή Χωρίς συνθήκη LJMP (άµεση) (έµµεση) SJMP Με συνθήκη - Jσυνθήκη CJNE DJNZ Όπου συνθήκη µπορεί να είναι Z = Zero, NZ = Non zero, C = Carry, NC = Not Carry, B = Bit (bit=1), NB = Not Bit (bit=0), BC = Bit and Clear (αν bit=1 και µηδένισµα του bit). Για λόγους συµβατότητας µε παλιότερα µοντέλα ο 8051 διαθέτει και µία εντολή απόλυτης διακλάδωσης (AJMP). Στη συνέχεια περιγράφονται αναλυτικά όλοι οι τρόποι διακλάδωσης

60 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ 5.1 ιακλαδώσεις χωρίς συνθήκη Οι διακλαδώσεις του τύπου αυτού δεν κάνουν κάποιον έλεγχο και εκτελούνται πάντοτε. Στον 8051 είναι τριών ειδών: απόλυτη (Absolute Jump), µακρινή (Long Jump) και σχετική διακλάδωση (Short Jump) Μακρινή διακλάδωση Μπορεί να γίνει οπουδήποτε στη µνήµη επειδή η δηλούµενη διεύθυνση είναι των 16 bits. Να θυµηθούµε εδώ ότι ο 8051 έχει διάδροµο διευθύνσεων των 16 bits και µπορεί να κάνει προσπέλαση σε 2 16 =64Κ θέσεις µνήµης. Υπάρχουν δύο ειδών µακρινές διακλαδώσεις: η άµεση (LJMP addr16) και η έµµεση Άµεση µακρινή διακλάδωση Η διακλάδωση γίνεται στη διεύθυνση των 16 bits που ακολουθεί τον κωδικό λειτουργίας της εντολής. Η εντολή LJMP addr16 είναι των τριών bytes Έµµεση µακρινή διακλάδωση Η διακλάδωση γίνεται στη δ/νση των 16 bits που σχηµατίζεται από την πρόσθεση των περιεχοµένων του Α και του DPTR. Η εντολή είναι του ενός byte και είναι η µοναδική εντολή διακλάδωσης µε έµµεση διευθυνσιοδότηση Σχετική διακλάδωση Τον κωδικό λειτουργίας της εντολής αυτής ακολουθεί ένας προσηµασµένος αριθµός του 1 byte. Είναι, εποµένως, εντολή των 2 bytes. Ο προσηµασµένος αυτός αριθµός προστίθεται στο (αυξηµένο) περιεχόµενο του απαριθ- µητή προγράµµατος δίνοντας τη διεύθυνση της επόµενης προς εκτέλεση εντολής. Η εντολή SJMP offset έχει τον περιορισµό ότι δεν µπορεί να κάνει διακλάδωση πέρα από 128 µέχρι +127 από τη διεύθυνση της εντολής που ακολουθεί την SJMP. Μπορεί όµως να ξεπεράσει το φράγµα των 2Κ που θέτει η απόλυτη διακλάδωση. 52 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

61 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ Στην πράξη δε χρειάζεται να υπολογίζετε διευθύνσεις και να επιλέγετε µία από τις εντολές AJMP, LJMP και SJMP. Γράφετε, απλά, JMP label, όπου label η ετικέτα της εντολής όπου θέλετε να κάνετε διακλάδωση. Την κατάλληλη εντολή θα τη βρει ο συµβολοµεταφραστής ανάλογα µε τη σχετική θέση των δύο εντολών, αυτής που κάνει τη διακλάδωση και αυτής που βρίσκεται στην ετικέτα label. 5.2 ιακλαδώσεις υπό συνθήκη Οι διακλαδώσεις υπό συνθήκη εκτελούνται αν κάποια συνθήκη είναι αληθής, ενώ, αν η συνθήκη είναι ψευδής, εκτελείται η επόµενη εντολή. Σε µορφή λογικού διαγράµµατος, υλοποιούν το εξής. Σχήµα 5-1. ιακλάδωση υπό συνθήκη Ο 8051 διαθέτει µόνον εντολές σχετικής διακλάδωσης υπό συνθήκη. Αυτό σηµαίνει πρακτικά ότι, αν η εντολή στην οποία θέλετε να κάνετε διακλάδωση υπό συνθήκη είναι µακριά, έξω, δηλαδή, από τα όρια 128 µέχρι +127 bytes από την επόµενη εντολή, θα πρέπει να κάνετε διακλάδωση υπό συνθήκη σε µία άλλη εντολή απόλυτης διακλάδωσης. Ο 8051 είναι εφοδιασµένος µε δύο είδη ελέγχων: έλεγχος σε byte και έλεγχος σε bit ιακλάδωση υπό συνθήκη µε έλεγχο byte Η διακλάδωση εκτελείται αν το byte έχει κάποια συγκεκριµένη τιµή που προσδιορίζει η εντολή. JZ offset, JNZ offset: οι εντολές jump if zero και jump if non zero ελέγχουν το περιεχόµενο του συσσωρευτή (και µόνον αυτού) και εκτελούν τη διακλάδωση αν ο Α είναι 0 ή διάφορος του 0 αντίστοιχα. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

62 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ CJNE A,dir,offset: διακλάδωση αν ο Α δεν είναι ίσος µε το περιεχόµενο της µνήµης µε διεύθυνση dir (Compare and Jump if Not Equal). CJNE A,#n,offset: διακλάδωση αν ο Α δεν είναι ίσος µε τη σταθερά n. CJNE Rn,#n,offset: διακλάδωση αν ο καταχωρητής οµάδας δεν είναι ίσος µε τη σταθερά n. διακλάδωση αν το περιεχόµενο της θέσης µνήµης που δείχνει ο καταχωρητής δείκτη δεν είναι ίσος µε τη σταθερά n. DJNZ Rn,offset: µείωσε τον καταχωρητή οµάδας κατά 1 και διακλαδώσου αν το αποτέλεσµα δεν είναι 0 (Decrement and Jump if Non Zero). DJNZ dir,offset: µείωσε το περιεχόµενο της µνήµης dir κατά 1 και διακλαδώσου αν το αποτέλεσµα δεν είναι 0. Στην πράξη δε χρειάζεται να υπολογίζετε offset. Γράφετε απλώς την εττικέτα της εντολής στην οποία θέλετε να κάνετε τη διακλάδωση και ο συµβολοµεταφραστής υπολογίζει το offset κατά τη µετάφραση του προγράµ- µατος. Οι εντολές JZ, JNZ και DJNZ δεν επηρεάζουν καµία σηµαία. Η εντολή, όµως, CJNE επηρεάζει τη σηµαία του C µε έναν τρόπο που θα αποδειχτεί πιο κάτω πολύ χρήσιµος. Κάνει τη σηµαία του κρατούµενου ένα αν ο πρώτος από τους συγκρινόµενους αριθµούς είναι µικρότερος από το δεύτερο. Αν ο πρώτος αριθµός είναι µεγαλύτερος ή ίσος από το δεύτερο, η σηµαία C µηδενίζεται ιακλάδωση υπό συνθήκη µε έλεγχο bit Η διακλάδωση εκτελείται αν το bit έχει κάποια συγκεκριµένη τιµή που προσδιορίζει η εντολή. Το bit µπορεί να είναι ή το κρατούµενο (C) ή οποιοδήποτε bit από την περιοχή µνήµης µε δυνατότητα προσπέλασης bit (b). Ο επόµενος πίνακας δείχνει τις διευθύνσεις b των bits και προκύπτει από το Σχήµα 2-3 στη σελίδα 23 και από την παράγραφο Η πρώτη στήλη από κάθε ένα από τα 8 ζεύγη στηλών δείχνει τη διεύθυνση b του bit ενώ η δεύτερη τη συµβολική ονοµασία του bit στο οποίο αντιστοιχεί αυτή η διεύθυνση. 54 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

63 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ Ο επόµενος πίνακας παρατίθεται για µελέτη και όχι για αναφορά ή απο- µνηµόνευση. Ο συµβολοµεταφραστής µάς επιτρέπει να χρησιµοποιούµε τη συµβολική ονοµασία του bit και τη µετατρέπει σε διεύθυνση bit. 0 20h h h Ch SCON IP C0h ACC h h h Ch SCON IP C0h ACC h h h Ch SCON IP C0h ACC h h h Ch SCON IP C0h ACC h h h Ch SCON IP C0h ACC h h h Ch SCON IP C0h ACC h h h Ch SCON IP C0h ACC h h h Ch SCON IP C0h ACC h h h Dh P P T2CON E h h h Dh P P T2 CON E h h h Dh P P T2 CON E h h h Dh P P T2 CON E h h h Dh P P T2 CON E h h h Dh P P T2 CON E h h h Dh P P T2 CON E h h h Dh P P T2 CON E h h Ah Eh TCON I E PSW.0-P 240 B h h Ah Eh TCON I E PSW.1-F1 241 B h h Ah Eh TCON I E PSW.2-OV 242 B h h Ah Eh TCON I E PSW.3-rs0 243 B h h Ah Eh TCON I E PSW.4-rs1 244 B h h Ah Eh TCON I E PSW.5-F0 245 B h h Ah Eh TCON I E PSW.6-AC 246 B h h Ah Eh TCON I E PSW.7-C 247 B h h Bh Fh P P CCON F h h Bh Fh P P CCON F h h Bh Fh P P CCON F h h Bh Fh P P CCON F h h Bh Fh P P CCON F h h Bh Fh P P CCON F h h Bh Fh P P CCON F h h Bh Fh P P CCON F8.7 Πίνακας 5-1. Οι διευθύνσεις των bits Οι εντολές µε έλεγχο bit είναι: JC offset: Η διακλάδωση εκτελείται αν η σηµαία του κρατούµενου είναι 1 (Jump if Carry). JNC offset: Η διακλάδωση εκτελείται αν η σηµαία του κρατούµενου είναι 0 (Jump if Not Carry). ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

64 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ JB b,offset: Η διακλάδωση εκτελείται αν το bit b είναι 1 (Jump if Bit). JNB b,offset: Η διακλάδωση εκτελείται αν το bit b είναι 0 (Jump if Not Bit). JBC b,offset: Η διακλάδωση εκτελείται αν το bit b είναι 1 (όπως στην JB) αλλά το bit b µηδενίζεται (Jump if Bit and Clear) Απόλυτη διακλάδωση Είναι εντολή των 2 bytes και, εποµένως, καταλαµβάνει λιγότερο χώρο στη µνήµη και, το σπουδαιότερο, εκτελείται πιο γρήγορα. Η διεύθυνση διακλάδωσης στην AJMP addr11 υπολογίζεται από τη συγχώνευση των 5 bits υψηλής τάξης του (αυξηµένου) περιεχοµένου του PC, των bits 7,6 και 5 του κωδικού λειτουργίας της εντολής και των 8 bits του δεύτερου byte της εντολής: a10 a9 a a7 a6 a5 a4 a3 a2 a1 a0 Εφόσον τα bits a11 µέχρι a15 δεν αλλάζουν, η διακλάδωση µπορεί να εκτελεστεί µόνο µέσα στο ίδιο µπλοκ των 2ΚBytes (64Kbytes/2 5 = 2 KBytes). Εάν, π.χ., στη διεύθυνση 2509h υπάρχει µία εντολή απόλυτης διακλάδωσης ΑJMP 523h, η τελική διεύθυνση διακλάδωσης θα είναι η 222Ch. A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Αρχική δ/νση Εντολή AJMP Άθροιση C Πρόβληµα 5.1 Γράψτε ένα πρόγραµµα που να προσθέτει τα περιεχόµενα των αριθµών των 16 bits που περιέχονται στη µνήµη, ο µεν πρώτος στις θέσεις κωδ1 (high) και κωδ1+1 (low), ο δε δεύτερος στις θέσεις κωδ2 (high) και κωδ2+1 (low byte). 56 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

65 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ Το αποτέλεσµα να φυλάγεται στις θέσεις µνήµης 20h (high), 21h (medium) και 22h (low byte). Να γίνει δηλαδή η πρόσθεση: (κωδ1) (κωδ1+1) + (κωδ2) (κωδ2+1) (20h) (21h) (22h) Υπόδειξη: αν από την πρόσθεση των high bytes των θέσεων κωδ1 και κωδ2 προκύψει κρατούµενο, βάλε 1 στη θέση 20h. Οι παρενθέσεις σηµαίνουν: «το περιεχόµενο της µνήµης µε διεύθυνση». Πρόβληµα 5.2 Γράψτε ένα πρόγραµµα που να αντικαθιστά τον προσηµασµένο αριθµό των 16 bits που περιέχεται στη µνήµη στις θέσεις κωδ2h+7 (high) και κωδ2h+8 (low byte) µε την απόλυτη τιµή του. Υπόδειξη: αν το πρόσηµο (high bit) είναι 1, κάνε την αφαίρεση 0 µείον αριθµός. Πρόβληµα 5.3 Γράψτε ένα πρόγραµµα που να προσθέτει τα περιεχόµενα των θέσεων µνήµης από κωδ1 µέχρι κωδ1+15 στο συσσωρευτή. Αγνοήστε τα κρατούµενα που θα προκύψουν από τις προσθέσεις. Υπόδειξη: χρησιµοποιήστε τον R1 ως καταχωρητή δείκτη για να δείχνει τις θέσεις µνήµης και τον R7 ως δείκτη του βρόχου για να µετράει από 16 µέχρι 1 µε DJNZ R7,loop. Χρησιµοποιήστε την εντολή INC R1 για να αυξάνετε κατά 1 τον R Συγκρίσεις Οι συγκρίσεις που συνήθως χρειάζονται στον προγραµµατισµό στη συµβολική γλώσσα φαίνονται στο επόµενο σχήµα. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

66 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ Σχήµα 5-2. Συνήθεις συγκρίσεις στη συγγραφή προγραµµάτων Η υλοποίηση των συγκρίσεων του προηγούµενου σχήµατος είναι: 1) Σύγκριση Γ= MOV A,Γ CJNE A,,ACTION1 ACTION2: JMP EXIT ACTION1: EXIT: 3) Σύγκριση Γ< MOV A,Γ CJNE A,, NEXT NEXT: JC ACTION2 ACTION1: JMP EXIT ACTION2: EXIT: 5) Σύγκριση Γ> ( <Γ) MOV A, CJNE A,Γ, NEXT NEXT: JC ACTION2 ACTION1: JMP EXIT ACTION2: EXIT: 2) Σύγκριση Γ<> MOV A,Γ CJNE A,,ACTION2 ACTION1: JMP EXIT ACTION2: EXIT: 4) Σύγκριση Γ>= MOV Α,Γ CJNE A,,NEXT NEXT: JNC ACTION2 ACTION1: JMP EXIT ACTION2: EXIT: 6) Σύγκριση Γ<= ( >=Γ) MOV Α, CJNE A,Γ, NEXT NEXT: JNC ACTION2 ACTION1: JMP EXIT ACTION2: EXIT: Πίνακας 5-2. Οι συγκρίσεις στην assembly Στις συγκρίσεις 3 µέχρι 6 εκµεταλλευόµαστε το γεγονός ότι η εντολή CJNE ενηµερώνει τη σηµαία του κρατούµενου (βλέπε παράγραφο σελίδα 53). Χρησιµοποιούµε, έτσι, την CJNE για να ενηµερώσει το C και όχι για να κάνει 58 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

67 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ τη διακλάδωση. Όπως βλέπετε, η διακλάδωση γίνεται στην αµέσως επόµενη εντολή που, ούτως ή άλλως, θα εκτελεστεί είτε είναι ίσα τα Γ και είτε όχι. Για τις συγκρίσεις 5 και 6 αρκεί να αντιστρέψουµε τα Γ και των συγκρίσεων 3 και 4 αντίστοιχα. Παράδειγµα 1: Να διαβαστεί στο συσσωρευτή ο µεγαλύτερος από τους δύο αριθµούς των θέσεων µνήµης 30h και 31h. MOV A,31h CJNE A,30h,NEXT NEXT: JNC EXIT ;όχι δανειζόµενο, άρα 1 ο 2 ο (31h 30h) MOV A,30h ;δανειζόµ., άρα αντίστροφη συνθήκη: 31h < 30h EXIT: Παράδειγµα 2: Να αντικατασταθεί το περιεχόµενο της θέσης µνήµης 30h µε 15h αν είναι µικρότερο από 16h. MOV A,30h CJNE A,#16h,NEXT NEXT: JNC EXIT ;όχι δανειζόµενο, άρα 1 ο 2 ο (30h #16) MOV 30h,#15h ;δανειζόµενο σηµαίνει 1 ο < 2 ο (30h < #16) EXIT: Παράδειγµα 3: Αν ο αριθµός που περιέχεται στη θέση 30h είναι µεγαλύτερος από 7, να αυξηθεί κατά 1 η θέση 31h, αλλιώς να µειωθεί κατά 1. MOV A,#7 CJNE A,30h,NEXT NEXT: JNC ACTION INC 31h ;δανειζόµενο, άρα 1 ο < 2 ο (#7 < 30h) JMP TELOS ACTION: DEC 31h ;όχι δανειζ., άρα 1 ο 2 ο (#7 30h) TELOS: Ένας άλλος τρόπος να θυµάστε τις συγκρίσεις είναι ο εξής: Οι συγκρίσεις που µπορούν να γίνουν µε τον 8051 είναι: ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

68 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ 1) µε την εντολή CJNE 2) µε την εντολή CJNE και µετά JNC 3) < µε την εντολή CJNE και µετά JC Όλες οι άλλες συγκρίσεις πρέπει να αναχθούν στις παραπάνω 3 επιλέγοντας κατάλληλα τη σειρά της σύγκρισης (το δεδοµένο που θα φορτωθεί στον Α και το δεδοµένο µε το οποίο θα συγκριθεί ο Α) στην εντολή CJNE. Πρόβληµα 5.4 Γράψτε και επαληθεύστε τα 3 προηγούµενα παραδείγµατα αντικαθιστώντας τις θέσεις 30h και 31h µε κωδ1 και κωδ2 αντίστοιχα. Πρόβληµα 5.5 Γράψτε ένα πρόγραµµα που να αυξάνει κατά 1 το περιεχόµενο της θέσης µνήµης κωδ1 αν αυτό είναι περιττός αριθµός και µεγαλύτερος του #κωδ2. Οι εντολές που περιγράφηκαν στην ενότητα αυτή είναι οι εξής. 60 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

69 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ PROGRAM BRANCHING ΙΑΚΛΑ ΩΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ MNEMONIC Περιγραφή Byte Clock AJMP addr11 CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel DJNZ Rn,rel DJNZ direct,rel JC rel JNC rel JB bit,rel JNB bit,rel JBC bit,rel JZ rel JNZ rel LJMP addr16 NOP SJMP rel Absolute jump Απόλυτη διακλάδωση Compare direct byte to A and jump if not equal Σύγκρινε το απευθείας byte µε τον Α και διακλαδώσου αν δεν είναι ίσα Compare immediate to A and jump if not equal Σύγκρινε το άµεσο byte µε τον Α και διακλαδώσου αν δεν είναι ίσα Compare immediate to reg. and jump if not equal Σύγκρινε το άµεσο byte µε τον καταχ. και διακλαδώσου αν δεν είναι ίσα Compare immediate to indirect & jump if not equal Σύγκρινε το άµεσο µε το έµµεσο byte και διακλαδώσου αν δεν είναι ίσα Decrement register and jump if not zero Μείωσε τον καταχ. και διακλαδώσου αν δεν είναι 0 Decrement direct byte and jump if not zero Μείωσε το απευθείας byte και διακλαδ.αν δεν είναι 0 Jump if carry is set ιακλαδώσου αν το κρατούµενο είναι ένα Jump if carry not set ιακλαδώσου αν το κρατούµενο δεν είναι ένα Jump if direct bit is set ιακλαδώσου αν το απευθείας bit είναι ένα Jump if direct bit is not set ιακλαδώσου αν το απευθείας bit δεν είναι ένα Jump if direct bit is set and clear bit ιακλαδ. αν το απευθείας bit είναι 1 και µηδένισέ το Jump indirect relative to the DPTR Σχετική διακλάδωση σχετικά µε τον DPTR Jump if Accumulator is zero ιακλαδώσου αν ο συσσωρευτής είναι µηδέν Jump if Accumulator is not zero ιακλαδώσου αν ο συσσωρευτής δεν είναι µηδέν Long jump Μακρά διακλάδωση No Operation Καµία εργασία Short jump (relative addr) Κοντή διακλάδωση (σχετική διεύθυνση) ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

70 5. ΕΝΤΟΛΕΣ ΙΑΚΛΑ ΩΣΗΣ - ΣΥΓΚΡΙΣΕΙΣ 62 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

71 6 ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ 6.1 Στοίβα Στοίβα είναι µία µέθοδος οργάνωσης µνήµης όπου η προσπέλαση (διάβασµα ή γράψιµο), γίνεται χωρίς να προσδιορίζεται η διεύθυνση. ύο µόνο εργασίες επιτρέπονται στη στοίβα: η φύλαξη (PUSH) και η ανάκληση (POP). Αφού δεν προσδιορίζουµε τη διεύθυνση, δεν µπορούµε να ζητήσουµε από τη στοίβα όποιο στοιχείο θέλουµε. Η CPU, σε απάντηση της εντολής POP, µας δίνει κάθε φορά το τελευταίο στοιχείο που φυλάχτηκε (δοµή LIFO = Last In First Out). Η στοίβα πραγµατοποιείται αποκλειστικά στην εσωτερική έµµεση RAM (διευθύνσεις από 00h µέχρι FFh). Για να µπορεί η CPU να χειρίζεται τη στοίβα αρκεί να γνωρίζει τη διεύθυνση της κορυφής της. Κορυφή της στοίβας είναι η θέση που έχει σειρά να ανακληθεί, η θέση, δηλαδή, που φυλάχτηκε τελευταία. Ο 8051 είναι εφοδιασµένος µε τον οκτάµπιτο καταχωρητή SP (SFR 81h) που δείχνει την κορυφή της στοίβας και αυξάνεται αυτόµατα κατά ένα πριν από κάθε φύλαξη, ενώ µειώνεται κατά ένα µετά από κάθε ανάκληση από τη στοίβα. Στο reset ο SP αποκτά την τιµή 7, επειδή, όµως, εκεί είναι η αρχή της οµάδας καταχωρητών 1, συνήθως δίνουµε µία άλλη αρχική τιµή στον SP. Η τιµή αυτή, αν δεν θέλουµε να πέσει η στοίβα πάνω σε χρήσιµα δεδοµένα, πρέπει να είναι µεγαλύτερη ή ίση από τη µεγαλύτερη διεύθυνση µνήµης που χρησιµοποιήθηκε. Μία τιµή που συνήθως δε δηµιουργεί πρόβληµα είναι η 7Fh, η αρχή δηλαδή (µείον 1) του πάνω µισού της εσωτερικής RAM, που, έτσι κι αλλιώς, είναι µόνο έµµεσα προσπελάσιµη. Ανακεφαλαιώνοντας λοιπόν: 1) Η στοίβα στον 8051 πραγµατοποιείται στην εσωτερική έµµεση RAM. 2) Η στοίβα ξεκινά από χαµηλές διευθύνσεις και επεκτείνεται προς τις υψηλές. 3) Ο SP δείχνει την κορυφή της στοίβας, και συγκεκριµένα τη διεύθυνση της θέσης που γράφτηκε τελευταία και έχει σειρά να διαβαστεί. Έτσι, ο

72 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ 8051 πριν από κάθε φύλαξη στη στοίβα αυξάνει κατά ένα τον SP, ενώ, µετά από κάθε ανάκληση, τον µειώνει κατά 1. ΠΡΟΣΟΧΗ: Στον SP δίνουµε αρχική τιµή ΜΟΝΟ στην αρχή του προγράµ- µατος. Στη συνέχεια ΑΠΑΓΟΡΕΥΕΤΑΙ να πειράξουµε τον SP αλλιώς η CPU θα χάσει την κορυφή της στοίβας. Τη στοίβα τη χρησιµοποιούµε ως πρόχειρη και γρήγορη µνήµη επειδή οι εντολές PUSH για φύλαξη και POP για ανάκληση είναι του ενός byte και, άρα, γρήγορες. Ο βασικός λόγος, όµως, που υπάρχει η στοίβα σε όλες ανεξαιρέτως τις CPU είναι για να µπορούν να χειρίζονται υπορουτίνες. Ο 8051 δεν µπορεί να γράψει στη στοίβα τίποτε άλλο εκτός από απευθείας RAM. Έτσι, αν θέλετε να γράψετε στη στοίβα κάποιον SFR, πρέπει να γράψετε PUSH και τη διεύθυνσή του. Ο συµβολοµεταφραστής που χρησιµοποιείτε στο εργαστήριο µπορεί να βρει τη διεύθυνση του SFR και να την αντικαταστήσει στις εντολές PUSH και POP µε τις εξής εξαιρέσεις. Εξαίρεση 1 Για το συσσωρευτή, πρέπει να γράψετε PUSH acc, όπου acc είναι η διεύθυνση του συσσωρευτή, δηλαδή E0h. Το acc είναι σταθερά του assembler και, κατά τη διάρκεια της µετάφρασης, γίνεται αντικατάσταση µε E0h. Για να καταλάβουµε τη σταθερά acc ας δούµε πώς µεταφράζονται σε κώδικα οι εντολές MOV A,#12 και MOV acc,# C MOV A,# E00C MOV acc,#12 Η πρώτη εντολή έχει προσπέλαση συσσωρευτή επειδή η δήλωση του συσσωρευτή ως αποδέκτη της πληροφορίας περιέχεται στον κωδικό λειτουργίας της εντολής. Η δεύτερη εντολή έχει απευθείας προσπέλαση επειδή ο συσσωρευτής δηλώνεται µε τη διεύθυνσή του σε ξεχωριστό byte. Όταν, λοιπόν, γράφουµε PUSH acc, δηλώνουµε τη διεύθυνση του συσσωρευτή µε απευθείας προσπέλαση, µόνο που, αντί να ψάχνουµε εµείς τη διεύθυνσή του, αναθέτουµε στον assembler να τη βρει. 64 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

73 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ Εξαίρεση 2 Για τους καταχωρητές οµάδας R0 έως R7 πρέπει να δώσετε τη διεύθυνση ανάλογα µε την οµάδα στην οποία αναφέρεστε. Π.χ., για να φυλάξετε στη στοίβα τον καταχωρητή R0 της οµάδας 0 πρέπει να δώσετε την εντολή PUSH 0 και για να ανακαλέσετε από την κορυφή της στοίβας στον καταχωρητή R7 της οµάδας 3 πρέπει να δώσετε την εντολή POP 1Fh. Ο assembler έχει, όπως και µε τη σταθερά acc για το συσσωρευτή, τις σταθερές ar0 µέχρι ar7 για τους καταχωρητές οµάδας (ar = address of register). Μόνο που, επειδή ο assembler δεν υπολογίζει την οµάδα που έχετε ενεργή, πρέπει να του το δηλώνετε µε την οδηγία using. Για παράδειγµα, για να φυλάξουµε στη στοίβα το περιεχόµενο του καταχωρητή R4 µε ενεργή την οµάδα 1, µπορούµε, αντί να γράψουµε PUSH 12 να γράψουµε: using 1 ; ήλωση στον assembler ότι έχουµε ενεργή την οκ1 PUSH ar4 ;Φύλαξε στη στοίβα το περιεχόµενο της διεύθυνσης ;που αντιστοιχεί στον R4 της ενεργής οκ Παρεπιπτόντως, να αναφερθεί εδώ ότι για την επιλογή της ενεργής οµάδας καταχωρητών χρησιµοποιούνται οι εντολές SETB και CLR στα bits RS1 και RS0. Η οδηγία using απλά δηλώνει στον µεταφραστή την οµάδα καταχωρητών που επιλέξαµε (επιλογή εντολή, δήλωση οδηγία). Τονίζουµε ότι µε την εντολή PUSH γίνεται αντιγραφή του περιεχοµένου της µνήµης στη στοίβα. Με την εντολή POP γίνεται αντιγραφή από την κορυφή της στοίβας στη µνήµη, αλλά επειδή ο δείκτης της στοίβας δεν δείχνει πια στα δεδοµένα της στοίβας που διαβάστηκαν, µπορείτε να θεωρείτε το διάβασµα από τη στοίβα σαν µεταφορά. Όταν θα ξαναγράψετε στη στοίβα τότε θα γράψετε πάνω στα διαβασµένα δεδοµένα και θα τα διαγράψετε οριστικά. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

74 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ Πρόβληµα 6.1 Το επόµενο πρόγραµµα ανταλλάσσει (exchange) τα περιεχόµενα των θέσεων µνήµης κωδ1 και κωδ2. Γράψτε, τρέξτε και επαληθεύστε τη λειτουργία του. PUSH κωδ1 ; PUSH κωδ2 ; POP κωδ1 ; POP κωδ2 ; Πρόβληµα 6.2 Γράψτε ένα πρόγραµµα που να ανακαλεί στον Β το περιεχόµενο της κορυφής της στοίβας χωρίς, όµως, να χαλά η στοίβα ούτε ο SP. 6.2 Υπορουτίνες Υπορουτίνα είναι ένα τµήµα προγράµµατος που µπορεί να καλείται µε ειδικές εντολές από ένα κυρίως πρόγραµµα. Το κέρδος από τη χρήση των υπορουτινών είναι πολλαπλό. Εάν χρειάζεται ένα κοµµάτι προγράµµατος να εκτελείται το ίδιο πολλές φορές σε µία εφαρµογή, δεν χρειάζεται να το ξαναγράψουµε. Ασχολούµαστε κάθε φορά µε τη συγγραφή και εκσφαλµάτωση µικρών και αυτοτελών προγραµµάτων µε αποτέλεσµα να είµαστε πιο αποδοτικοί. Μπορεί να γραφεί ένα πρόγραµµα από περισσότερους του ενός προγραµµατιστές αν αναλάβει ο καθένας και µερικές υπορουτίνες. Στο τέλος θα γίνει η «συρραφή» των υπορουτινών αυτών µέσα σε ένα κυρίως πρόγραµµα. ηµιουργούµε σιγά σιγά µια βιβλιοθήκη από υπορουτίνες µε αποτέλεσµα να χρειάζεται να γράφουµε όλο και λιγότερο κώδικα για την ολοκλήρωση των προγραµµάτων µας. Το πρόγραµµα γίνεται πιο ευανάγνωστο. Για τη χρήση των υπορουτινών ο 8051 διαθέτει τις εξής εντολές. 66 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

75 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ LCALL addr16: Μακρινή κλήση σε υπορουτίνα µε ολόκληρη τη διεύθυνση. Είναι εντολή των 3 bytes. ACALL addr11: Κλήση σε υπορουτίνα που βρίσκεται στο ίδιο µπλοκ µνήµης των 2 Kbytes µε την εντολή ACALL που την καλεί. Είναι εντολή των 2 bytes. RET: Επιστροφή από την υπορουτίνα στο κυρίως πρόγραµµα στην αµέσως επόµενη εντολή από την CALL. Και εδώ, όπως και µε τις εντολές απόλυτης και µακρινής διακλάδωσης, ο προγραµµατιστής δε χρειάζεται να υπολογίζει διευθύνσεις και αποστάσεις. Γράφει, απλά, CALL label και ο συµβολοµεταφραστής αναλαµβάνει να επιλέξει την κατάλληλη εντολή κλήσης της υπορουτίνας ανάλογα µε τη σχετική θέση της πρώτης εντολής της υπορουτίνας και της CALL. Για να µπορούµε να καλούµε µία υπορουτίνα µε αυτόν τον τρόπο πρέπει να βάλουµε µία ετικέτα στην πρώτη εντολή της. Επίσης, στο τέλος της δεν πρέπει να ξεχνάµε την εντολή RET. Η τυπική δοµή ενός προγράµµατος που χρησιµοποιεί υπορουτίνα είναι η εξής. ;Αρχικές δηλώσεις... ;Κυρίως πρόγραµµα CALL SUBR HALT JMP HALT ;Τέλος του κυρίως προγράµµατος SUBR1:... ;Υπορουτίνα RET end Για να µπορεί να επιστρέψει η CPU στο κυρίως πρόγραµµα µετά το τέλος της υπορουτίνας, φυλάει στη στοίβα τη διεύθυνση επιστροφής. Στο πρώτο ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

76 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ από τα δύο επόµενα σχήµατα φαίνεται η κατάσταση µόλις έχει ανακληθεί από τη µνήµη η εντολή LCALL 023Eh και πριν ακόµη εκτελεστεί. Ο PC δείχνει τη διεύθυνση της επόµενης προς εκτέλεση εντολής. Για να µπορεί να γίνει επιστροφή, το περιεχόµενο του PC φυλάγεται στη στοίβα. Πρώτα το high byte (PCH) και µετά το low (PCL) φυλάγονται στην κορυφή της στοίβας. Σχήµα 6-1. Η εντολή LCALL 023Eh έχει ανακληθεί. Ο PC δείχνει την επόµενη εντολή. Μετά την εκτέλεση της εντολής LCALL (βλ. επόµενο σχήµα) ο απαριθµητής προγράµµατος PC δείχνει την διεύθυνση της αρχής της υπορουτίνας, ενώ ο SP είναι αυξηµένος κατά 2, αφού δύο bytes φυλάχτηκαν στη στοίβα. Για να µπορεί να γίνει επιστροφή από την υπορουτίνα πρέπει, προφανώς, να µην πειραχτεί καθόλου η στοίβα αλλιώς θα χαθεί η διεύθυνση επιστροφής στο κυρίως πρόγραµµα. Μπορούν να χρησιµοποιηθούν εντολές PUSH και POP, αλλά για να έρθει η στοίβα στην ίδια κατάσταση, θα πρέπει να εκτελεστούν τόσες εντολές POP, όσες PUSH. Μπορεί µία υπορουτίνα να καλεί µία άλλη. Αν, στο επόµενο σχήµα, στη διεύθυνση 023Εh που ανήκει στην υπορουτίνα, υπάρχει η εντολή LCALL 034Fh, τότε, µόλις εκτελεστεί, στη στοίβα θα προστεθεί και η νέα διεύθυνση επιστροφής, η 0241h (02h στην 84h και 41h στην 85h). 68 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

77 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ Σχήµα 6-2. Η εντολή LCALL 023Eh έχει εκτελεστεί. PC στοίβα, PC 023Eh. Πρόβληµα 6.3 Γράψτε µία υπορουτίνα που να γράφει το περιεχόµενο του Α στον καταχωρητή R5, αν το περιεχόµενο του Α είναι µεγαλύτερο από τον R5. Πρόβληµα 6.4 Χρησιµοποιώντας την προηγούµενη υπορουτίνα γράψτε ένα πρόγραµµα που να γράφει στον R5 τον µεγαλύτερο αριθµό που περιέχεται στις θέσεις της εξωτερικής µνήµης µε διευθύνσεις από 8000h+κωδ2 µέχρι 8003h+κωδ2. Βάλτε αρχικά δεδοµένα στη µνήµη και µετά τρέξτε το πρόγραµµα για να ελέγξετε τη λειτουργία του. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

78 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ Πρόβληµα 6.5 Η επόµενη υπορουτίνα κάνει χρονική καθυστέρηση περίπου 0,2 sec. Γράψτε, τρέξτε και επαληθεύστε την υπορουτίνα στον προσοµοιωτή. DELAY: MOV R6,#0C3h ;Υπενθύµιση: οι δεκαεξαδικές σταθερές DELAY1: MOV R7,#0FFh ; δεν πρέπει να αρχίζουν από γράµµα. DELAY2: NOP NOP DJNZ R7,DELAY2 DJNZ R6,DELAY1 RET Η καθυστέρηση έχει υπολογιστεί στην default συχνότητα κρυστάλλου του debugger των 40 MHz. Εάν θέλετε να αλλάξετε τη συχνότητα ρολογιού σε 12 MHz, κάντε δεξί κλικ στο Target1, κλικ στο Options for target Target1 και δώστε 12 MHz στο Xtal. Στη συνέχεια γράψτε ένα πρόγραµµα που να καλεί την υπορουτίνα αυτή, να αυξάνει κατά 1 το περιεχόµενο του Α και να γράφει το περιεχόµενό του στην εξωτερική µνήµη, στη διεύθυνση 0CC00h+κωδ1. Κάντε διπλό κλικ στην εντολή µεταφοράς δεδοµένων MOVX ώστε να σταµατάει το πρόγραµµα εκεί και παρατηρείτε στο παράθυρο των καταχωρητών το χρόνο (Sec:) Πόσο πρέπει να είναι το µέγεθος της στοίβας; Γνωρίζουµε ότι κάθε κλήση σε υπορουτίνα απαιτεί χώρο δύο θέσεων µνήµης στη στοίβα για τη φύλαξη της διεύθυνσης επιστροφής. Μέσα στις υπορουτίνες χρειάζεται συχνά να σώζουµε κάποιες µεταβλητές στη στοίβα ή να καλούµε άλλες υπορουτίνες. Στις περιπτώσεις αυτές η στοίβα µεγαλώνει. Όταν ανακαλέσουµε (POP) τα δεδοµένα ή επιστρέψουµε από τις υπορουτίνες η στοίβα θα µικρύνει για να µεγαλώσει και πάλι αργότερα. Το ερώτηµα είναι: πόσο χώρο να προβλέψουµε για τη στοίβα; 1 η λύση: δέσµευση όλου του επάνω µισού τµήµατος της RAM. Μία λύση στο πρόβληµα αυτό είναι να δεσµεύσουµε όλο το επάνω µισό της έµµεσης RAM (128 bytes, από 80h µέχρι FFh) για τη στοίβα και να βάλουµε στην αρχή του προγράµµατος την εντολή MOV SP,#7Fh. 70 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

79 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ 2 η λύση: ανάθεση της διευθέτησης στο linker Στις περισσότερες εφαρµογές θέλουµε να εξοικονοµήσουµε θέσεις µνήµης και ψάχνουµε να µικρύνουµε τη στοίβα στο εντελώς απαραίτητο µέγεθος. Αλλά, υπάρχουν περιπτώσεις όπου η στοίβα µεγαλώνει πέρα από το προβλεπόµενο µέγεθος και η CPU αρχίζει και γράφει πάνω σε άλλα δεδοµένα. Τα λάθη αυτά είναι από τα πιο δύσκολα στον εντοπισµό τους. Για την αποφυγή τους πρέπει να πούµε στο linker να βάλει τη στοίβα στο τέλος της µνήµης µετά από όλες τις µεταβλητές, ώστε να υπάρχει χώρος για την επέκτασή της. Ας δούµε πώς γίνεται αυτό. Στην αρχή του προγράµµατος βάζουµε τις εξής οδηγίες (οδηγία είναι µία λέξη που δε µεταφράζεται για να δώσει εκτελέσιµο από τη CPU κώδικα αλλά οδηγεί τον assembler και το linker για τον τρόπο που θα γίνει η µετάφραση και η διασύνδεση του κώδικα): STOIBA segment idata rseg STOIBA ds 64 cseg at 0 MOV SP,#STOIBA-1 ;Τελευταία κατειληµµένη θέση = πρώτη ;ελεύθερη θέση µείον 1... υπόλοιπο πρόγραµµα... Η οδηγία segment idata ειδοποιεί το linker να ορίσει ένα τµήµα έµµεσης µνήµης. Να θυµηθούµε εδώ ότι οι εντολές PUSH και POP είναι εντολές έµµεσης διευθυνσιοδότησης, µια και η διεύθυνση περιέχεται στο δείκτη της στοίβας SP. Πριν την οδηγία αυτή βάζουµε µία ετικέτα για να ονοµάσουµε το τµήµα και να µπορούµε να χρησιµοποιήσουµε την αρχική διεύθυνση της δεσµευµένης περιοχής. Προσέξτε ότι δεν ορίζουµε ούτε την αρχική διεύθυνση ούτε το µέγεθος της περιοχής που θα δεσµευτεί. Αυτά γίνονται δυναµικά από το linker κατά τη διασύνδεση του προγράµµατός µας. Επειδή ο linker τοποθετεί το ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

80 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ τµήµα µνήµης όπου αυτός νοµίζει καλύτερα, το τµήµα αυτό λέγεται «επανατοποθετήσιµο» (relocatable). Η οδηγία rseg STOIBA οδηγεί τον assembler να ξεκινήσει την τοποθέτηση των εξαγοµένων του στο relocatable segment STOIBA. Είναι το αντίστοιχο της οδηγίας cseg που οδηγεί τον assembler να ξεκινήσει την τοποθέτηση των εξαγοµένων του στο απόλυτο τµήµα της µνήµης του κώδικα. Η οδηγία cseg at 0 ορίζει απόλυτο (absolute) τµήµα επειδή ορίζουµε εµείς τη διεύθυνση 0 όπου θα αρχίσει η τοποθέτηση της µετάφρασης του προγράµµατός µας. Η οδηγία ds 64 (define storage) δεσµεύει στο ενεργό τµήµα (στην προκειµένη περίπτωση το relocatable indirect data segment STOIBA) χώρο 64 θέσεων. Συνηθισµένες τιµές για τη στοίβα είναι από 16 µέχρι 128 θέσεις έµµεσης µνήµης. Η πρώτη εντολή του προγράµµατος θα πρέπει να είναι η ανάθεση της αρχικής τιµής στο δείκτη της στοίβας (MOV SP,#STOIBA-1). Για να µην υπάρχει περίπτωση, αν επεκταθεί, η στοίβα να πέσει πάνω σε χρήσιµα δεδοµένα, πρέπει να ρυθµίσουµε τον linker να βάλει το relocatable idata segment STOIBA στο τέλος όλων των άλλων τµηµάτων RAM. Αυτό γίνεται µε δεξί κλικ στο Target 1, κλικ στο Options for target Target1, επιλογή της καρτέλας L51 Locate και εισαγωγή στο πεδίο Stack της ετικέτας που έχουµε βάλει στο stack segment (συνήθως STOIBA). Συµπέρασµα: Σε όλα τα προγράµµατα που χρησιµοποιούν τη στοίβα πρέπει να βάζουµε στην αρχή τις εξής γραµµές: STOIBA segment idata rseg STOIBA ds 64 cseg at 0 MOV SP,#STOIBA ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

81 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ Πρόβληµα 6.6 Γράψτε ένα πρόγραµµα που να περιέχει τις προηγούµενες γραµµές διαχείρισης της στοίβας και µεταφράστε το. Ανοίξτε το αρχείο.m51 που θα δηµιουργηθεί και βρείτε την αρχική διεύθυνση της στοίβας. Προσθέστε στην αρχή του προγράµµατος την οδηγία using 3 και ξαναµεταφράστε. Τι παρατηρείτε; Σχεδιάστε µε βάση τα νέα περιεχόµενα του αρχείου.m51 ένα διάγραµµα που να δείχνει τα τµήµατα µνήµης RAM που έχουν οριστεί και τις διευθύνσεις τους. Προσθέστε µετά τον ορισµό του τµήµατος της στοίβας και πριν τον ορισµό του τµήµατος του κώδικα τις εξής οδηγίες ορισµού ενός τµήµατος στην απευθείας RAM και ξαναµεταφράστε. DEDOMENA segment data rseg DEDOMENA PINAKAS: ds κωδ1 / 2 ;Το µισό του κωδ1 Σχεδιάστε το νέο διάγραµµα τµηµάτων. Τι παρατηρείτε; Οι εντολές που εξετάστηκαν στην άσκηση αυτή είναι οι εξής: STACK AND SUBROUTINES ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ MNEMONIC Περιγραφή Byte Clock ACALL addr11 LCALL addr16 POP direct PUSH direct RET RETI Absolute subroutine call Απόλυτη κλήση υπορουτίνας Long subroutine call Μακρά κλήση υπορουτίνας Pop direct byte from stack Τράβηξε το απευθείας byte από τη στοίβα Push direct byte onto stack Ώθησε το απευθείας byte στη στοίβα Return from subroutine Επιστροφή από υπορουτίνα Return from interrupt Επιστροφή από διακοπή ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

82 6. ΣΤΟΙΒΑ ΚΑΙ ΥΠΟΡΟΥΤΙΝΕΣ 74 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

83 7 ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ. ΕΝΤΟΛΕΣ ΙΑΧΕΙΡΙΣΗΣ BITS. Ο 8051 µπορεί και εκτελεί τις λογικές πράξεις AND, OR, ΝΟΤ και XOR σε bytes. Η µία είσοδος µπορεί να είναι ο συσσωρευτής ή η απευθείας RAM. Η άλλη µπορεί να έχει 4 τρόπους διευθυνσιοδότησης. Η έξοδος µπορεί να είναι ο συσσωρευτής ή η απευθείας RAM. Στην περίπτωση των bytes η λογική πράξη γίνεται σε ένα προς ένα τα αντίστοιχα bits των δύο bytes. A πριν A µετά ANL A,Byte Byte Σχήµα 7-1. Σχηµατική παράσταση εκτέλεσης της εντολής ANL A,byte Τα µνηµονικά που χρησιµοποιούνται στις εντολές αυτές είναι τα ANL (ANd Logical), ORL (OR Logical), CPL (ComPLement) και XRL (XoR Logical). Ο 8051 µπορεί να εκτελεί λογικές πράξεις AND, OR και NOT και σε bits. Το ρόλο του συσσωρευτή παίζει η σηµαία του κρατούµενου. Οι εντολές των λογικών πράξεων δεν επηρεάζουν καµία σηµαία εκτός αν ο προορισµός της εντολής είναι ο PSW. 7.1 Εντολές µεταφοράς bits Οι εντολές αυτές αντιγράφουν ένα bit. Η µία θέση bit είναι το κρατούµενο και η άλλη µία από τα προσπελάσιµα bits όπως δείχνει ο Πίνακας 5-1 στη σελίδα

84 7. ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ. ΕΝΤΟΛΕΣ ΙΑΧΕΙΡΙΣΗΣ BITS MOV C,b Αντιγράφει το bit b στο κρατούµενο MOV b,c Αντιγράφει το κρατούµενο στο bit b Για να αναφερθούµε σε ένα bit b µπορούµε να γράψουµε τη διεύθυνση του byte όπου βρίσκεται αυτό το bit, µία τελεία και τον αριθµό από 0 µέχρι 7 της θέσης του bit µέσα στο byte. Π.χ., εάν το περιεχόµενο της θέσης µε διεύθυνση 21h είναι , τότε το τρίτο από αριστερά bit θα γράφεται ως 21h.5. Ο συµβολοµεταφραστής θα υπολογίσει τη διεύθυνση του bit, στη συγκεκριµένη περίπτωση Λογικές πράξεις σε bits Η σηµαία του κρατούµενου χρησιµεύει στις πράξεις αυτές ως συσσωρευτής του ενός bit, δηλαδή δίνει την µία είσοδο και κρατάει και το αποτέλεσµα. Η λογική πράξη µπορεί να γίνει µεταξύ του C και είτε της κατάφασης είτε της άρνησης του άλλου bit. Εντολή ANL C,b ANL C,/b ORL C,b ORL C,/b CPL C CPL b Ενέργεια / Παράδειγµα C C b ANL C,ACC.3 C C!b ANL C,/ACC.3 C C + b ORL C,20h.7 C C +!b ORL C,/F0 C!C CPL C b!b CPL 20h.3 Περιγραφή AND µεταξύ του C και του b, το αποτέλεσµα στο C. AND µεταξύ του C και της άρνησης του b. Το αποτέλεσµα µένει στο C. Το bit b δεν αλλάζει. OR µεταξύ του C και του b, το αποτέλεσµα στο C. OR µεταξύ του C και της άρνησης του b. Το αποτέλεσµα µένει στο C. Το bit b δεν αλλάζει. Αντιστροφή (ΝΟΤ) του κρατούµενου. Αντιστροφή του bit b. Πίνακας 7-1. Οι εντολές των λογικών πράξεων σε bits Το b στον προηγούµενο πίνακα παίρνει τιµές από 0 µέχρι 255 για να δείξει τα bits των θέσεων µνήµης της προσπελάσιµης κατά bit. 76 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

85 7. ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ. ΕΝΤΟΛΕΣ ΙΑΧΕΙΡΙΣΗΣ BITS Πρόβληµα 7.1 Γράψτε ένα πρόγραµµα που να κάνει τις εξής λογικές πράξεις: α) P2.0 P1.0 P1.1 β) P2.2 P1.2 + P1.3 γ) P2.4! P1.4 δ) P2.5 P1.5 P1.6 ε) P2.7 P1.7 Επαληθεύστε τη λειτουργία του προγράµµατος στον προσοµοιωτή. Σηµείωση: το πρόγραµµα θα πρέπει να εκτελείται διαρκώς, χωρίς τέλος, και σε πλήρη ταχύτητα. Εάν υλοποιήσετε την X-OR µε χρήση της ιδιότητας x y =!x y + x!y, κατά τη διάρκεια των παραπάνω πράξεων, θα χρειαστείτε µία προσωρινή µνήµη του ενός bit. Στις σηµαίες που έχει ο 8051, υπάρχει και µία F0 γενικής χρήσης, που µπορείτε να τη χρησιµοποιείτε. Οι εντολές διαχείρισης της σηµαίας αυτής είναι MOV F0,C και MOV C,F0. Μπορεί, φυσικά, η F0 να πάρει τη θέση του b στις εντολές των λογικών πράξεων αφού ανήκει στον PSW που είναι καταχωρητής προσπελάσιµος κατά bit. Οι διευθύνσεις SFR P0, P1, P2 και P3 οδηγούν στις θύρες του µικροελεγκτή. Κάθε θύρα έχει 8 γραµµές, µία για κάθε bit, που συνδέονται στους ακροδέκτες του ολοκληρωµένου. Σε κάθε ακροδέκτη µπορούµε να συνδέσουµε µία επαφή ώστε να δίνει λογικό 0 ή 1 και να τη διαβάζουµε από το πρόγραµµα (input). Ακόµη, µπορεί να συνδεθεί ένα LED ώστε να το οδηγούµε από το πρόγραµµα και να το ανάβουµε και να το σβήνουµε κατά βούληση (output). Εσείς θα εµφανίσετε στον προσοµοιωτή τις θύρες µε την επιλογή µενού Peripherals I/O ports και θα δώσετε την επιλογή View Periodic Window Update. 7.3 Λογικές πράξεις σε bytes Ο προορισµός των εντολών αυτών είναι, ως συνήθως, ο συσσωρευτής. Στις λογικές πράξεις, όµως, προορισµός µπορεί να είναι και µία θέση στην ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

86 7. ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ. ΕΝΤΟΛΕΣ ΙΑΧΕΙΡΙΣΗΣ BITS απευθείας RAM όταν εκτελείται η λογική πράξη µεταξύ της απευθείας RAM και του Α ή µιας σταθεράς. ANL A,#n AND µεταξύ του Α και της σταθεράς n ANL A,dir AND µεταξύ του Α και της απευθείας RAM µε δ/νση dir ANL A,Rn AND µεταξύ του Α και του καταχωρητή οµάδας Rn ANL A,@Ri AND µεταξύ του Α και της έµµεσης RAM µε δείκτη τον Ri ANL dir,a AND µεταξύ της απευθείας RAM µε δ/νση dir και του Α ANL dir,#n AND µεταξύ της απευθείας RAM µε δ/νση dir και της σταθεράς n ORL A,#n OR µεταξύ του Α και της σταθεράς n ORL A,dir OR µεταξύ του Α και της απευθείας RAM µε δ/νση dir ORL A,Rn OR µεταξύ του Α και του καταχωρητή οµάδας Rn ORL A,@Ri OR µεταξύ του Α και της έµµεσης RAM µε δείκτη τον Ri ORL dir,a OR µεταξύ της απευθείας RAM µε δ/νση dir και του Α ORL dir,#n OR µεταξύ της απευθείας RAM µε δ/νση dir και της σταθεράς n XRL A,#n XOR µεταξύ του Α και της σταθεράς n XRL A,dir XOR µεταξύ του Α και της απευθείας RAM µε δ/νση dir XRL A,Rn XOR µεταξύ του Α και του καταχωρητή οµάδας Rn XRL A,@Ri XOR µεταξύ του Α και της έµµεσης RAM µε δείκτη τον Ri XRL dir,a XOR µεταξύ της απευθείας RAM µε δ/νση dir και του Α XRL dir,#n XOR µεταξύ της απευθείας RAM µε δ/νση dir και της σταθεράς n CPL A Αντιστροφή του Α (συµπλήρωµα ως προς 1) CLR A Μηδενισµός του Α Πίνακας 7-2. Οι εντολές των λογικών πράξεων σε bytes Πρόβληµα 7.2 Γράψτε ένα πρόγραµµα που: - να κάνει 1 το bit 2ης θέσης µνήµης κωδ1 - να µηδενίζει τα 4 high bits της θέσης µνήµης κωδ1+1 - να αντιστρέφει τα 4 low bits της θέσης κωδ ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

87 7. ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ. ΕΝΤΟΛΕΣ ΙΑΧΕΙΡΙΣΗΣ BITS 7.4 Εντολές περιστροφής Οι εντολές αυτές ολισθαίνουν όλα τα bits του Α κατά µία θέση δεξιά ή αριστερά. Εάν το bit που περισσεύει συµπληρώσει το κενό που δηµιουργείται, πρόκειται για τις εντολές RL A (Rotate Left Accumulator) και RR A (Rotate Right Accumulator). Εάν το κενό που δηµιουργείται συµπληρωθεί από τη σηµαία του κρατούµενου και το bit που περισσεύει τοποθετηθεί στο κρατούµενο διαγράφοντας την τιµή που ήδη µπήκε στο κενό, πρόκειται για τις εντολές RLC A και RRC A (Rotate Left / Right through Carry Accumulator). Οι εντολές RL και RR είναι εντολές περιστροφής των 8 bits ενώ οι RLC και RRC είναι των 9 bits. Σχήµα 7-2. Εντολές περιστροφής Τέλος, η εντολή SWAP A ανταλλάσσει τα nibbles χαµηλής και υψηλής τάξης του συσσωρευτή. Εάν, π.χ., ο Α περιέχει 0F3h, µετά την εντολή SWAP A θα περιέχει 3Fh. Όπως θα θυµάστε από το δυαδικό σύστηµα, αριστερή ολίσθηση κατά 1 ενός αριθµού σηµαίνει πολλαπλασιασµό του αριθµού επί 2 αφού όλα τα βάρη των ψηφίων διπλασιάζονται. Επίσης, δεξιά ολίσθηση κατά 1 bit σηµαίνει διαίρεση του αριθµού διά 2. Πρόβληµα 7.3 Γράψτε ένα πρόγραµµα που να ταξιδεύει από δεξιά προς τα αριστερά έναν 1 στις γραµµές της θύρας P2 (κυλιόµενα φώτα). ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

88 7. ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ. ΕΝΤΟΛΕΣ ΙΑΧΕΙΡΙΣΗΣ BITS Πρόβληµα 7.4 Γράψτε ένα πρόγραµµα που να πολλαπλασιάζει επί 2 τα περιεχόµενα των θέσεων µνήµης από κωδ2 µέχρι κωδ2+15. Αγνοήστε την υπερχείλιση. 7.5 Εντολές ρύθµισης bits Οι εντολές αυτές ρυθµίζουν τη σηµαία του κρατούµενου ή τα bits της περιοχής της προσπελάσιµης κατά bit. Μπορούν δηλ. να τα κάνουν 1, 0 ή να τα αντιστρέψουν. CLR C ;Μηδένισε τη σηµαία του κρατούµενου. CLR b ;Μηδένισε το bit b. SETB C ;Κάνε ένα τη σηµαία του κρατούµενου. SETB b ;Κάνε ένα το bit b. CPL C ;Αντίστρεψε τη σηµαία του κρατούµενου. CPL b ;Αντίστρεψε το bit b. Πρόβληµα 7.5 Γράψτε ένα πρόγραµµα που: - να κάνει 1 το bit 0 του Α αν ο αριθµός που περιέχει ο R5 είναι περιττός. - να κάνει 1 το C αν ο αριθµός που περιέχει ο R5 είναι άρτιος. Υπόδειξη: άρτιος αριθµός είναι αυτός που έχει το low bit 0. Οι εντολές SETB RS1, CLR RS0 κάνουν ενεργή την οµάδα καταχωρητών 2. Οι εντολές που εξετάστηκαν στην ενότητα αυτή είναι οι εξής. BIT MANIPULATION AND LOGICAL OPERATIONS ΙΑΧΕΙΡΙΣΗ BITS ΚΑΙ ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ MNEMONIC Περιγραφή Byte Clock ANL A,Rn ANL A,direct AND Register to Accumulator AND του καταχωρητή στον συσσωρευτή AND direct byte to Accumulator AND του απευθείας byte στον Α ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

89 7. ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ. ΕΝΤΟΛΕΣ ΙΑΧΕΙΡΙΣΗΣ BITS ANL ANL A,#data ANL direct,a ANL direct,#data ANL C,bit ANL C,/bit CLR A CPL A CLR C CLR bit CPL C CPL bit MOV C,bit MOV bit,c ORL A,Rn ORL A,direct ORL A,@Ri ORL A,#data ORL direct,a ORL direct,#data ORL C,bit ORL C,/bit RL A RLCA RR A RRC A SWAP A SETB C SETB bit AND indirect RAM to Accumulator AND της έµµεσης RAM στον Α AND immediate data to Accumulator AND του άµεσου δεδοµένου στον Α AND Accumulator to direct byte AND του A στο απευθείας byte AND immediate data to direct byte AND του άµεσου δεδοµένου στο απευθείας byte AND direct bit to carry Κάνε AND του απευθείας bit στο κρατούµενο AND complement of direct bit to carry AND του συµπληρώµατος του απευθείας bit στο C Clear Accumulator Μηδένισε τον συσσωρευτή Complement Accumulator Αντίστρεψε τον συσσωρευτή Clear carry Μηδένισε το κρατούµενο Clear direct bit Μηδένισε το απευθείας bit Complement carry Αντίστρεψε το κρατούµενο Complement direct bit Αντίστρεψε το απευθείας bit Move direct bit to carry Μετάφερε το απευθείας bit στο κρατούµενο Move carry to direct bit Μετάφερε το κρατούµενο στο απευθείας bit OR register to Accumulator OR του καταχωρητή στον συσσωρευτή OR direct byte to Accumulator OR του απευθείας byte στον Α OR indirect RAM to Accumulator OR της έµµεσης RAM στον Α OR immediate data to Accumulator OR του άµεσου δεδοµένου στον Α OR Accumulator to direct byte OR του A στο απευθείας byte OR immediate data to direct byte OR του άµεσου δεδοµένου στο απευθείας byte OR direct bit to carry Κάνε OR του απευθείας bit στο κρατούµενο OR complement of direct bit to carry OR του συµπληρώµατος του απευθείας bit στο C Rotate Accumulator left Περίστρεψε τον συσσωρευτή αριστερά Rotate Accumulator left through the carry Περίστρεψε τον Α αριστερά µέσω του κρατούµενου Rotate Accumulator right Περίστρεψε τον συσσωρευτή δεξιά Rotate Accumulator right through the carry Περίστρεψε τον Α δεξιά µέσω του κρατούµενου Swap nibbles within the Accumulator Αντάλλαξε το nibbles στον συσσωρευτή Set carry Κάνε ένα το κρατούµενο Set direct bit Κάνε ένα το απευθείας bit ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

90 7. ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ. ΕΝΤΟΛΕΣ ΙΑΧΕΙΡΙΣΗΣ BITS XRL A,Rn XRL A,direct XRL XRL A,#data XRL direct,a XRL direct,#data X-OR register to Accumulator X-OR του καταχωρητή στον συσσωρευτή X-OR direct byte to Accumulator X-OR του απευθείας byte στον Α X-OR indirect RAM to Accumul. X-OR της έµµεσης RAM στον Α X-OR immediate data to Accumul. X-OR του άµεσου δεδοµένου στον Α X-OR Accumulator to direct byte X-OR του A στο απευθείας byte X-OR immediate data to direct byte X-OR του άµεσου δεδοµένου στο απευθείας byte ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

91 8 ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ Οι εταιρείες Philips, Intel, Dallas και Atmel είναι οι κυριότεροι κατασκευαστές του µικροελεγκτή 8051 και των παραγώγων του. Το πιο απλό µοντέλο της σειράς είναι ο 8031, που δεν έχει εσωτερική ROM, έχει 128 bytes RAM και µόνο δύο χρονιστές, τον Τ0 και τον Τ1. Σύνθετα µοντέλα έχουν ενσωµατωµένα πρωτόκολλα βιοµηχανικών δικτύων, µετατροπείς A/D και D/A, κλπ. Ανάλογα µε τη σύνθεση, ποικίλει η τιµή, η διαθεσιµότητα και η υποστήριξη του µικροελεγκτή. Την πρώτη φορά που βγαίνει στο εµπόριο ένας τύπος µικροελεγκτή, για λόγους κυρίως διαφηµιστικούς, η κατασκευάστρια εταιρεία ή άλλες συνεργαζόµενες εταιρείες τον συνοδεύουν µε πολύ φτηνά εργαλεία ανάπτυξης. Καθώς το προϊόν γνωρίζει ευρεία κυκλοφορία, τα εργαλεία αυτά είτε ακριβαίνουν, είτε σταµατούν να παράγονται. Άλλες εταιρείες, τότε, παράγουν και αυτές προϊόντα υποστήριξης, µε πολλαπλάσιο όµως κόστος. Στα επόµενα, θα εξηγήσου- µε τι είναι υποστήριξη και ποια είναι αυτά τα προϊόντα. 8.1 Επεκτάσεις του βασικού µοντέλου Επί πλέον µνήµη RAM Ο 8031 σχεδιάστηκε, αρχικά, να κάνει προσπέλαση σε 256 θέσεις εσωτερικής µνήµης, γι αυτό και οι εσωτερικές του διευθύνσεις είναι του 1 byte. Οι πρώτες 128 θέσεις προορίζονται για τη RAM και οι υπόλοιπες 128 για τους SFR. Στα περισσότερα µοντέλα υπάρχει επί πλέον RAM. Για λόγους συµβατότητας, διατηρήθηκαν οι 8µπιτες διευθύνσεις. Για να µπορεί να γίνει προσπέλαση στο επί πλέον τµήµα, χρησιµοποιούνται: α. ιαφορετικός τρόπος προσπέλασης (τον έχετε γνωρίσει στην παράγραφο 2.1 στη σελίδα 19). β. Κάποια bits σε καταχωρητή ελέγχου στην περιοχή SFR επιλέγουν το ενεργό τµήµα µνήµης. Τα bits αυτά µπορούν να θεωρηθούν ότι αποτελούν επί πλέον bits διεύθυνσης δεν είναι, όµως, τόσο εύχρηστα όσο µία µεγαλύτερη διεύθυνση αφού πρέπει να χειρίζονται ξεχωριστά. Η χρήση επί πλέον

92 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ bits σε κάποιον καταχωρητή ή σε κάποιες γραµµές για την αύξηση του µεγέθους της µνήµης που µπορεί να κάνει προσπέλαση η CPU λέγεται οµαδοποίηση µνήµης (memory banking). Η σηµαντικότερη µέριµνα των κατασκευαστών στις περιπτώσεις αυτές είναι η συµβατότητα µε το βασικό µοντέλο, τον Μπορεί, έτσι, κάποιος να χρησιµοποιεί τα ίδια εργαλεία και τα ίδια προγράµµατα από τη βιβλιοθήκη του. γ. Άλλη προσέγγιση στο πρόβληµα είναι µία σηµαία σε κάποιον SFR, που αλλάζει τον τρόπο χρήσης της εντολής MOVX. Εάν είναι 0, η εντολή αναφέρεται κανονικά στην εξωτερική RAM, εάν, όµως, γίνει 1, η εντολή αναφέρεται σε εσωτερική πρόσθετη RAM Επί πλέον χρονιστές Ο 8031 είναι εφοδιασµένος µε δύο χρονιστές. Πολλά άλλα µοντέλα έχουν κι άλλους, µε επί πλέον δυνατότητες, όπως: 1. υνατότητα αυτόµατης επαναφόρτωσης των 16 bits. Είναι δυνατό να ρυθµίζεται η περίοδος υπερχείλισης του χρονιστή µε 16µπιτη τιµή. 2. Πηγή χρονισµού της σειριακής θύρας, ώστε να παράγονται περισσότερα baud rates µε µεγαλύτερη ακρίβεια. 3. υνατότητα σύλληψης (capture), δηλαδή δυνατότητα αυτόµατης καταγραφής σε latch της τρέχουσας τιµής του χρονιστή, µε σηµατοδότηση από εξωτερικό γεγονός. Η δυνατότητα αυτή χρησιµεύει στη χρονοµέτρηση εξωτερικών γεγονότων, όπως µέτρηση περιόδου ή κύκλου εργασίας κυµατοµορφών. 4. Επιτήρηση (watchdog) της καλής λειτουργίας του µικροελεγκτή. Υπάρχουν περιπτώσεις, όπως ο έλεγχος ζωτικών λειτουργιών ασθενών σε ιατρικά µηχανήµατα, όπου δεν επιτρέπεται να λειτουργεί λανθασµένα ο µικροελεγκτής. Ο επιτηρητής ανιχνεύει τέτοιες καταστάσεις και κάνει reset στο µικροελεγκτή, για να επανέλθει σε κανονική λειτουργία ή να δώσει σήµα βλάβης. 5. Γρήγορη έξοδος. Μπορεί να ρυθµιστεί ο χρονιστής, ώστε, όταν φθάσει σε µία επιθυµητή τιµή, να αντιστραφεί µία ψηφιακή έξοδος. 6. Παραγωγή PWM. Το περιεχόµενο ενός καταχωρητή ελέγχου, σε συνδυασµό µε το χρονιστή, ρυθµίζουν τον κύκλο εργασίας σε παλµοσειρά 84 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

93 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ. σταθερής συχνότητας. υνατότητα χρήσιµη σε µετατροπή D/A µε χαµηλές απαιτήσεις εύρους ζώνης, όπως για παράδειγµα η οδήγηση DC κινητήρων. 7. Απαρίθµηση εξωτερικών γεγονότων. Ο χρονιστής παίρνει είσοδο από εξωτερικό ακροδέκτη θύρας, αντί για το ρολόι ή κάποια υποδιαίρεση αυτού Πρόσθετες σειριακές θύρες Ο στάνταρ 8051 έχει µία σειριακή ασύγχρονη θύρα. Σε µερικά µοντέλα, διατίθεται δεύτερη ασύγχρονη ή σύγχρονη σειριακή θύρα. Οι σειριακές µπορεί να είναι ή να µην είναι πλήρως αµφίδροµες (full duplex), δηλαδή να µπορούν ή όχι να εκπέµπουν και να δέχονται ταυτόχρονα. Σπανιότερα µοντέλα του 8051 έχουν διασύνδεση IIC (Inter-Integrated Circuit I/F) ή I 2 C, όπως έχει επικρατήσει. Η διασύνδεση αυτή χρησιµοποιείται κυρίως στην επικοινωνία των ολοκληρωµένων κυκλωµάτων µιας πλακέτας. Είναι σύγχρονη σειριακή, χρησιµοποιεί, δηλαδή, δύο καλώδια, ένα για δεδοµένα (SDA) και ένα για το ρολόι (SCL). Είναι ηµι-αµφίδροµη (half duplex), πολλαπλών master και πολλαπλών slave (multi-master, multi-slave). Αρκετά ολοκληρωµένα είναι εφοδιασµένα µε τέτοια διασύνδεση, όπως µνήµες, µετατροπείς A/D και D/A, drivers, ρολόγια πραγµατικού χρόνου, κλπ. Το πλεονέκτηµα είναι ότι, µε µόνο δύο γραµµές, data και clock, κάνετε διασύνδεση πολλών περιφερειακών συσκευών. Μπορείτε να κάνετε µε πρόγραµµα διασύνδεση I 2 C, δεσµεύοντας δύο κοινές ψηφιακές γραµµές, αλλά το πρόγραµµα απασχολεί πολύ χρόνο από τη CPU. Μερικά µοντέλα έχουν ενσωµατωµένο το απαραίτητο υλικό για την υλοποίηση του πρωτοκόλλου I 2 C σε επίπεδο bit, ενώ λιγότερα το υλοποιούν σε επίπεδο byte Αναλογικές θύρες Η µετατροπή αναλογικών σηµάτων είναι πολύ συνηθισµένη διαδικασία στον έλεγχο µε µικροελεγκτές και πολλά µοντέλα έχουν ενσωµατωµένους µετατροπείς A/D και D/A. Συνήθως, οι µετατροπείς είναι των 8 bits, υπάρχουν, όµως, και των 12. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

94 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ Μερικοί µικροελεγκτές περιέχουν έναν µετατροπέα D/A και ένα συγκριτή. Εφαρµόζοντας στις εισόδους του συγκριτή την έξοδο του D/A και ένα εξωτερικό αναλογικό σήµα, µπορούµε, µέσα από δικό µας πρόγραµµα, µε τη µέθοδο των διαδοχικών προσεγγίσεων, να µετατρέψουµε την αναλογική είσοδο σε αριθµό. Η διαδικασία αυτή είναι χρονοβόρα, και µας δίνει χαµηλούς ρυθµούς µετατροπής, αλλά έχει και σχετικά χαµηλό κόστος. Η έξοδος PWM υπάρχει σε πολλές βελτιώσεις του βασικού µοντέλου. Η έξοδος PWM είναι µία παλµοσειρά σταθερής συχνότητας, της οποίας ο κύκλος εργασίας (duty cycle = t ON / T * 100) ρυθµίζεται από το περιεχόµενο ενός καταχωρητή ελέγχου. Για τη µετατροπή του σήµατος αυτού σε συνεχή τάση, απαιτείται ένα κατωπερατό φίλτρο Μνήµη ROM Εάν ο µικροελεγκτής περιέχει εσωτερική ROM, τότε εκτελεί κώδικα από εκεί και, όταν γίνει διακλάδωση σε διεύθυνση έξω από την εσωτερική, τότε αναφέρεται στην εξωτερική ROM. Η εσωτερική ROM έχει µεγέθη συνήθως πολλαπλάσια των 4Κ και µπορεί να είναι OTP ROM (One Time Programmable = προγραµµατιζόµενη µία φορά) ή EPROM ή flash EPROM. Οι µικροελεγκτές χωρίς εσωτερική ROM έχουν ονοµασία που αρχίζει από 80 (π.χ. 8051) και χρησιµοποιούνται υποχρεωτικά µε εξωτερική ROM. Οι µικροελεγκτές µε OTP ROM έχουν ονοµασία που αρχίζει από 83 (π.χ. 8351) και προορίζονται κυρίως για µαζική παραγωγή, µια και δεν υπάρχει δυνατότητα διόρθωσης του προγράµµατος που περιέχουν. Οι µικροελεγκτές µε EPROM (π.χ. 8751) διαθέτουν ένα παραθυράκι, από όπου φωτίζονται µε υπεριώδη ακτινοβολία συγκεκριµένου µήκους κύµατος για να σβηστούν. Ο χρόνος διαγραφής ποικίλλει από 3 µέχρι 45 λεπτά, ανάλογα µε την τεχνολογία της µνήµης. Οι µικροελεγκτές µε µνήµη flash EPROM (π.χ. 8951) δεν διαθέτουν παράθυρο, επειδή η µνήµη flash σβήνεται µε κατάλληλο χειρισµό των ακροδεκτών της (προγραµµατισµός) µέσα σε δευτερόλεπτα. Το κόστος των µνηµών flash έχει πέσει και, επιπλέον, δεν απαιτούνται ειδικές συσκευές διαγραφής και εγγραφής. Έτσι, αυτές έχουν αντικαταστήσει τις υπόλοιπες µνήµες ROM. Επίσης, επειδή µπορούν να διαγραφούν και να 86 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

95 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ. ξαναγραφούν από πρόγραµµα, µερικά µοντέλα εµπεριέχουν το πρόγραµµα αυτό σε ξεχωριστή ενσωµατωµένη ROM, που αναλαµβάνει τον έλεγχο µε ειδικό χειρισµό, κατά τη διάρκεια του reset. Οι µικροελεγκτές αυτοί λέγονται ISP (In System Programmable) και µπορούν να δέχονται κώδικα µέσω της ενσωµατωµένης σειριακής θύρας και να το γράφουν στη flash EPROM. Στο επόµενο κανονικό reset, αναλαµβάνει ο κώδικας που έχει κατεβάσει ο χρήστης Μικρότερα µοντέλα Σε µικρές εφαρµογές, όταν δεν αξιοποιούνται όλες οι δυνατότητες του µικροελεγκτή, είναι σκόπιµο να χρησιµοποιούνται µικρότερα µοντέλα µε πυρήνα τον Οι µικροελεγκτές αυτοί έχουν, συνήθως, λιγότερους ακροδέκτες, άρα έχουν και µικρότερο µέγεθος και, κυρίως, χαµηλότερο κόστος. Συναντάµε, έτσι, µικροελεγκτές µε πυρήνα 8051, που έχουν µόνο δύο θύρες, δεν µπορούν να δεχτούν εξωτερική µνήµη, έχουν µόνο 64 bytes RAM, µόνον ένα χρονιστή, κλπ Μικροελεγκτές ειδικών προδιαγραφών Μετά τη µεγάλη διάδοση που γνώρισε ο 8051, κυρίως στην Ευρώπη, κυκλοφόρησαν στην αγορά ολοκληρωµένα µε βελτιωµένες προδιαγραφές. Χαµηλής τάσης. Με τάση λειτουργίας από 2,7 V και πάνω, είναι κατάλληλοι για φορητές συσκευές που τροφοδοτούνται από µπαταρία. Υψηλής συχνότητας. Ο κλασικός 8051 λειτουργεί µε ρολόι συχνότητας 12 MHz και έχει κύκλο 12 καταστάσεων, άρα µικρότερη εντολή 1 µs. Επεκτάσεις του 8051 δέχονται ρολόι µεγαλύτερης συχνότητας ή έχουν κύκλο λιγότερων καταστάσεων, τρέχουν εποµένως πολύ πιο γρήγορα. Βελτιωµένης ηλεκτροµαγνητικής συµβατότητας (improved EMC). Ο κλασικός 8051 παράγει, κατά τη λειτουργία του, ηλεκτροµαγνητικό θόρυβο που µπορεί να επηρεάσει τη λειτουργία άλλων συσκευών που λειτουργούν κοντά του. Ο θόρυβος αυτός, που προέρχεται κυρίως από τις απότοµες µεταβολές της στάθµης του σήµατος ALE, είναι πέρα από τις προδιαγραφές της Ευρωπαϊκής Κοινότητας και συσκευές µε τον 8051 δεν περνούν τον έλεγχο ηλεκτροµαγνητικής συµβατότητας (EMC = Electro-Magnetic Compatibility). Για το ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

96 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ λόγο αυτό, κυκλοφορούν επεκτάσεις του 8051 µε χαµηλή εκποµπή ηλεκτρο- µαγνητικού θορύβου ΧΑ Ο 8051 extended Architecture είναι µικροελεγκτής βασισµένος στον 8051 αλλά είναι 16µπιτος και µπορεί να προσπελάσει πολύ µεγαλύτερη µνήµη. Αν και ακριβότερος ως ολοκληρωµένο, έχει φθηνά εργαλεία ανάπτυξης επειδή προωθείται από τη Philips. Ο είναι 16µπιτο παράγωγο του 8051 από την Intel που δε γνώρισε επιτυχία. 8.2 Συστήµατα ανάπτυξης Πριν εξηγήσουµε τι είναι συστήµατα ανάπτυξης (development systems), ας θυµηθούµε τα είδη µνήµης που µπορεί να προσπελάσει ο Μνήµη ROM, εσωτερική ή εξωτερική. Από τη µνήµη αυτή, ο µικροελεγκτής ανακαλεί και εκτελεί κώδικα. Η ενεργοποίηση της εξωτερικής ROM γίνεται από τον ακροδέκτη!psen. O 8051 δεν µπορεί να γράψει στη µνήµη αυτή, ενώ το διάβασµα δεδοµένων γίνεται µε ειδική εντολή, την MOVC, που ενεργοποιεί επίσης το!psen. Εσωτερική µνήµη RAM. Στη µνήµη αυτή και γράφει και διαβάζει µε διευθύνσεις των 8 bits. Από τη µνήµη αυτή δεν µπορεί να εκτελέσει κώδικα. Εξωτερική RAM. Και γράφει και διαβάζει µε διευθύνσεις των 16 bits. Για να µπορεί να γίνεται διάκριση µεταξύ εξωτερικής και εσωτερικής µνήµης RAM, η προσπέλαση γίνεται µε ειδική εντολή, την MOVX, και µόνον µε έµµεση προσπέλαση µέσω του DPTR. Από την εξωτερική RAM δεν µπορεί να εκτελέσει κώδικα. Η ενεργοποίηση της εξωτερικής RAM γίνεται µέσω των ακροδεκτών!rd και!wr. Ίσως να σας έχει γεννηθεί η απορία: πώς είναι δυνατό να γράφετε το πρόγραµµα στη µνήµη ROM, αφού από τη µνήµη ROM µόνον διαβάζετε; Στη φάση της παραγωγής ενός είδους µε µικροελεγκτή, όπου το πρόγραµ- µα είναι έτοιµο, η διαδικασία είναι σχετικά απλή. Με ειδική συσκευή, τον προγραµµατιστή EPROM, γράφεται ο κώδικας του προγράµµατος, είτε στην εσω- 88 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

97 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ. τερική ROM του µικροελεγκτή είτε στην εξωτερική ROM. Κατόπιν, ο µικροελεγκτής ή η εξωτερική ROM τοποθετείται στη συσκευή, που είναι έτοιµη να δουλέψει. Η διαδικασία µεταφοράς του κώδικα στην ROM λέγεται προγραµ- µατισµός της µνήµης, αλλά βέβαια δεν έχει καµία σχέση µε τη σύνταξη προγράµµατος. Προγραµµατιζόµενα λέµε τα ολοκληρωµένα, στα οποία ο χρήστης µπορεί να ρυθµίσει τον τρόπο µε τον οποίο θα εργαστούν. Το ίδιο, φυσικά, µπορούµε να κάνουµε και στη φάση της ανάπτυξης του προγράµµατος, όταν, γράφουµε, δοκιµάζουµε και διορθώνουµε το πρόγραµ- µα. Μπορούµε δηλαδή να σβήνουµε τα περιεχόµενα της ROM, και να την προγραµµατίζουµε και πάλι. Επειδή, όµως, η διαδικασία διαγραφής απαιτεί ειδική συσκευή, το σβηστήρι EPROM (EPROM eraser), και διαρκεί 3 µέχρι 45 λεπτά, δεν είναι καθόλου πρακτικό να ακολουθούµε την τακτική αυτή. Στη διάρκεια µιας µέρας, θα χρειαστεί να διορθώσουµε και να δοκιµάσουµε πολλές φορές το πρόγραµµά µας. Εάν πρέπει, κάθε φορά, να σβήνουµε και να αναπρογραµµατίζουµε την ROM, τότε θα καθυστερούµε πάρα πολύ. Για την αντιµετώπιση του προβλήµατος αυτού, υπάρχουν διάφορες λύσεις που θα περιγραφούν στη συνέχεια Εξοµοιωτής ROM Εάν η κατασκευή µας έχει τον κώδικα σε εξωτερική ROM, τότε µπορούµε αντί να βάλουµε ROM να βάλουµε µία συσκευή που εξοµοιώνει τη ROM (EPROM emulator). Η συσκευή αυτή συµπεριφέρεται στην κατασκευή µας σαν πραγµατική ROM, αλλά συνδέεται µε τον υπολογιστή µέσω παράλληλου ή σειριακού καλωδίου. Από το καλώδιο αυτό, µεταφέρουµε τον κώδικα στη συσκευή και τον δοκιµάζουµε στην κατασκευή µας (βλ. επόµενο σχήµα). Η λύση του εξοµοιωτή ROM είναι σχετικά φθηνή, αλλά δεν µπορεί να εφαρµοστεί στις περιπτώσεις, όπου ο κώδικας είναι τοποθετηµένος στην εσωτερική ROM. Οι περιπτώσεις αυτές είναι και οι περισσότερες. Το καλό µε τον EPROM emulator είναι ότι είναι ανεξάρτητος από τον µικροελεγκτή. Μπορεί να χρησιµοποιηθεί µε οποιονδήποτε µικροελεγκτή, αρκεί να εκτελεί κώδικα από εξωτερική ROM. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

98 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ Σχήµα 8-1. Ανάπτυξη µε εξοµοιωτή EPROM Εξοµοιωτής εντός κυκλώµατος (ICE) Ο In Circuit Emulator (εξοµοιωτής εντός κυκλώµατος) εξοµοιώνει, όχι µόνον τη ROM, αλλά ολόκληρο τον µικροελεγκτή, είτε έχει εσωτερική ROM είτε όχι. Βυσµατώνεται στην πλακέτα χρήστη στη θέση του µικροελεγκτή. Σχήµα 8-2. Ανάπτυξη µε ICE Το κόστος του ICE είναι πολλαπλάσιο, τυπικές τιµές είναι από 300 µέχρι Έχουµε, όµως, στη διάθεσή µας όλα τα εργαλεία ανάπτυξης. Συνήθως, ο ICE αποτελείται από δύο τµήµατα, µία βασική πλακέτα, που βυσµατώνεται στη µητρική πλακέτα του υπολογιστή, και ένα POD, προσαρµοστής του συγκεκριµένου µικροελεγκτή που εξοµοιώνεται. Να σηµειώσετε εδώ 90 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

99 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ. ότι το όλο σύστηµα µπορεί και εξοµοιώνει µόνον ένα συγκεκριµένο τύπο µικροελεγκτή. Για διαφορετικό τύπο µικροελεγκτή της ίδιας οικογένειας αλλάζετε POD, ενώ για διαφορετική οικογένεια αλλάζετε ICE. Άλλοι τύποι ICE περιέχονται σε ιδιαίτερο κουτί, µε δικό τους τροφοδοτικό, και επικοινωνούν µε τον υπολογιστή µε σειριακό καλώδιο. Αυτοί οι τύποι, συνήθως, είναι ακριβότεροι και µπορούν και εξοµοιώνουν τον µικροελεγκτή, όχι µόνο στην λογική του συµπεριφορά, αλλά και στην ηλεκτρική του. Έχει, δηλαδή, ο ICE την ίδια κατανάλωση ρεύµατος, την ίδια σύνθετη αντίσταση ακροδεκτών κλπ, µε τον µικροελεγκτή που εξοµοιώνει. Ο ICE συνοδεύεται µε το απαραίτητο λογισµικό για τη µεταφορά του κώδικα και την εκτέλεσή του. Συνήθως συνοδεύεται από assembler και C compiler. Τα επί πλέον εργαλεία που µας διατίθενται στην ανάπτυξη προγραµµάτων (developing) είναι: Βηµατική εκτέλεση του προγράµµατος. Παρακολούθηση της µνήµης και των καταχωρητών του µικροελεγκτή. Παύσεις του προγράµµατος όταν ικανοποιηθεί κάποια συνθήκη, π.χ. αν µία µεταβλητή πάρει συγκεκριµένη τιµή ή αν γίνει εγγραφή σε συγκεκριµένη θέση µνήµης. Εάν ο ICE διαθέτει και πλακέτα ιχνηλάτησης πραγµατικού χρόνου (Real Time Trace Board), µπορεί και καταγράφει σε πραγµατικό χρόνο τις εντολές από τις οποίες πέρασε το πρόγραµµα. Τη µνήµη ιχνηλάτησης µπορούµε να τη δούµε µετά από παύση του προγράµµατος. Ο ICE είναι το στάνταρ εργαλείο ανάπτυξης για επαγγελµατική χρήση Πλακέτες αξιολόγησης (EVB) Τα Evaluation Boards είναι έτοιµες πλακέτες µε τον µικροελεγκτή, περιέχουν ROM, RAM, σειριακή σύνδεση και ίσως µερικά περιφερειακά. εν διαθέτουν ολόκληρο τον µικροελεγκτή για αξιοποίηση από το χρήστη Μερικά από τα µέρη του είναι δεσµευµένα για τη λειτουργία του ίδιου του EVB. Με κατάλληλη διασύνδεση των σηµάτων!psen,!rd και!wr του µικροελεγκτή είναι δυνατό να εκτελείται ο κώδικας και από τη µνήµη RAM. Όµως, δεν µπορούµε πια να έχουµε 64KBytes ROM και 64KBytes RAM, αλλά µόνον σύνολο 64KBytes ROM και RAM. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

100 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ Με τις πλακέτες αξιολόγησης µπορεί κάποιος και αξιολογεί έναν µικροελεγκτή όταν κυκλοφορεί για πρώτη φορά χωρίς να χρειάζεται να κατασκευάσει πλακέτα. Τα EVB χρησιµοποιούνται στην εκµάθηση του µικροελεγκτή και λιγότερο σε πρακτικές εφαρµογές ISP Επειδή το κόστος µιας σειριακής, ακόµη και αν δεν τη χρειάζεστε στην πλακέτα σας, είναι µηδαµινό, µπορούµε να θεωρούµε ότι όλες οι πλακέτες έχουν σειριακή διασύνδεση. Κάποιοι µικροελεγκτές έχουν τη δυνατότητα να αυτοπρογραµµατίζονται από τη σειριακή θύρα. Εάν, κατά τη διάρκεια του reset, έχουν έναν ακροδέκτη σε συγκεκριµένη στάθµη, αναλαµβάνει το πρόγραµµα που έχει ενσωµατώσει η εταιρεία στον µικροελεγκτή. Αυτό το πρόγραµµα δέχεται από τη σειριακή θύρα τον κώδικα και τον γράφει στην flash EPROM του µικροελεγκτή. Το πρόγραµµα από τη µεριά του υπολογιστή που διαγράφει και ξαναγράφει (ξαναπρογραµµατίζει) τον µικροελεγκτή διατίθεται συνήθως από τις εταιρείες µέσα από την ιστοσελίδα τους. Οι µικροελεγκτές αυτοί επειδή µπορούν και προγραµµατίζονται ενώ είναι τοποθετηµένοι στο σύστηµά µας λέγονται προγραµµατιζόµενοι εντός συστή- µατος (In System Programmable). Είναι ο πιο φθηνός τρόπος να κάνει κανείς ανάπτυξη προγράµµατος αν πρόκειται να το κάνει µόνο µία φορά. Οι µικροελεγκτές αυτοί δεν είναι κατάλληλοι για µαζική παραγωγή, επειδή είναι ακριβότεροι από τους κοινούς Προγράµµατα εκσφαλµάτωσης Τα προγράµµατα αυτά κάνουν δύο βασικές εργασίες. Πρώτο, εξοµοιώνουν στον υπολογιστή τον µικροελεγκτή και παρουσιάζουν σε γραφικό περιβάλλον το εσωτερικό του. εύτερο, µεταφέρουν το πρόγραµµα σε ICE ή EVB και παρέχουν τα εργαλεία εκσφαλµάτωσης που έχουµε περιγράψει (βλ. σελ. 91). Ένα τέτοιο πρόγραµµα είναι και το µvision που τρέχετε στο εργαστήριο. Τα προγράµµατα αυτά, συνήθως, παρέχουν ένα ολοκληρωµένο περιβάλλον ανάπτυξης προγραµµάτων και, για το λόγο αυτό, συνοδεύονται από assembler και C compiler. Είναι σχετικά ακριβά, αλλά κυκλοφορούν δωρεάν εκδόσεις επίδειξης (demo versions) µε περιορισµούς, π.χ. µέχρι 2 ΚBytes κώδικα, χωρίς αριθµητική κινητής υποδιαστολής, κλπ. 92 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

101 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ Λογικός αναλυτής Όσο απαραίτητος είναι ο παλµογράφος σε αναλογικά κυκλώµατα, τόσο είναι ο λογικός αναλυτής (logic analyzer) στα ψηφιακά. Ο λογικός αναλυτής έχει δύο βασικές διαφορές από τον παλµογράφο. 1. εν δείχνει τη στάθµη της τάσης, αλλά µόνο τη λογική της τιµή, 0 ή 1. Τα κατώφλια των λογικών στάθµεων µπορούν να ρυθµίζονται, ώστε ο λογικός αναλυτής να είναι κατάλληλος για κάθε λογική οικογένεια. 2. εν έχει 2 αλλά πολύ περισσότερα κανάλια (πάνω από 32). Συνδέοντας το λογικό αναλυτή µε τους διαδρόµους διευθύνσεων και δεδο- µένων, δίνουµε τις συνθήκες έναρξης της καταγραφής και παρακολουθούµε το σύστηµα για τον εντοπισµό σφαλµάτων στο λογισµικό, αλλά πολύ περισσότερο στο υλικό µέρος της κατασκευής µας. Πρόβληµα 8.1 Πραγµατοποιήστε το κύκλωµα ISP του επόµενου σχήµατος στο ράστερ. Γράψτε ένα πρόγραµµα που να αυξάνει το περιεχόµενο της θύρας Ρ0 κατά 1. Μεταφράστε το πρόγραµµα, και κατεβάστε τον κώδικα στον µικροελεγκτή µε τη βοήθεια του προγράµµατος FLIP. Να θυµάστε ότι η θύρα Ρ0 δε διαθέτει εσωτερικές αντιστάσεις pull-up και δεν µπορεί να δώσει έξοδο +5V. Στο συγκεκριµένο πρόβληµα µας αρκεί το γεγονός ότι κάθε γραµµή της θύρας Ρ0 δίνει γείωση και ανάβει το LED ή µένει ασύνδετη και σβήνει. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

102 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ +5V 100n/mul S2 C2 33p +5V + C3 1µ Beeper 12 MHz Y1 RXD TXD C1 33p e1 e U1 e4 Vagnd P4.0 e3 Varef P P1.0 Vcc 39 P1.1 P P1.2 P P1.3 P P1.4 P P1.5 P P1.6 P P1.7 P RST P0.7 P3.0 EA P3.1 ALE P3.2 PSEN P3.3 P P3.4 P P3.5 P P3.6 P P3.7 P XTAL2 P XTAL1 P Vss P2.0 AT89C51AC2ADPT R1 R8 +5V C11 Vin C x 820 D8 D1 S1 +5V LED high effic κλειστό=program ανοικτό=run U Vin gnd 2 Vout +5V 3 C10 47µ/25V 100n/mul + 1µ +5V +5V RXD TXD C6 1µ + C8 1µ R1 OUT R2 OUT T1 IN T2 IN C1+ C1 - C4 2 V+ 6 V- VCC 16 GND 15 + C5 1µ U2 MAX232 R1 IN 13 R2 IN 8 14 T1 OUT 7 T2 OUT 4 C2+ 5 C2 - C7 1µ J1 D9-F Σχήµα 8-3. Το κύκλωµα ISP 94 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

103 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ. Για την πραγµατοποίηση της άσκησης αυτής θα χρειαστείτε τα εξής υλικά: 1. Για την πραγµατοποίηση του κυκλώµατος. α/α Περιγραφή Αναφ. Ποσ Τιµή µονάδ. Τιµή 1 Μικροελεγκτής AT89C51AC2 U1 1 8,00 8,00 2 Adaptor 8051-PLCC44-DIP ,00 12,00 3 Κρύσταλλος 12 MHz Y1 1 0,42 0,42 4 Πυκνωτές 33 p C1, C2 2 0,01 0,02 5 Μπουτόν µικρό για ράστερ (τακτ) S2 1 0,07 0,07 6 Πυκνωτής ηλεκτρολυτικός 1 µf/ 25 V C3...C8 6 0,02 0,12 7 MAX232 U2 1 0,70 0,70 8 Πιεζοκρυσταλλικός beeper Beeper 1 1,12 1,12 9 Βύσµα D9-F για πλακέτα J1 1 0,43 0,43 10 ιακόπτης συρταρωτός για ράστερ S1 1 0,15 0,15 11 Αντίσταση 820 Ω R1...R8 8 0,005 0,04 12 LED µικρά high efficiency D1...D8 8 0,02 0,16 13 Σταθεροποιητής 7805 U3 1 0,19 0,19 14 Πυκνωτής 47µF/25V C11 1 0,03 0,03 15 Πυκνωτής 100 n / multilayer C9, C10 2 0,05 0,10 ΣΥΝΟΛΟ 23,55 2. Για το σειριακό καλώδιο. α/α Περιγραφή Ποσ Τιµή µον. Τιµή 1 Καλωδιοταινία 10 αγωγών 1,5m 0,26 0,39 2 Πρεσαριστό βύσµα D9 για καλωδιοταινία αρσενικό 1 0,70 0,70 3 Πρεσαριστό βύσµα D9 για καλωδιοταινία θηλυκό 1 0,65 0,65 ΣΥΝΟΛΟ 1,74 Οι παραπάνω τιµές είναι ενδεικτικές. 3. Πρόγραµµα. Το πρόγραµµα FLIP από ή από το CD που διανέµει το εργαστήριο στο φάκελο \Debuggers\ISP\Atmel. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

104 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ 4. Γενικός εργαστηριακός εξοπλισµός: ράστερ, τροφοδοτικό περίπου 12V/0.5A ή µικρή µπαταρία 9V, πλαγιοκόφτης, µυτοτσίµπιδο, καλώδιο. Παρατηρήσεις: 1. Από το βύσµα J1 κόψτε την τετράδα των ακροδεκτών. Η πεντάδα που αποµένει µπορεί να µπει στο ράστερ, αφού ισιώσετε τους ακροδέκτες. Οι ακροδέκτες που χρειάζονται είναι οι 2, 3 και 5, όπως φαίνεται και στο κυκλωµατικό διάγραµµα (schematic). 2. Η καλωδιοταινία έχει 10 αγωγούς, έναν παραπάνω από όσους χρειάζεστε. Αφαιρέστε τον ένα αγωγό, αλλά όχι τον κόκκινο που σηµαδεύει τον ακροδέκτη 1 του βύσµατος. 3. Για να περάσετε τα πρεσαριστά βύσµατα στην καλωδιοταινία θα χρειαστείτε µία µικρή µόρσα (ή ένα µικρό σφυράκι). Αν δεν έχετε ξαναπεράσει τέτοια βύσµατα, πάρτε και µερικά εφεδρικά. 4. Συναρµολογήστε στο ράστερ τα υλικά µε προσοχή. Μην βιάζεστε, επειδή τυχόν λάθος συνδέσεις θα έχουν σαν αποτέλεσµα την καταστροφή των υλικών. Ελέγξτε άλλη µία φορά το κύκλωµα πριν δώσετε τάση για πρώτη φορά. Αν κάποιο ολοκληρωµένο γίνει τόσο καυτό ώστε να µην το αντέχει το χέρι, σηµαίνει ότι έχει καταστραφεί (εκτός από τον σταθεροποιητή 7805 που υπερθερµαίνεται σε κανονική λειτουργία και έχει θερµική προστασία). 5. Ο γενικός εργαστηριακός εξοπλισµός διατίθεται για χρήση από τους σπουδαστές, µετά από συνεννόηση µε τους υπεύθυνους του εργαστηρίου. Η όλη διαδικασία της άσκησης έχει ως εξής: 1. Αναγνωρίστε τα υλικά του κυκλώµατος. 2. Συναρµολογήστε το κύκλωµα στο ράστερ. 3. Συνδέστε το σειριακό καλώδιο στο βύσµα J1 και σε µία σειριακή θύρα του υπολογιστή. 4. Γράψτε και µεταφράστε το πρόγραµµα. 5. Τρέξτε το πρόγραµµα FLIP για τον προγραµµατισµό του µικροελεγκτή. Οδηγίες για τo πρόγραµµα αυτό ακολουθούν στη συνέχεια. 96 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

105 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ Οδηγίες χρήσης του προγράµµατος FLIP 1. Τρέξτε το πρόγραµµα FLIP. Εµφανίζεται η επόµενη οθόνη. 2. Επιλέξτε από το µενού <Device> - <Select> (ή κάντε κλικ στο ) και στο παράθυρο που θα εµφανιστεί επιλέξτε τον µικροελεγκτή AT89C51AC2. 3. Επιλέξτε από το µενού <Settings> - <Communications> - <RS232> (ή κάντε κλικ στο ). Στο παράθυρο που θα εµφανιστεί επιλέξτε τη σειριακή θύρα στην οποία συνδέσατε το καλώδιο και την επιθυµητή ταχύτητα επικοινωνίας. Για να βρείτε τη µέγιστη κατάλληλη ταχύτητα, πειραµατιστείτε µέχρι το τέλος του βήµατος αυτού στα bps και µετά, εάν έχετε επιτυχία, δοκιµάστε σε υψηλότερες ταχύτητες ανεβαίνοντας µία κλίµακα κάθε φορά. ώστε γείωση στον ακροδέκτη!psen µε τον διακόπτη S1 για να επιλέξετε λειτουργία προγραµµατισµού. ώστε για λίγο υψηλή τάση στον ακροδέκτη Reset µε το µπουτόν S2 για να κάνετε reset και να ενεργοποιηθεί η λειτουργία προγραµµατισµού. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

106 8. ΤΥΠΟΙ ΜΙΚΡΟΕΛΕΓΚΤΩΝ & ΣΥΣΤΗΜΑΤΑ ΑΝΑΠΤΥΞΗΣ Επιλέξτε Connect. Θα πρέπει να εµφανιστούν στο δεξί µέρος του παράθυρου στη θέση των Χ, οι πληροφορίες που θα συλλεχθούν από το ολοκληρω- µένο. Μην κλείνετε το παράθυρο RS Πατήστε <File> - <Load> (ή κάντε κλικ στο εικονίδιο ) και επιλέξτε το αρχείο.hex µε τον κώδικά σας. Περιµένετε µέχρι να εµφανιστεί «HEX file όνοµα_αρχείου.hex loading done». Αν θέλετε, ελέγξτε τον κώδικα που φορτώσατε µε την επιλογή <Buffer> - <Edit>. Μην κάνετε καµία αλλαγή απευθείας στον κώδικα αν δεν ξέρετε πολύ καλά τι κάνετε. Σηµείωση: αν εµφανιστεί µήνυµα λάθους ότι το αρχείο hex δεν µπορεί να φορτωθεί, τοποθετήστε το αρχείο σε ένα φάκελο που να µην έχει στη διαδροµή του ονόµατός του ελληνικούς χαρακτήρες (όπως: Τα έγγραφά µου). Μια καλή ιδέα είναι να δηµιουργείτε όλα τα project σε ένα φάκελο C:\ Γράψτε τον κώδικα στον µικροελεγκτή: ενεργοποιήστε το τετραγωνάκι <Program> και πατήστε το µπουτόν <Run>. Περιµένετε µέχρι να ολοκληρωθεί ο προγραµµατισµός. Στη flash EPROM που περιέχει ο µικροελεγκτής δεν είναι απαραίτητο να διαγράφεται µία θέση πριν προγραµµατιστεί µε νέο περιεχόµενο. Επίσης, όσο είναι καινούργιος ο µικροελεγκτής, δεν είναι απαραίτητη η επαλήθευση (verify). Αφήστε απενεργοποιηµένη την επαλήθευση στην αρχή για να κερδίζετε χρόνο. 6. Βγάλτε τη γείωση από τον ακροδέκτη!psen (διακόπτης S1) και κάντε Reset (µπουτόν S2). Θα πρέπει να δείτε τον κώδικά σας να τρέχει. Αν θέλετε να κάνετε κάποια διόρθωση στο πρόγραµµα, παράγετε το νέο αρχείο.hex, βάλτε τον µικροελεγκτή σε κατάσταση προγραµµατισµού, κάντε κλικ στο <Sync> στο παράθυρο RS232 και επαναλάβετε τη διαδικασία από το βήµα ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

107 9 ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) Η πρώτη ανάκληση εντολής µετά το reset γίνεται από τον 8051, από τη θέση µνήµης µε διεύθυνση 0000h. Εκεί θα πρέπει να υπάρχει ROM, είτε εξωτερική είτε ενσωµατωµένη, ώστε να δώσει την πρώτη εντολή του προγράµ- µατος. Επειδή οι αµέσως επόµενες διευθύνσεις µετά την 0000h είναι απαραίτητες για τη φύλαξη των διανυσµάτων διακοπής, η πρώτη εντολή που µπαίνει στη ROM στη διεύθυνση 0000h είναι µία εντολή διακλάδωσης στη διεύθυνση 0100h, µετά από τα διανύσµατα διακοπής. Αν δεν χρησιµοποιούνται διακοπές, τότε το πρόγραµµα µπορεί να γραφεί από τη διεύθυνση 0 και µετά, συνεχόµενα. Πίνακας 9-1. Ο χάρτης της µνήµης προγράµµατος

108 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) Εάν ο µικροελεγκτής έχει ενσωµατωµένα περισσότερα περιφερειακά, τότε τα διανύσµατα διακοπής καταλαµβάνουν περισσότερο χώρο, και δεν τελειώνουν στη διεύθυνση 003Ah, όπως στο προηγούµενο σχήµα. Μέχρις εδώ, εξαντλήθηκε το ρεπερτόριο εντολών του Στο κεφάλαιο αυτό θα αναπτυχθούν τα εργαλεία που διαθέτει ο debugger του µvision για την εκσφαλµάτωση των προγραµµάτων. Κανένα πρόγραµµα δεν τρέχει χωρίς λάθη αµέσως µετά τη συγγραφή του. Την πρώτη φορά που θα µεταφραστεί, θα εµφανιστούν συντακτικά λάθη, που είναι εύκολο να διορθωθούν, επειδή υποδεικνύονται από τον ίδιο τον assembler. Τα δυσκολότερα όµως λάθη στην ανίχνευση και στη διόρθωση είναι τα λογικά. Για τα λάθη αυτά χρειάζονται επί πλέον εργαλεία. Η διαδικασία διόρθωσης των σφαλµάτων σε ένα πρόγραµµα λέγεται εκσφαλµάτωση Για την εκσφαλµάτωση ενός προγράµµατος είναι απαραίτητο: Να µπορείτε να διακόψετε το πρόγραµµα, για να ελέγξετε τα περιεχόµενα των καταχωρητών και της µνήµης. Να παρακολουθείτε τη ροή του προγράµµατος, δηλαδή από ποιες εντολές πέρασε το πρόγραµµα. Να παρακολουθείτε τις µεταβλητές του προγράµµατος. 9.1 ΕΚΤΕΛΕΣΗ ΣΕ ΠΛΗΡΗ ΤΑΧΥΤΗΤΑ Υπάρχουν τρεις τρόποι εκτέλεσης του προγράµµατος σε πλήρη ταχύτητα. <Run> <Run to cursor line> <StepOut> Εκτελείται το πρόγραµµα σε πλήρη ταχύτητα. Εκτελείται το πρόγραµµα σε πλήρη ταχύτητα, µέχρι να φτάσει στην εντολή που έχετε βάλει τον cursor, µε απλό κλικ. Εκτελείται η ρουτίνα µετά από παύση της εκτέλεσής της, µέχρι να συναντηθεί στο κυρίως πρόγραµµα η εντολή η επόµενη της κλήσης της ρουτίνας. Εάν δεν είστε µέσα σε ρουτίνα, το µπουτόν αυτό δεν κάνει τίποτε. 100 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

109 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) Πρόβληµα 9.1 Το επόµενο πρόγραµµα παρουσιάζει λογικό σφάλµα. Θα έπρεπε να αυξάνει δεκαδικά τη θέση µνήµης κωδ1, να εκτελεί τη ρουτίνα χρονικής καθυστέρησης DELAY και να επαναλαµβάνεται. Βάλτε σε ένα από τα παράθυρα µνήµης να εµφανίζεται η διεύθυνση d:κωδ1 και επιλέξτε <View>, <Periodic Window Update>, ώστε να ενηµερώνονται τα παράθυρα, όταν το πρόγραµµά σας εκτελείται. Εκτελέστε το, καταρχήν, σε πλήρη ταχύτητα και βεβαιωθείτε ότι το περιεχόµενο της θέσης µνήµης κωδ1 µένει αµετάβλητο. Χρησιµοποιήστε τα εργαλεία reset ( ), παύσης εκτέλεσης ( ) καθώς και τα τρία εργαλεία εκτέλεσης σε πλήρη ταχύτητα που περιγράφηκαν, για να εντοπίσετε το λάθος. LOOP: MOV A,κωδ1 ;Πρόγραµµα για εκσφαλµάτωση ADD A,#1 DA A MOV κωδ1,a CALL DELAY JMP LOOP DELAY: DELAY2: end MOV R6,#03h MOV R7,#04h DJNZ R7,DELAY2 DJNZ R6,DELAY RET 9.2 ΒΗΜΑΤΙΚΗ ΕΚΤΕΛΕΣΗ Ένας τρόπος παρακολούθησης του προγράµµατος είναι να το τρέχετε εντολή προς εντολή (βηµατική εκτέλεση) και να παρατηρείτε αν τα αποτελέσµατά του είναι τα αναµενόµενα. Σε µεγάλα προγράµµατα, όµως, αυτό δεν είναι εύκολο, επειδή, µέχρι να εντοπίσετε το σηµείο του προγράµµατος όπου παρουσιάζεται το λάθος, θα πρέπει να περάσει πάρα πολύς χρόνος. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

110 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) Για τη βηµατική εκτέλεση διατίθενται στο µvision δύο εικονίδια: 1) <StepInto> Εκτελεί την επόµενη εντολή, είτε γλώσσας µηχανής είτε ανωτέρου επιπέδου. Εάν η επόµενη εντολή είναι κλήση σε υπορουτίνα ή συνάρτηση, τότε ακολουθούνται οι εντολές της ρουτίνας. 2) <StepOver> Εκτελεί την επόµενη εντολή, αλλά, αν αυτή είναι κλήση σε υπορουτίνα ή συνάρτηση, τότε το πρόγραµµα σταµατά στην εντολή την επόµενη µετά την κλήση της ρουτίνας. Η διαφορά, δηλαδή, των δύο τρόπων βηµατικής εκτέλεσης είναι ότι η step over χειρίζεται τη ρουτίνα σαν µία εντολή, ενώ η step into παρακολουθεί και τις εντολές της ρουτίνας. Πρόβληµα 9.2 Το επόµενο πρόγραµµα παρουσιάζει λογικό σφάλµα. Θα έπρεπε να προσθέτει ανά δύο τις αντίστοιχες θέσεις των πινάκων κωδ1... κωδ1+7 και 20h... 27h και να δηµιουργεί έναν τρίτο πίνακα µε τα αθροίσµατα, στις θέσεις κωδ2... κωδ2+7. Χρησιµοποιήστε τα εργαλεία βηµατικής εκτέλεσης για να εντοπίσετε το λάθος. MOV R0,#κωδ2 MOV 20h,#κωδ1 MOV 21h,#20h ;Πρόγραµµα για εκσφαλµάτωση LOOP: CALL ADD2021 INC 20h INC 21h INC R0 CJNE R0,#κωδ1+8,LOOP JMP $ ;Αέναος βρόχος. $=τρέχουσα εντολή ADD2021: MOV R1,20h 102 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

111 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) end MOV MOV R1,21h ADD RET 9.3 ΠΑΥΣΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ Για να σταµατήσετε τη ροή του προγράµµατος, µπορείτε να χρησιµοποιήσετε το µπουτόν <Halt> ή να ορίσετε, πριν αρχίσει η εκτέλεση του προγράµ- µατος, σηµεία παύσης. 1) Μπουτόν <Halt>. Σταµατά η ροή του προγράµµατος. Περιγράφηκε ήδη στα προηγούµενα. 2) Ορισµός σηµείων παύσης, όπως περιγράφεται στη συνέχεια Ορισµός σηµείων παύσης Το µvision έχει τρεις τρόπους παύσης της εκτέλεσης του προγράµµατος, κάθε ένας µε τα δικά του πλεονεκτήµατα και µειονεκτήµατα στις ευκολίες και την ταχύτητα εκτέλεσης. Για να διακρίνει το µvision τον τύπο της παύσης χρησιµοποιεί τους εξής κανόνες: 1. Όταν προσδιορίζεται ο τρόπος προσπέλασης READ, WRITE ή READWRITE, το σηµείο παύσης είναι προσπέλασης. 2. Όταν η έκφραση (expression) είναι απλή διεύθυνση ή µπορεί να απλοποιηθεί σε διεύθυνση, το σηµείο παύσης είναι εκτέλεσης. 3. Όταν η έκφραση δεν µπορεί να απλοποιηθεί σε διεύθυνση, το σηµείο παύσης είναι υπό συνθήκη Παύση εκτέλεσης (execution break) Είναι απλά µία διεύθυνση εντολής του προγράµµατος, η οποία, όταν συναντηθεί, το πρόγραµµα σταµατάει. Η ταχύτητα εκτέλεσης δεν επηρεάζεται από παύσεις εκτέλεσης. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

112 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) Είναι στην ευθύνη του χρήστη να ορίσει ως σηµείο παύσης τη διεύθυνση του πρώτου byte (του κωδικού λειτουργίας) της εντολής. Συνήθως, αντί για διεύθυνση δηλώνουµε την ετικέτα της εντολής. Μπορείτε να ορίσετε ένα σηµείο παύσης εκτέλεσης µε τρεις τρόπους. α) Με διπλό κλικ σε µία εντολή. Με διπλό κλικ για δεύτερη φορά, το σηµείο παύσης εκτέλεσης απενεργοποιείται. β) Επιλέξτε <Debug> και <Breakpoints>. Εµφανίζεται το παράθυρο ορισµού σηµείων παύσης που φαίνεται στην Εικόνα 9-1. Εικόνα 9-1. Το παράθυρο των σηµείων παύσης (breakpoints) Στο πεδίο Expression µπαίνει η ετικέτα µιας εντολής ή η διεύθυνσή της, π.χ. c:0100h. Στο πεδίο Command µπαίνει, προαιρετικά, µία διαταγή που θα εκτελεστεί, εάν ενεργοποιηθεί το σηµείο παύσης αντί να σταµατήσει η εκτέλεση του προγράµµατος. Π.χ. COUNTER για να εµφανίζεται το περιεχόµενο της µεταβλητής COUNTER. Στο πεδίο Count µπαίνει, προαιρετικά, το πλήθος των επαναλήψεων του γεγονότος, προκειµένου να ενεργοποιηθεί το σηµείο παύσης. Το µπουτόν <Define> ορίζει το σηµείο παύσης. Για να ισχύει η παύση εκτέλεσης, πρέπει να είναι απενεργοποιηµένα τα µπουτόν <Read> και <Write>. 104 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

113 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) γ) Με τη διαταγή bs στο παράθυρο Command. bs /νση_εντολής[,count [,<command>] ] Παράδειγµα 1: bs MAIN Το πρόγραµµα σταµατάει, µόλις συναντηθεί η εντολή µε ετικέτα MAIN. Παράδειγµα 2: bs TIMER0,10, MyRegs() Το πρόγραµµα σταµατάει τη δέκατη φορά που θα συναντηθεί η εντολή µε ετικέτα TIMER0 και εκτελεί τη συνάρτηση MyRegs(). Η εκτέλεση του προγράµµατος συνεχίζεται µετά τη συνάρτηση. Πρόβληµα 9.3 Με χρήση παύσεων εκτέλεσης, κάντε εκσφαλµάτωση στο επόµενο πρόγραµµα που θα έπρεπε να υπολογίζει τον µέσο όρο των 16 αριθµών που περιέχονται στον buffer. dseg at 30h ;Πρόγραµµα για εκσφαλµάτωση MHKOS equ 16 DEDOM: ds MHKOS ; έσµευση χώρου του buffer. Τα δε- ;δοµένα υποτίθεται ότι υπάρχουν ήδη. MO: ds 2 ;Σε πρώτη φάση κρατά το άθροισµα. Σε ;δεύτερη, το Μέσο Όρο. cseg at 0 ;1)Υπολογισµός αθροίσµατος MOV MO,#0 ;Αρχικά, µηδένισε το άθροισµα MOV MO+1,#0 MOV R0,#DEDOM ; είξε την αρχή του buffer MOV R7,#MHKOS-1 ;και το τέλος του. LOOP1: MOV A,@R0 ; ιάβασε έναν αριθµό ADD A,MO+1 ;Πρόσθεσέ τον MOV MO+1,A ;πρώτα το low byte ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

114 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) NOCY: JNC NOCY ;και αν υπάρχει κρατούµενο INC MO ;και το high byte DJNZ R7,LOOP1 ;Τελείωσε ο buffer? ;2) ιαίρεση δια 16 µε 4 δεξιά ολισθήσεις MOV R7,#4 ;Μετρητής του βρόχου LOOP2: MOV A,MO RRC A ; εξιά, πρώτα το high byte MOV MO,A MOV A,MO+1 RRC A ;και µετά, το low MOV MO+1,A DJNZ R7,LOOP2 end JMP $ Παύση προσπέλασης (access break) Σταµατά η εκτέλεση του προγράµµατος, όταν γράφεται, διαβάζεται ή προσπελαύνεται (γράφεται ή διαβάζεται) µία συγκεκριµένη θέση µνήµης ή µόλις σε συγκεκριµένη θέση µνήµης γραφεί ή διαβαστεί συγκεκριµένη τιµή. Η παύση προσπέλασης ορίζεται µε τη βοήθεια των επιλογών READ και WRITE. Η επιβράδυνση στην εκτέλεση του προγράµµατος είναι µικρή. Μπορείτε να ορίσετε ένα σηµείο παύσης προσπέλασης µε δύο τρόπους. α) Στο παράθυρο Breakpoints: 1) Στο πεδίο Expression µπαίνει µία έκφραση που να απλοποιείται σε διεύθυνση µνήµης. Επιτρέπεται µόνο µία ετικέτα και οι εξής τελεστές: &, &&, <, <=, >, >=, ==, και!=. Η έκφραση στα δεξιά 106 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

115 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) των τελεστών αυτών µπορεί να είναι οποιασδήποτε πολυπλοκότητας. 2) Στο πεδίο Command µπαίνει, προαιρετικά, µία διαταγή που θα εκτελείται, εάν ενεργοποιηθεί το σηµείο παύσης, αντί να σταµατά το πρόγραµµα. 3) Στο πεδίο Count µπαίνει το πλήθος των επαναλήψεων του γεγονότος, προκειµένου να ενεργοποιηθεί το σηµείο παύσης. 4) Ο τύπος της προσπέλασης (Read ή Write ή και τα δύο) πρέπει να είναι επιλεγµένος για να οριστεί παύση προσπέλασης. 5) Το µπουτόν <Define> ορίζει το σηµείο παύσης. β) Με τη διαταγή bs στο παράθυρο Command. bs READ / WRITE / READWRITE <Ετικέτα>[,count[,<command>]] Παράδειγµα 1 Θέλουµε να σταµατάει η εκτέλεση του προγράµµατος, όταν γράφεται η θέση µνήµης 40h. bs WRITE d:40h Παράδειγµα 2 Θέλουµε να σταµατά η εκτέλεση, όταν στη µεταβλητή sindex, που είναι τύπου int, γράφεται η τιµή 133h. Expression: sindex && sindex == 0x133 Command: Access: Write Count: 1 Αν και οι ρυθµίσεις φαίνονται σωστές, το σηµείο παύσης δε θα ενεργοποιηθεί ποτέ. Ο λόγος είναι ότι η µεταβλητή sindex καταλαµβάνει δύο bytes στη µνήµη, το byte υψηλής τάξης σε κάποια διεύθυνση και το byte χαµηλής τάξης στην αµέσως επόµενη. Η παράσταση προσδιορίζει τo byte υψηλής τάξης, ενώ έπρεπε να είναι &sindex+1 && sindex == 0x133. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

116 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) Η παράσταση &sindex+1 στα αριστερά του τελεστή && προσδιορίζει τώρα το byte χαµηλής τάξης. Η βασική ιδέα είναι: το low byte γράφεται πάντοτε, ενώ το high γράφεται µόνο σε υπερχείλιση του low. Προσοχή: Αντίθετα µε τις εκφράσεις της C, όπου &sindex + n σηµαίνει τη διεύθυνση του sindex συν n φορές το µέγεθος του sindex, οι εκφράσεις διεύθυνσης του µvision δείχνουν τη διεύθυνση του sindex συν n. ιαφορετικά, δε θα ήταν δυνατόν να δείξουµε στα bytes των µεταβλητών. Για να καταργήσετε ένα σηµείο παύσης µπορείτε να χρησιµοποιήσετε τη διαταγή bk #, όπου # ο αριθµός του σηµείου παύσης. Η διαταγή bl (breakpoints list) εµφανίζει όλα τα σηµεία παύσης, για να βρείτε τον αριθµό τους. οκιµάστε τις διαταγές bs, bl και bk στον εκσφαλµατωτή του µvision. Πρόβληµα 9.4 Το επόµενο πρόγραµµα προσθέτει συνεχώς στο µετρητή των 16 bits CNT τη σταθερά 0110h. Με κάθε υπερχείλιση του CNT αυξάνει ο µετρητής METR. CONST equ 0110h dseg at 30h CNT: ds 1 ;Ισοδύναµο µε CNT: ds 2,αλλά CNTL: ds 1 ;ορίζεται & το low byte METR: ds 1 cseg MOV CNT,#0 MOV CNT+1,#0 MOV METR,#0 LOOP: MOV A,CNT+1 ADD A,#LOW(CONST) 108 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

117 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) MOV CNT+1,A MOV A,CNT ADDC A,#HIGH(CONST) MOV CNT,A JNC LOOP end INC METR JMP LOOP Μεταφράστε το πρόγραµµα, καλέστε τον debugger και ορίστε τα εξής σηµεία παύσης προσπέλασης. Για καθένα, γράψτε τις εντολές στις οποίες υπολογίζετε να γίνεται παύση της εκτέλεσης του προγράµµατος. Επαληθεύστε, ορίζοντας τα σηµεία παύσης στον debugger. Προσοχή: Πριν ορίσετε ένα σηµείο παύσης, δώστε τη διαταγή bk * στο Command Window, ώστε να ακυρώνονται τα προηγούµενα. 1) bs read CNTL 2) bk *, bs read METR 3) bk *, bs read CONST 4) bk *, bs write CNTL 5) bk*, bs readwrite CNT Κάθε φορά που θέλετε να τρέχετε το πρόγραµµα από την αρχή πρέπει να πατάτε το <Reset> Παύση υπό συνθήκη (conditional break) Σταµατά η εκτέλεση του προγράµµατος, όταν επαληθευθεί µία συνθήκη. Η συνθήκη υπολογίζεται µετά την εκτέλεση κάθε εντολής. Έτσι, η εκτέλεση του προγράµµατος επιβραδύνεται σηµαντικά. Πολλές φορές, όµως, είναι ο µόνος τρόπος να εντοπίσετε ένα λάθος. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

118 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) Μπορείτε να ορίσετε ένα σηµείο παύσης υπό συνθήκη µε δύο τρόπους. α) Στο παράθυρο Breakpoints: 1) Στο πεδίο Expression µπαίνει µία έκφραση που θα περιγράφει το γεγονός που θα συµβεί, για να ενεργοποιηθεί το σηµείο παύσης. 2) Στο πεδίο Command µπαίνει, προαιρετικά, µία διαταγή που θα εκτελείται, εάν ενεργοποιηθεί το σηµείο παύσης, αντί να σταµατά το πρόγραµµα. 3) Στο πεδίο Count µπαίνει το πλήθος των επαναλήψεων του γεγονότος, προκειµένου να ενεργοποιηθεί το σηµείο παύσης. 4) Το µπουτόν <Define> ορίζει το σηµείο παύσης. Για να ισχύει η παύση υπό συνθήκη, πρέπει να είναι απενεργοποιηµένα τα µπουτόν <Read> και <Write>. β) Με τη διαταγή bs στο παράθυρο Command. bs <Συνθήκη>[,count[,<command>]] Παράδειγµα 1: bs SINDEX==8 Η εκτέλεση του προγράµµατος σταµατάει σε κάθε εντολή όσο χρόνο η µεταβλητή SINDEX έχει περιεχόµενο 8. Παράδειγµα 2: bs save_record[5].time.sec>5,3 Η εκτέλεση σταµατάει την τρίτη φορά που το µέλος time.sec του πέµπτου στοιχείου του πίνακα save_record είναι µεγαλύτερο του 5. Στη συνέχεια φαίνονται µερικά παραδείγµατα εκφράσεων. COUNTER==2 Το περιεχόµενο της µεταβλητής COUNTER ισούται µε 2; buf > 10h Το περιεχόµενο της θέσης buf είναι µεγαλύτερο από 10h; acc<<3 == 38h Αριστερή ολίσθηση του Α, 3 φορές, ισούται µε 38h; (psw & 18h) >> 3==2 Η επιλεγµένη οµάδα καταχωρητών είναι η 2; 110 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

119 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) Πρόβληµα 9.5 Επαναλάβετε το προηγούµενο πρόβληµα, ορίζοντας τα εξής σηµεία παύσης υπό συνθήκη: 1) bk *, bs CNT==34h && CNTL==10h 2) bk *, bs CNT==12h && CNTL==34h 3) bk *, bs CNT==34h && CNTL==10h && METR==21h 4) bk *, bs 256*CNT+CNTL>=1000 && 256*CNT+CNTL<2000 && METR==0 9.4 ΑΛΛΑ ΕΡΓΑΛΕΙΑ ΕΚΣΦΑΛΜΑΤΩΣΗΣ Το µvision διαθέτει επί πλέον εργαλεία εκσφαλµάτωσης που θεωρούνται προχωρηµένα για τους σκοπούς του βιβλίου αυτού. Τα πιο απλά είναι: Παράθυρο επίβλεψης (watch window) Εδώ τοποθετούµε µεταβλητές και παρακολουθούµε την τιµή τους. Ενεργοποιείται µε <View>, <Watch and Call Stack Window> ή µε το < >. Εικόνα 9-2. Το παράθυρο επίβλεψης (watch window) Κάνοντας κλικ µε το ποντίκι στη γραµµή Type F2 to edit και πατώντας F2 µπορούµε να ορίσουµε νέες µεταβλητές για επίβλεψη. Κάνοντας κλικ σε µία µεταβλητή και πατώντας το πλήκτρο <Delete> η µεταβλητή διαγράφεται από το παράθυρο επίβλεψης Disassembly window Εµφανίζεται το πηγαίο πρόγραµµα µαζί µε τη µετάφρασή του (αντικειµενικός κώδικας) όπως θα εκτελεστεί από τη CPU. Ενεργοποιείται µε την επιλογή <View>, <Disassembly Window> ή µε το εικονίδιο < >. ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ

120 9. ΕΚΣΦΑΛΜΑΤΩΣΗ (DEBUGGING) Εικόνα 9-3. Το παράθυρο αποσυµβολοµετάφρασης (disassembly window) Παράθυρο συµβόλων Εµφανίζει τα σύµβολα και τις διευθύνσεις τους. Ενεργοποιείται µε <View> <Symbol Window>. Εικόνα 9-4. Το παράθυρο συµβόλων Πρόβληµα 9.6 Πώς µπορούµε να κάνουµε εκσφαλµάτωση στο κύκλωµα που πραγµατοποιήσατε στο ράστερ στην προηγούµενη Άσκηση; 112 ΑΣΚΗΣΕΙΣ ΜΕ ΤΟΝ 8051

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό. Ερωτήσεις θεωρίας MY Μέρος Α. Υλικό. 1. Η μνήμη ROM είναι συνδυαστικό ή ακολουθιακό κύκλωμα; 2. α) Να σχεδιαστεί μία μνήμη ROM που να δίνει στις εξόδους της το πλήθος των ημερών του μήνα, ο αριθμός του

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΘΕΜΑΤΑ ΙΟΥΝΙΟΥ 2014

ΜΑΘΗΜΑ: ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΘΕΜΑΤΑ ΙΟΥΝΙΟΥ 2014 ΜΑΘΗΜΑ: ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΘΕΜΑΤΑ ΙΟΥΝΙΟΥ 2014 Καθηγητής:Νικολαΐδης Νικ. ΑΠΑΝΤΗΣΕΙΣ Ημ/νία εξέτασης:30-6-2014 ΘΕΜΑ 1 α) Να σχεδιαστεί μία μνήμη ROM που να δίνει στις εξόδους της το πλήθος των ημερών του

Διαβάστε περισσότερα

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

Διαβάστε περισσότερα

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Τι εννοούμε με τον όρο υπολογιστικό σύστημα και τι με τον όρο μικροϋπολογιστικό σύστημα; Υπολογιστικό

Διαβάστε περισσότερα

ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΦΕΒ 2014 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης: 10-2-2014

ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΦΕΒ 2014 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης: 10-2-2014 ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΦΕΒ 2014 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης: 10-2-2014 ΘΕΜΑ 1 α) Τι διαφέρει μία ROM από μία PAL; Οι ROM έχουν σταθερό αποκωδικοποιητή ο οποίος σχηματίζει όλα τα

Διαβάστε περισσότερα

74HC573 D7 D6 D5 D4 D3 D2 D1 D0 LE OE A0 A1 A2 A3 A4 A5 A6 A7 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 A8 A9 A10 A11 A12 A13 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0

74HC573 D7 D6 D5 D4 D3 D2 D1 D0 LE OE A0 A1 A2 A3 A4 A5 A6 A7 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 A8 A9 A10 A11 A12 A13 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 ΜΑΘΗΜΑ: ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΘΕΜΑΤΑ ΙΟΥΝΙΟΥ 2012 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης: 28-6-2012 ΘΕΜΑ 1 (3,5 μονάδες) Σχεδιάστε το απλούστερο κύκλωμα για συνδεθεί μία ROM 16 ΚΒ σε έναν 8051: α) ως μνήμη

Διαβάστε περισσότερα

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή Εισαγωγή Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ Σκοπός του εργαστηρίου είναι να γνωρίσουµε την εσωτερική δοµή και αρχιτεκτονική της κεντρικής µονάδας επεξεργασίας, να κατανοήσουµε τον τρόπο µε τον οποίο λειτουργεί

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ. Σηµειώσεις στο µάθηµα ΜΙΚΡΟΕΛΕΓΚΤΕΣ

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ. Σηµειώσεις στο µάθηµα ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Σηµειώσεις στο µάθηµα ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΝΙΚΟΛΑΪ ΗΣ ΝΙΚ. ΘΕΣΣΑΛΟΝΙΚΗ ΜΑΡΤΙΟΣ 2011 Σημειώσεις ΜΕ 1011Ε.doc Νικολαΐδης Νικ. Σηµειώσεις Μικροελεγκτών

Διαβάστε περισσότερα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: ΜΙΚΡΟΕΛΕΓΚΤΕΣ

ΜΑΘΗΜΑ: ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΜΑΘΗΜΑ: ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΩΝ ΕΞΕΤΑΣΕΩΝ ΙΑΝΟΥΑΡΙΟΥ 2011 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης: 28-1-2011 ΘΕΜΑ 1 Να σχεδιαστεί μία μνήμη ROM που να περιέχει το κείμενο "MICRO". Ο ASCII κωδικός

Διαβάστε περισσότερα

Σελίδα 1 από 12. Απαντήσεις στο φυλλάδιο 55. Ερώτηση 1 η : Ένα υπολογιστικό σύστηµα αποτελείται από:

Σελίδα 1 από 12. Απαντήσεις στο φυλλάδιο 55. Ερώτηση 1 η : Ένα υπολογιστικό σύστηµα αποτελείται από: Σελίδα 1 από 12 Απαντήσεις στο φυλλάδιο 55 Ερώτηση 1 η : Ένα υπολογιστικό σύστηµα αποτελείται από: (α) Κεντρική Μονάδα Επεξεργασίας. (β) Κύρια Μνήµη. (γ) Μονάδες εισόδου. (δ) Μονάδες εξόδου. (ε) Βοηθητική

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 ΑΠΑΝΤΗΣΕΙΣ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 ΑΠΑΝΤΗΣΕΙΣ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 Μάθημα : Μικροϋπολογιστές Τεχνολογία Τ.Σ. Ι, Θεωρητικής κατεύθυνσης Ημερομηνία

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 201 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

Εγχειρίδιο χρήσης του Άβακα

Εγχειρίδιο χρήσης του Άβακα Εγχειρίδιο χρήσης του Άβακα Με το παρόν λογισμικό γίνεται προσομοίωση των λειτουργικών δυνατοτήτων του εκπαιδευτικού υπολογιστή που έχει την ονομασία Άβακας. Η εικόνα του Άβακα εμφανίζεται σε παράθυρο

Διαβάστε περισσότερα

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας Κεφάλαιο 3 ο Αρχιτεκτονική Υπολογιστών Μάθημα 3.: Κεντρική Μονάδα Επεξεργασίας Όταν ολοκληρώσεις το κεφάλαιο θα μπορείς: Να σχεδιάζεις την εσωτερική δομή της ΚΜΕ και να εξηγείς τη λειτουργία των επιμέρους

Διαβάστε περισσότερα

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ» Περιεχόμενα Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»... 2 Καταχωρητές... 3 Αριθμητική-λογική μονάδα... 3 Μονάδα μνήμης... 4 Μονάδα Εισόδου - Εξόδου... 5 Μονάδα ελέγχου... 5 Ρεπερτόριο Εντολών «ΑΒΑΚΑ»... 6 Φάση

Διαβάστε περισσότερα

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Η γλώσσα assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου για συγκεκριμένους υπολογιστές ή άλλη προγραμματιζόμενη

Διαβάστε περισσότερα

ΑΣΚΗΣΕΙΣ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ (σελ. 30-34 στο ΜΥ1011Χ.pdf)

ΑΣΚΗΣΕΙΣ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ (σελ. 30-34 στο ΜΥ1011Χ.pdf) ΑΣΚΗΣΕΙΣ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ (σελ. 30-34 στο ΜΥ1011Χ.pdf) Για να λύνετε εύκολα ασκήσεις στα συστήματα αρίθμησης θα πρέπει να απομνημονεύσετε τα πρώτα 17 βάρη του δυαδικού συστήματος από 2 0 μέχρι 2

Διαβάστε περισσότερα

ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΘΕΜΑΤΑ ΦΕΒ Ημ/νία:

ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΘΕΜΑΤΑ ΦΕΒ Ημ/νία: ΜΙΚΡΟΕΛΕΓΚΤΕΣ ΘΕΜΑΤΑ ΦΕΒ 2014. Ημ/νία: 12-2-2014 ΘΕΜΑ 1 α) Εξηγήστε τους όρους: διάνυσμα διακοπής, εγκατάσταση διακοπής, ενεργοποίηση διακοπής, ρουτίνα διακοπής. (0,75 μον) - Διάνυσμα διακοπής είναι η

Διαβάστε περισσότερα

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών Άσκηση 1 (σύνοψη της εκφώνησης) [Εκτέλεση λογικών πράξεων]

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 2: Καταχωρητές, HelloWorld σε 8086, emu8086 emulator Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων

Διαβάστε περισσότερα

Συστήματα Μικροεπεξεργαστών

Συστήματα Μικροεπεξεργαστών Εργαστήριο 1 ο Εισαγωγή στον AVR Περίγραμμα Εργαστηριακής Άσκησης Εισαγωγή... 2 Κατηγορίες μικροελεγκτών AVR... 2 Εξοικείωση με το περιβάλλον AVR Studio 4... 3 Βήμα 1ο: Δημιουργία νέου έργου (project)...

Διαβάστε περισσότερα

«ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

«ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ «ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ 8085 ΧΟΝΔΡΙΚΟ ΔΙΑΓΡΑΜΜΑ 8085 CPU ΟΙ ΚΑΤΑΧΩΡΗΤΕΣ ΤΟΥ 8085 Ο ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗΣ ΕΝΤΟΛΩΝ Η ΑΡΙΘΜΗΤΙΚΗ ΚΑΙ ΛΟΓΙΚΗ ΜΟΝΑΔΑ ΟΙ «ΣΗΜΑΙΕΣ» FLAGS Η ΜΟΝΑΔΑ

Διαβάστε περισσότερα

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ ΙΑΚΟΠΕΣ (INTERRUPTS) ΟΙ ΙΑΚΟΠΕΣ ΕΙΝΑΙ «ΣΥΜΒΑΝΤΑ», ΕΣΩΤΕΡΙΚΑ

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 ΑΠΑΝΤΗΣΕΙΣ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 ΑΠΑΝΤΗΣΕΙΣ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 Μάθημα : Μικροϋπολογιστές Τεχνολογία Τ.Σ. Ι, Θεωρητικής κατεύθυνσης Ημερομηνία

Διαβάστε περισσότερα

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: Σελίδα 1 από 11 Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: την επικοινωνία, µε τα υπόλοιπα ολοκληρωµένα κυκλώµατα του υπολογιστικού συστήµατος. την παροχή τροφοδοσίας

Διαβάστε περισσότερα

Σημειώσεις για τον 80x86

Σημειώσεις για τον 80x86 Σημειώσεις για τον 80x86 Τι είναι η διεύθυνση; 16bits 0000h 0001h 0002h 8bits 20h 32h 30h Η μνήμη ενός μικροϋπολογιστικού συστήματος χωρίζεται σε μικρά τμήματα του ενός byte FFFEh 30h 2 16 =65,536 bytes

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ 1. Υπορουτίνες Μαθηµατικών Πράξεων 1.1. Προσηµασµένοι και απροσήµαστοι αριθµοί 1.2. Μετατροπές προσηµασµένων και απροσήµαστων αριθµών

ΠΕΡΙΕΧΟΜΕΝΑ 1. Υπορουτίνες Μαθηµατικών Πράξεων 1.1. Προσηµασµένοι και απροσήµαστοι αριθµοί 1.2. Μετατροπές προσηµασµένων και απροσήµαστων αριθµών ΠΕΡΙΕΧΟΜΕΝΑ 1. Υπορουτίνες Μαθηµατικών Πράξεων 1.1. Προσηµασµένοι και απροσήµαστοι αριθµοί 1.2. Μετατροπές προσηµασµένων και απροσήµαστων αριθµών Cr0 Μετατροπή αριθµού 8 Bits από µορφή προσηµασµένου µε

Διαβάστε περισσότερα

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Παρακάτω δίνονται μερικοί από τους ακροδέκτες που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών. Φτιάξτε έναν πίνακα που να

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008 Τεχνολογία Ι Θεωρητικής Κατεύθυνσης Τεχνικών Σχολών Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ ΧΕΙΜΩΝΑΣ 2009 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ 1 Γενική οργάνωση του υπολογιστή Ο καταχωρητής δεδομένων της μνήμης (memory data register

Διαβάστε περισσότερα

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ (Σ.Τ.ΕΦ.) ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr ΛΕΙΤΟΥΡΓΙΕΣ

Διαβάστε περισσότερα

Εντολές γλώσσας μηχανής

Εντολές γλώσσας μηχανής Εντολές γλώσσας μηχανής Στον υπολογιστή MIPS η εντολή πρόσθεσε τα περιεχόμενα των καταχωρητών 17 και 20 και τοποθέτησε το αποτέλεσμα στον καταχωρητή 9 έχει την μορφή: 00000010001101000100100000100000 Πεδία

Διαβάστε περισσότερα

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα για την εργαστηριακή άσκηση 10: Εφαρμογές των χρονιστών και των διακοπών

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα για την εργαστηριακή άσκηση 10: Εφαρμογές των χρονιστών και των διακοπών Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών Βοήθημα για την εργαστηριακή άσκηση 10: Εφαρμογές των χρονιστών και των διακοπών Άσκηση 2 Στην άσκηση αυτή συνυπάρχουν τα ακόλουθα: Κυρίως πρόγραμμα. Αυξάνει

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 121 ΕΡΓΑΣΤΗΡΙΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΝΗΜΗ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΖΟΜΕΝΗ ΛΟΓΙΚΗ ΥΠΕΥΘΥΝΟΣ ΕΡΓΑΣΤΗΡΙΩΝ: ΧΡΥΣΟΣΤΟΜΟΣ ΧΡΥΣΟΣΤΟΜΟΥ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2001 ΕΠΛ 121 ΕΡΓΑΣΤΗΡΙΑ ΨΗΦΙΑΚΩΝ

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης ΥΠΟΡΟΥΤΙΝΕΣ ΕΡΓΑΣΤΗΡΙΟ 6 Οι υπορουτίνες αποτελούν αυτόνομα τμήματα κώδικα που διεκπεραιώνουν μία συγκεκριμένη εργασία και μπορούμε να τα καλούμε

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ ΕΙΣΑΓΩΓΗ Θέµατα ❸Συστήµατα Η/Υ (αναφορά) ❸Γλώσσα υπολογιστών ❸Γλώσσες προγραµµατισµού (low-high level) ❸Low level VS high level programming ❸Βασικά µέρη Η/Υ ❸Μικροϋπολογιστές (µc µp) ❸Αρχιτεκτονική µικροελεγκτών

Διαβάστε περισσότερα

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07 Ενότητα 4 Εισαγωγή στην Πληροφορική Κεφάλαιο 4Α: Αναπαράσταση πληροφορίας Κεφάλαιο 4Β: Επεξεργαστές που χρησιµοποιούνται σε PCs Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 8 Tutorial by TeSLa Συνδεσμολογία κυκλώματος Διαδικασία Προγραμματισμού

ΑΣΚΗΣΗ 8 Tutorial by TeSLa Συνδεσμολογία κυκλώματος Διαδικασία Προγραμματισμού Α.Τ.Ε.Ι. ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΑΣΚΗΣΗ 8 Tutorial by TeSLa Συνδεσμολογία κυκλώματος Διαδικασία Προγραμματισμού Θεσσαλονίκη, Ιανουάριος 2007 Η Άσκηση 8 του εργαστηρίου

Διαβάστε περισσότερα

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache) SMPcache Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache) 1. Βασικές ρυθμίσεις του συστήματος: δημιουργία μια δικής μας σύνθεσης συστήματος. Το SMPcache είναι ένα εργαλείο με το οποίο μπορούμε

Διαβάστε περισσότερα

ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ ΜΙΚΡΟΕΛΕΓΚΤΩΝ

ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ ΜΙΚΡΟΕΛΕΓΚΤΩΝ ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ ΜΙΚΡΟΕΛΕΓΚΤΩΝ Μέρος ο : Αποκωδικοποιητές διευθύνσεων Καθηγητής: Νικολαΐδης Νικ. ΑΣΚΗΣΗ 6 Να συνδεθούν μία μνήμη ROM 3 Kbits και μία μνήμη RAM 64 Kbits στους διαδρόμους διεύθυνσης και δεδομένων

Διαβάστε περισσότερα

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

Διαβάστε περισσότερα

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (Τμήματα Υπολογιστή) ΕΚΠΑΙΔΕΥΤΗΣ:ΠΟΖΟΥΚΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Κάθε ηλεκτρονικός υπολογιστής αποτελείται

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 3: Καταχωρητές, Τμήματα, Διευθυνσιοδότηση Μνήμης, SEGMENT, MOV, ADD, SUB, INT, TITLE, LEA

Διαβάστε περισσότερα

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

Διαβάστε περισσότερα

Εισαγωγή στην πληροφορική -4

Εισαγωγή στην πληροφορική -4 Εισαγωγή στην πληροφορική 6 (, 64) bits Μνήµη Θέση (κύτταρο cell) µνήµης, χωράει λέξεις (words) εντολές (πρόγραµµα), αριθµοί (δεδοµένα) Αριθµοί: δυαδική (binary) αναπαράσταση = = = 4 = 4 = 5 = 7 Εισαγωγή

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

Διαβάστε περισσότερα

Συστήματα Μικροϋπολογιστών

Συστήματα Μικροϋπολογιστών Συστήματα Μικροϋπολογιστών Παραδείγματα προγραμματισμού του με Intel 8085 Υπεύθυνος Μαθήματος: K. ΠΕΚΜΕΣΤΖΗ Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Εργαστήριο ΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ

Εργαστήριο ΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Εισαγωγή Εργαστήριο ΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Σκοπός του εργαστηρίου είναι να κατανοήσουµε τους τρόπους προσπέλασης της µνήµης (µέθοδοι διευθυνσιοδότησης) σε ένα υπολογιστικό σύστηµα. Η Μνήµη 1 Ψηφιακή Λογική 4

Διαβάστε περισσότερα

ΑΣΚΗΣΕΙΣ ΜΙΚΡΟΕΛΕΓΚΤΩΝ

ΑΣΚΗΣΕΙΣ ΜΙΚΡΟΕΛΕΓΚΤΩΝ ΑΣΚΗΣΕΙΣ ΜΙΚΡΟΕΛΕΓΚΤΩΝ Μέρος 1 ο : Ασκήσεις σε μνήμες Καθηγητής: Νικολαΐδης Νικ. ΑΣΚΗΣΗ 1 Να σχεδιαστεί μία μνήμη ROM που να περιέχει το κείμενο "MICRO LAB". Ο ASCII κωδικός του κενού είναι 40h, του "Α"

Διαβάστε περισσότερα

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 5: Εξωτερικές διακοπές του 8051

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 5: Εξωτερικές διακοπές του 8051 Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών Βοήθημα εκτέλεσης εργαστηριακής άσκησης 5: Εξωτερικές διακοπές του 8051 Ο κώδικας για την παρούσα εργαστηριακή άσκηση σας δίδεται κατά το μεγαλύτερο μέρος

Διαβάστε περισσότερα

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή 1 Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή μνήμη(cache). Η cache είναι πολύ σημαντική, πολύ γρήγορη,

Διαβάστε περισσότερα

(Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να

(Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να Κεεφάάλλααι ιοο:: 3Β ο Τίττλλοοςς Κεεφααλλααί ίοουυ: : Αρχιτεκτονική Ηλ/κου Τµήµατος των Υπολ. Συστηµάτων (Ιούνιος 2001 ΤΕΕ Ηµερήσιο) Σε κάθε µία από τις παρακάτω περιπτώσεις, να αναφέρετε τις τιµές των

Διαβάστε περισσότερα

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 4: Ρουτίνες καθυστέρησης. [Συγγραφή ρουτίνας καθυστέρησης]

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 4: Ρουτίνες καθυστέρησης. [Συγγραφή ρουτίνας καθυστέρησης] Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών Βοήθημα εκτέλεσης εργαστηριακής άσκησης 4: Ρουτίνες καθυστέρησης Άσκηση 1 (σύνοψη της εκφώνησης) [Συγγραφή ρουτίνας καθυστέρησης] Γράψτε ένα πρόγραμμα

Διαβάστε περισσότερα

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual MILE Simulator Version 1.0 User's Manual Νοέμβριος, 2011 Περιεχόμενα 1. Εισαγωγή στον προσομοιωτή...2 1.1 Εγκατάσταση...2 1.2 Βοήθεια Διευκρινήσεις...2 2. Ξεκινώντας με τον προσομοιωτή...3 2.1 Το memory

Διαβάστε περισσότερα

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 9 : Ομάδες Εντολών: Ιδιότητες και Λειτουργίες Ευάγγελος Καρβούνης Παρασκευή, 15/01/2016 Τι είναι ομάδα εντολών;

Διαβάστε περισσότερα

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ) ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ) Συσκευές αποθήκευσης Ένας υπολογιστής προκειµένου να αποθηκεύσει δεδοµένα χρησιµοποιεί δύο τρόπους αποθήκευσης: Την Κύρια Μνήµη Τις συσκευές µόνιµης αποθήκευσης (δευτερεύουσα

Διαβάστε περισσότερα

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Η επεξεργασία των δεδομένων ακολουθεί μια στερεότυπη διαδρομή: τα δεδομένα εισάγονται στο υπολογιστικό σύστημα, υφίστανται μια ορισμένη επεξεργασία και

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Αρχιτεκτονική-Ι Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι Ιωάννης Έλληνας Τμήμα Η/ΥΣ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 7: Αποκωδικοποίηση Εντολής x86 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4 Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφάλαιο 7.4 Ε/Ε Οδηγούμενη από Διακοπές Το πρόβλημα με την προγραμματιζόμενη Ε/Ε είναι ότι ο επεξεργαστής πρέπει να περιμένει ώστε η μονάδα Ε/Ε που τον ενδιαφέρει

Διαβάστε περισσότερα

Καταχωρητές & τμήματα μνήμης του Ματθές Δημήτριος Καθηγητής Πληροφορικής

Καταχωρητές & τμήματα μνήμης του Ματθές Δημήτριος Καθηγητής Πληροφορικής Καταχωρητές & τμήματα μνήμης του 8086 Ματθές Δημήτριος Καθηγητής Πληροφορικής Καταχωρητές γενικού σκοπού Υπάρχουν τέσσερις (4) γενικού σκοπού καταχωρητές των 16-bit που χρησιμοποιούνται από τους προγραμματιστές

Διαβάστε περισσότερα

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή Κεφάλαιο 3 Το υλικό του υπολογιστή Εισαγωγή Τµήµατα του Η/Υ καιοργάνωση Μονάδα Κεντρικής Μνήµης Κεντρική Μονάδα Επεξεργασίας (CPU) Μονάδα Εισόδου Εξόδου ίαυλοι Επικοινωνίας Εναλλακτικές αρχιτεκτονικές

Διαβάστε περισσότερα

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας 4.1 Γενικά Ο υπολογιστής επεξεργάζεται δεδομένα ακολουθώντας βήμα βήμα, τις εντολές ενός προγράμματος. Το τμήμα του υπολογιστή, που εκτελεί τις εντολές και συντονίζει

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης MSc Ηλεκτρονικός Φυσικός Αντικείμενο: ΠΡΟΦΙΛ ΜΑΘΗΜΑΤΟΣ Προγραμματισμός σε γλώσσα Assembly Σκοπός: Γνώση της assembly από τους απόφοιτους του τμήματος

Διαβάστε περισσότερα

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ Η Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit -CPU) ή απλούστερα επεξεργαστής αποτελεί το μέρος του υλικού που εκτελεί τις εντολές ενός προγράμματος υπολογιστή

Διαβάστε περισσότερα

Οδηγώντας μια οθόνη υγρών κρυστάλλων Liquid Crystal Display

Οδηγώντας μια οθόνη υγρών κρυστάλλων Liquid Crystal Display Οδηγώντας μια οθόνη υγρών κρυστάλλων Liquid Crystal Display Σχηματικό Διάγραμμα μιας Οθόνης Υγρών Κρυστάλλων To Lcd εσωτερικά έχει έναν controller που είναι υπεύθυνος για την επεξεργασία τον δεδομένων

Διαβάστε περισσότερα

1. ΕΙΣΑΓΩΓΗ 1.1. ΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. 1.1.1. Οι βασικές λογικές πράξεις

1. ΕΙΣΑΓΩΓΗ 1.1. ΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. 1.1.1. Οι βασικές λογικές πράξεις 1. ΕΙΣΑΓΩΓΗ 1.1. ΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ «Έξω βρέχει». Η πρόταση αυτή µπορεί να είναι αληθής ή ψευδής. Κάτι άλλο αποκλείεται. Στο σκεπτικό αυτό βασίζεται η κατασκευή των υπολογιστών. Ακόµη και άλλες

Διαβάστε περισσότερα

Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ. Εισαγωγή

Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ. Εισαγωγή Εισαγωγή Εργαστήριο ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ Ξεκινάµε την εργαστηριακή µελέτη της Ψηφιακής Λογικής των Η/Υ εξετάζοντας αρχικά τη µορφή των δεδοµένων που αποθηκεύουν και επεξεργάζονται οι υπολογιστές και προχωρώντας

Διαβάστε περισσότερα

Περιεχόµενα. I Βασικές Γνώσεις 1

Περιεχόµενα. I Βασικές Γνώσεις 1 Περιεχόµενα I Βασικές Γνώσεις 1 1 Μοντελοποίηση Προγραµµάτων 3 1.1 Ψευδογλώσσα....................... 6 1.2 Διαγράµµατα Ροής..................... 6 1.3 Παραδείγµατα σε Ψευδογλώσσα και Διαγράµµατα Ροής.

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΩΝ ΕΞΕΤΑΣΕΩΝ

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑΤΩΝ ΕΞΕΤΑΣΕΩΝ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεµατική Ενότητα ΠΛΗ 2: Ψηφιακά Συστήµατα Ακαδηµαϊκό Έτος 24 25 Ηµεροµηνία Εξέτασης 29.6.25 Χρόνος Εξέτασης

Διαβάστε περισσότερα

Εφαρμογές μικροελεγκτών

Εφαρμογές μικροελεγκτών Μικροελεγκτές Έναν ορισμό που θα μπορούσαμε να δώσουμε για τους μικροελεγκτές είναι ο εξής: Μικροελεγκτής είναι ένα προγραμματιζόμενο ολοκληρωμένο κύκλωμα το οποίο διαθέτει επεξεργαστή, μνήμη, διάφορα

Διαβάστε περισσότερα

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 4 - Editor Περιγραφή Υλοποίηση ενός υποτυπώδους editor που θα: Διαβάζει ένα προκαθορισμένο αρχείο Θα το απεικονίζει στην οθόνη Θα κάνει highlight με έναν ελεγχόμενο

Διαβάστε περισσότερα

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

Διαβάστε περισσότερα

8051 Interrupt Ports. Name Alternate Function

8051 Interrupt Ports. Name Alternate Function Σκοπόςτης Διάλεξης Εισαγωγήστις πηγές διακοπών (interrupts) και στον τρόπο που αυτές είναι διαχειρίσιμες από την αρχιτεκτονική 8051 Πώς συνδέονται οι διακόπτες και τα πληκτρολόγια σε ένα μικροϋπολογιστή

Διαβάστε περισσότερα

SIMATIC MANAGER SIMATIC MANAGER

SIMATIC MANAGER SIMATIC MANAGER 1 Προγραμματισμός του PLC. 1. Γενικά Μια προσεκτική ματιά σε μια εγκατάσταση που θέλουμε να αυτοματοποιήσουμε, μας δείχνει ότι αυτή αποτελείται από επιμέρους τμήματα τα οποία είναι συνδεδεμένα μεταξύ τους

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών Ι

Αρχιτεκτονική Υπολογιστών Ι Αρχιτεκτονική Υπολογιστών Ι Επιλεγμένες εντολές και συναρτήσεις assembly Από το βιβλίο Αρχιτεκτονική Υπολογιστών & Προγραμματισμός Assembly (Συγγραφέας / Εκδότης : Παναγιώτης Παπάζογλου) Δρ. Παναγιώτης

Διαβάστε περισσότερα

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ Βιβλιογραφία Ενότητας Kehtarnavaz [2005]: Chapter 3 Kuo [2005]: Chapters 1 & 4-5 Lapsley [2002]: Chapter 4 Hayes [2000]: Κεφάλαιo 8

Διαβάστε περισσότερα

Συμβολική Γλώσσα στον ΑΒΑΚΑ

Συμβολική Γλώσσα στον ΑΒΑΚΑ Συμβολική Γλώσσα στον ΑΒΑΚΑ Τα προγράμματα που είναι γραμμένα σε γλώσσα μηχανής (machine language) περιέχουν τόσο τις εντολές όσο και τις διευθύνσεις μνήμης γραμμένες σε αριθμητική μορφή και μάλιστα στο

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++

ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++ ΑΣΚΗΣΗ 1: TO ΠΕΡΙΒΑΛΛΟΝ ΕΡΓΑΣΙΑΣ DEV-C++ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση του περιβάλλοντος Dev C++ το οποίο θα χρησιμοποιηθεί για την υλοποίηση

Διαβάστε περισσότερα

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση Αρης Ευθυμίου Ανακοινώσεις! Βαθμοί: 1ης εργαστηριακής άσκησης Βαθμός 0 χωρίς σχόλια δεν έχω πάρει την άσκηση! ελέγξτε μήπως δεν το στέλνετε στο σωστό

Διαβάστε περισσότερα

ΠΑΡΑ ΕΙΓΜΑ 8 ΓΕΝΝΗΤΡΙΑ ΨΕΥ ΟΤΥΧΑΙΩΝ ΑΡΙΘΜΩΝ (PSEUDORANDOM GENERATOR) 8.0 ΓΕΝΙΚΑ

ΠΑΡΑ ΕΙΓΜΑ 8 ΓΕΝΝΗΤΡΙΑ ΨΕΥ ΟΤΥΧΑΙΩΝ ΑΡΙΘΜΩΝ (PSEUDORANDOM GENERATOR) 8.0 ΓΕΝΙΚΑ ΠΑΡΑ ΕΙΓΜΑ 8 ΓΕΝΝΗΤΡΙΑ ΨΕΥ ΟΤΥΧΑΙΩΝ ΑΡΙΘΜΩΝ (PSEUDORANDOM GENERATOR) 8. ΓΕΝΙΚΑ Στο παράδειγµα αυτό θα εξοµοιώσουµε ένα Hardware µοντέλο µιας ψευδοτυχαίας γεννήτριας αριθµών χρησιµοποιώντας τις εντολές

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 1 ΑΣΚΗΣΗ 1. Συγγραφή. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

ΑΣΚΗΣΗ 1 ΑΣΚΗΣΗ 1. Συγγραφή. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ ΑΣΚΗΣΗ Συγγραφή Προγραµµάτων Σκοπός της άσκησης Ανάπτυξη κώδικα σε Assembly Ανάπτυξη κώδικα για τον µc Μ68HC98GP32 Κανόνες ορθής ανάπτυξης προγράµµατος µέσα από ένα απλό πρόγραµµα Προσοµοίωση του κώδικα

Διαβάστε περισσότερα

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers)

Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers) Καταχωρητές γενικής χρήσης και δεδοµένων (Data Registers) ΑΧ Εργασίες εισόδου / εξόδου, διορθώσεις δεκαδικών, πολλαπλασιασµοί, διαιρέσεις. BX είκτης για έµµεσο τρόπο προσδιορισµού διευθύνσεων µνήµης (indirect

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Εισαγωγή στη C θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Μάθημα 7: Μικροϋπολογιστικό Σύστημα και Μνήμες

Μάθημα 7: Μικροϋπολογιστικό Σύστημα και Μνήμες Μάθημα 7: Μικροϋπολογιστικό Σύστημα και Μνήμες 7.1 Αρχιτεκτονική μνημών σε υπολογιστικό σύστημα Σε ένα υπολογιστικό σύστημα υπάρχουν συνήθως περισσότερες από μία μνήμες. Επειδή η χωρητικότητα ενός μόνο

Διαβάστε περισσότερα

Εγκατάσταση του Arduino IDE

Εγκατάσταση του Arduino IDE ΑΣΠΑΙΤΕ Συλλογή και Επεξεργασία Δεδομένων Εργαστήριο ΠΕΡΙΕΧΟΜΕΝΑ: Πώς να κατεβάσετε και να εγκαταστήσετε το Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE), για το προγραμματισμό του Arduino. Χρησιμοποιώντας το

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 4: Πολλαπλασιασμός (MUL,IMUL). Διαίρεση (DIV,IDIV). Εμφάνιση αλφαριθμητικού. Εμφάνιση χαρακτήρα.

Διαβάστε περισσότερα

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 3

Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 3 Τεχνολογία Υπολογιστικών Συστηµάτων & Λειτουργικά Συστήµατα Κεφάλαιο 3 Κεφάλαιο 3 Οργάνωση και Λειτουργία Επεξεργαστών Σκοπός του κεφαλαίου αυτού είναι να περιγράψει την εσωτερική οργάνωση των υπολογιστών,

Διαβάστε περισσότερα

Παραλληλισµός Εντολών (Pipelining)

Παραλληλισµός Εντολών (Pipelining) ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Παραλληλισµός Εντολών (Pipelining) Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapter 3: Section 3.4,

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ 4 ο Εξάμηνο Μαδεμλής Ιωάννης ΛΟΓΙΚΕΣ ΠΡΑΞΕΙΣ Οι λογικές πράξεις που υποστηρίζει η Assembly του 8088 είναι : Πράξη AND Πράξη OR Πράξη NOT Πράξη XOR Με τις λογικές πράξεις μπορούμε

Διαβάστε περισσότερα

Βασική δοµή και Λειτουργία Υπολογιστή

Βασική δοµή και Λειτουργία Υπολογιστή Βασική δοµή και Λειτουργία Υπολογιστή Η τεχνολογία των Η/Υ έχει βασιστεί στη λειτουργία του ανθρώπινου οργανισµού. Οπως ο άνθρωπος πέρνει εξωτερικά ερεθίσµατα από το περιβάλλον τα επεξεργάζεται και αντιδρά

Διαβάστε περισσότερα

Στοιχεία από Assembly Γιώργος Μανής

Στοιχεία από Assembly Γιώργος Μανής Στοιχεία από Assembly 8086 Γιώργος Μανής Καταχωρητές καταχωρητές γενικής φύσης καταχωρητές δείκτες καταχωρητές αναφοράς καταχωρητές τµηµάτων ειδικοί καταχωρητές Καταχωρητές γενικής φύσης 16 bit ax, bx,

Διαβάστε περισσότερα