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

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

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

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

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

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

8051 Interrupt Ports. Name Alternate Function

Σχετική κίνηση αντικειμένων

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

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

ΗΜΥ 213. Εργαστήριο Οργάνωσης Η.Y. και Μικροεπεξεργαστών week 5. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

Αναπαραγωγή με αρχεία ήχου

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

Πίνακας περιεχομένων. Γενικές υποδείξεις. Περιγραφή. Πληροφορίες. Λειτουργία

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

ΗΜΥ Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

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

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

Πριν ξεκινήσετε τον προγραμματισμό του θερμοστάτη πατήστε το κουμπί RESET με ένα στυλό.

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

ΠΡΟΓΡΑΜΜΑΤΙΣΤΗΣ ΑΡΔΕΥΣΗΣ ΓΙΑ ΟΙΚΙΑΚΕΣ & ΕΛΑΦΡΙΕΣ ΔΗΜΟΣΙΕΣ ΕΦΑΡΜΟΓΕΣ ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ & ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Πανεπιστήμιο Θεσσαλίας- Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών ΗΥ430- Εργαστήριο Ψηφιακών Κυκλωμάτων

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

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

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

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

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

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Οργάνωση Υπολογιστών (Ι)

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

K24 Ψηφιακά Ηλεκτρονικά 9: Flip-Flops

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

Ελέγξτε την ταινία σας

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

Αυτή η άσκηση έχει σαν σκοπό, να δείξει τον τρόπο με τον οποίο τίθεται σε λειτουργία η οθόνη LCD του αναπτυξιακού.

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

8.1 Θεωρητική εισαγωγή

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

Οδηγίες Χρήσης.

Τροποποίηση συνδυασμών κίνησης

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

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

Σημείωση: 1) Το Σήμα Ασφάλειας IRAM αναφέρεται μόνο στις συνθήκες ασφάλειας που ορίζονται από το EC 60950/A11 και όχι στις συνθήκες λειτουργίας και/ή

ΠΡΟΓΡΑΜΜΑΤΙΣΤΗΣ. της

Δημιουργία παρουσιάσεων με το PowerPoint

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Η/Υ και Μικροεπεξεργαστών Εαρινό εξάμηνο Διδάσκων: Γιώργος Ζάγγουλος

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

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

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Movie Maker (Δημιουργία βίντεο)

Τι θα απαντούσατε αλήθεια στην ίδια ερώτηση για την περίπτωση της επόμενης εικόνας;

CONTROLLER KB SERIES

Προγραμματιστικό Περιβάλλον

PRO-C ΠΡΟΓΡΑΜΜΑΤΙΣΤΗΣ ΑΡΔΕΥΣΗΣ ΓΙΑ ΟΙΚΙΑΚΕΣ & ΕΛΑΦΡΙΕΣ ΔΗΜΟΣΙΕΣ ΕΦΑΡΜΟΓΕΣ ΟΔΗΓΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΗΥ220: Εργαστήριο ψηφιακών κυκλωμάτων

Αυτές είναι μερικές συμβουλές που θα σας βοηθήσουν να ξεκινήσετε με κοινές εργασίες. Γρήγορα αποτελέσματα σειρά

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

Συνδέστε την οικιακή συσκευή σας - με το μέλλον. Οδηγός γρήγορης εκκίνησης

Εφαρμογή δημιουργίας σεναρίων Sctatch

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

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

Η Δραστηριότητα 1 του Φύλλου Εργασίας 1 έχει ως στόχο την εξοικείωση με το περιβάλλον του scratch και πιο συγκεκριμένα με τις μορφές και τα σκηνικά.

αντίστοιχο γεγονός. Όταν όντως το κουμπί

DCN multimedia. Συνεδριακό σύστημα. el Εγχειρίδιο χρήσης

Κεφάλαιο 2.3: Ρυθμίσεις των Windows

Η εντολή «επανέλαβε Χ»

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

Συνδέστε το ψυγείο σας με το μέλλον.

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

Εγχειρίδιο οδηγιών. Θερμοστάτης Εγχειρίδιο χρήστη

CX-185 II. Αριθμομηχανή με εκτυπωτή. Εγχειρίδιο Οδηγιών

Εγκατάσταση. Επέκταση εμβέλειας WiFi N300. Μοντέλο EX2700

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

Αλλαγή της εμφάνισης κειμένου: μέγεθος γραμματοσειράς, είδος γραμματοσειράς

Σκοπόςτης Διάλεξης. Εφαρμογή των χρονιστών για την ακριβή μέτρηση του χρόνου με την υλοποίηση του προγράμματος Real_Time_Clock.

Δώστε χρώμα και σύσταση στις διαφάνειες

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

Οδηγός γρήγορης εκκίνησης του PowerSuite

Εισαγωγή στην επανάληψη

7.1 Θεωρητική εισαγωγή

Εγχειρίδιο χρήστη. Μονάδα αυτοματισμού By-me για θυροτηλεόραση.

Στοιχεία Μνήμης, JKκαιD (Flip-Flops) Μετρητής Ριπής (Ripple Counter)

Ας κάνουμε μια γάτα να περπατάει στο Scratch 2.0

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Ολοκληρωμένα Κυκλώματα - Φθινόπωρο 2014 Γ. Δημητρακόπουλος. Εργαστηριακή άσκηση 2

DCN multimedia. Συνεδριακό σύστημα. el Εγχειρίδιο χρήσης

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

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

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT

Εγχειρίδιο χρήσης LivingColors Iris

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

Εγχειρίδιο Χρήσης του λογισμικού. Μελέτη Περιβάλλοντος Α & Β Δημοτικού

Computer Setup Οδηγός χρήσης

Transcript:

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών Βοήθημα εκτέλεσης εργαστηριακής άσκησης 5: Εξωτερικές διακοπές του 8051 Ο κώδικας για την παρούσα εργαστηριακή άσκηση σας δίδεται κατά το μεγαλύτερο μέρος του έτοιμος, προκειμένου να εξοικονομηθεί χρόνος. Έτσι το βάρος θα πέσει στα σενάρια εκτέλεσης του κώδικα («τεσταρίσματα»). Λειτουργία του προγράμματος Το πρόγραμμα της παρούσας άσκησης πρέπει να κάνει τα ακόλουθα: Να μετακινεί έναν άσσο από αριστερά προς τα δεξιά, κυκλικά και διαρκώς, στην πόρτα P0. Όταν φθάσει σήμα διακοπής, ΙΝΤ0 τότε να αναβοσβήνουν όλα μαζί τα bits της πόρτας P1 πέντε φορές. Όταν φθάσει σήμα διακοπής, ΙNΤ1 τότε να μετακινείται ένας άσσος στην πόρτα P2 από τα δεξιά στα αριστερά μία φορά. Σύντομη περιγραφή των συνιστώντων μερών του προγράμματος Κυρίως πρόγραμμα. Ξεκινά στη διεύθυνση 0100h. o Αρχικοποιεί τον stack pointer ώστε να «δείχνει» τη διεύθυνση 70h (καλύτερα αυτή την τιμή να την μεταβάλλουμε σε 50h, ώστε η στοίβα να έχει άφθονο χώρο επέκτασης προς τα επάνω). o Ενεργοποιεί τη δυνατότητα εξυπηρέτησης της εξωτερικής διακοπής 0, κάνοντας 1 το bit EX0 (Enable external 0). o Απαιτείται ακόμη η ενεργοποίηση του «κεντρικού διακόπτη» ελέγχου των διακοπών. Αυτό γίνεται κάνοντας 1 το bit EA (Enable All). o Τέλος, κάνει 1 το bit IT0 (Ιnterrupt Τype 0), ώστε η εξωτερική διακοπή 0 να είναι ακμοπυροδότητη (edge triggered). o Ακολουθούν εντολές NOP (πάνω σε αυτές θα προσθέσουμε κώδικα αργότερα), καθώς και ο κώδικας διαρκούς κυκλικής μετακίνησης του άσσου από τα αριστερά προς τα δεξιά. Ρουτίνα ROUT1. Ξεκινά στη διεύθυνση 0200h. Η ρουτίνα αυτή καλείται κάθε φορά που φθάσει σήμα διακοπής ΙΝΤ0 και όπως λέμε «εξυπηρετεί» τη διακοπή. o Η ρουτίνα φροντίζει για το άναμμα και σβήσιμο των bits της πόρτας P1 πέντε φορές και για το λόγο αυτό η λειτουργία της στηρίζεται σε βρόχο. Χρησιμοποιεί τον καταχωρητή R2 (διεύθυνση 02h) ως μετρητή επαναλήψεων του βρόχου. Για το λόγο αυτό, πριν κάνει οτιδήποτε άλλο, φυλάσσει την τιμή του R2 στη στοίβα και αποκαθιστά αυτή την τιμή από το stack πριν επιστρέψει στο κυρίως πρόγραμμα. Ρουτίνα ROUT2. Ξεκινά στη διεύθυνση 0300h. Η ρουτίνα αυτή εξυπηρετεί τη διακοπή ΙΝΤ1. o Η ρουτίνα φροντίζει για τη μετακίνηση ενός άσσου από τα δεξιά προς τα αριστερά στην πόρτα P2 μία φορά. Χρησιμοποιεί τον συσσωρευτή και τον καταχωρητή R2 (διεύθυνση 02h), τους οποίους φροντίζει να προφυλάξει με τη βοήθεια της στοίβας. 1

Ρουτίνα WAIT. Ξεκινά στη διεύθυνση 0400h. Η ρουτίνα αυτή είναι μία κλασική ρουτίνα καθυστέρησης. Προσαρμόστε τις τιμές #32h, #30h, αν χρειάζεται, ανάλογα με την ταχύτητα του υπολογιστή σας. Η ρουτίνα χρησιμοποιεί τους καταχωρητές R2 (διεύθυνση 02h) και R3 (διεύθυνση 03h), του οποίους και προστατεύει με τη βοήθεια της στοίβας. Παρατηρήστε ακόμη ότι στη διεύθυνση 0003h υπάρχει η εντολή LJMP ROUT1. Όταν φθάσει σήμα διακοπής ΙΝΤ0, η ροή του προγράμματος μεταφέρεται αυτόματα στη διεύθυνση 0003h. Από εκεί, με χρήση της LJMP, μεταβαίνουμε στη διεύθυνση μνήμης με ετικέτα ROUT1 (δηλ. στη διεύθυνση 0200h της ROM), όπου και βρίσκεται ο κώδικας εξυπηρέτησης της διακοπής. Βήματα προετοιμασίας. Εργαστηριακή εκτέλεση και τεσταρίσματα Στη διεύθυνση μνήμης 0000h προσθέστε την εντολή LJMP 0100h. Κάθε φορά που κάνουμε Reset Cpu (από το κύριο μενού του προσομοιωτή) o Program Counter (PC) λαμβάνει την τιμή 0000h. Η εντολή LJMP, που μόλις προσθέσαμε, εξασφαλίζει την «αυτόματη» μετάβαση στο κυρίως πρόγραμμα μετά από Reset της CPU. Τροποποιήστε τον stack pointer ώστε να «δείχνει» στη διεύθυνση 50h. Με άλλα λόγια, αντικαταστήστε την εντολή στη διεύθυνση 0100h της ROM με την εντολή MOV SP,#50h. Αυτό γίνεται προκειμένου να υπάρχει αρκετός χώρος, ώστε να μεγαλώσει η στοίβα χωρίς να συμβεί ποτέ υπερχείλισή της. Δουλειά με την (ακμοπυροδότητη) εξωτερική διακοπή 0 Πραγματοποιήστε Reset Cpu κα,ι στη συνέχεια, εκτελέστε το πρόγραμμα με F1. Θα δείτε το άσσο στην πόρτα P0 να κινείται διαρκώς από αριστερά προς τα δεξιά. Αν η κίνηση του άσσου είναι πολύ αργή ή πολύ γρήγορη στον υπολογιστή σας, μεταβείτε στη ρουτίνα καθυστέρησης στη διεύθυνση 0400h και επιλέξτε καταλληλότερες τιμές για τον διπλό βρόχο καθυστέρησης. Όταν η κίνηση του άσσου αποκατασταθεί σε ένα σχετικά αργό, αλλά παρατηρήσιμο, ρυθμό, προχωρήστε στο επόμενο βήμα. Στείλτε σήμα διακοπής ΙΝΤ0, αλλάζοντας την τιμή του bit P3.2 της πόρτας P3 από 1 σε 0 (αρνητική ακμή). Το bit P3.2 είναι το τρίτο από δεξιά. Τι παρατηρείτε; Στείλτε σήμα διακοπής ΙΝΤ0 εκ νέου, ώστε να εκτελεστεί η ρουτίνα ROUT1 και φροντίστε να είστε αρκετά γρήγοροι ώστε να στείλετε ένα ακόμα σήμα διακοπής, ΙΝΤ0 καθώς η ROUT1 «τρέχει». Τι παρατηρείτε; Αν δεν στείλουμε άλλο σήμα διακοπής, ΙΝΤ0 τι παρατηρείτε; Πώς εξελίσσεται η εκτέλεση του προγράμματος; Εκτέλεση του προγράμματος βήμα-βήμα Πραγματοποιήστε Reset Cpu και, στη συνέχεια, εκτελέστε το πρόγραμμα βήμα-βήμα με F10 έως ότου φθάσετε στην πρώτη εντολή NOP. Στο σημείο αυτό στείλτε σήμα διακοπής ΙΝΤ0. Παρατηρήστε ότι το bit-σημαία ΙΕ0 (στα δεξιά της οθόνης, στην γκρι περιοχή) λαμβάνει αυτόματα την τιμή 1, για να καταγράψει το αίτημα της διακοπής. Πατήστε F10 άλλη μία φορά. Σε ποιο σημείο συνεχίζει η εκτέλεση του προγράμματος και τι τιμή έχει τώρα το ΙΕ0; Πατήστε το F10 μερικές φορές ακόμη και συνεχίστε με την ενότητα που ακολουθεί. 2

Δουλειά με την (επιπεδοπυροδότητη) εξωτερική διακοπή 0 Προκειμένου να μετατρέψουμε τη διακοπή 0 σε επιπεδοπυροδότητη (level triggered), αρκεί να εκτελέσουμε την εξής μετατροπή: Στη διεύθυνση της ROM 0107h αντικαθιστούμε την εντολή SETB IT0 με την CLR IT0. Στη συνέχεια προχωρούμε όπως και νωρίτερα: Πραγματοποιήστε Reset Cpu. Φροντίστε, πριν τρέξετε το πρόγραμμα, να επαναφέρετε, χειροκίνητα, την πόρτα P3 Εκτελέστε το πρόγραμμα με F1. Στείλτε σήμα διακοπής ΙΝΤ0 μηδενίζοντας το bit P3.2 της πόρτας P3. Το bit P3.2 είναι το τρίτο από δεξιά. Κρατήστε το bit αυτό στην τιμή μηδέν και μην το μετατρέψετε εκ νέου σε 1. Τι παρατηρείτε; Παρατηρήστε και την τιμή του bit IE0 (στα δεξιά της οθόνης στην γκρι περιοχή). Τι τιμή έχει αυτό το bit; Κάντε το bit P3.2 ίσο με τη μονάδα (αυτό σημαίνει ότι παύετε να στέλνετε σήμα διακοπής ΙΝΤ0 ). Τι τιμή έχει τώρα το bit IE0; Τι παρατηρείτε όσον αφορά στην εκτέλεση του προγράμματος; Εκτέλεση του προγράμματος βήμα-βήμα Πραγματοποιήστε Reset Cpu και στη συνέχεια εκτελέστε το πρόγραμμα βήμα-βήμα με F10 έως ότου φθάσετε στην πρώτη εντολή NOP. Στο σημείο αυτό, στείλτε σήμα διακοπής ΙΝΤ0. Παρατηρήστε ότι το bit-σημαία ΙΕ0 (στα δεξιά της οθόνης, στην γκρι περιοχή) λαμβάνει αυτόματα την τιμή 1, για να καταγράψει το αίτημα της διακοπής. Πατήστε F10 άλλη μία φορά. Σε ποιο σημείο συνεχίζει η εκτέλεση του προγράμματος και τι τιμή έχει τώρα το ΙΕ0; Ποια η διαφορά σε σχέση με το σενάριο της ακμοπυροδότησης; Πατήστε το F10 μερικές φορές ακόμη και συνεχίστε με την ενότητα που ακολουθεί. Δουλειά με τις (ακμοπυροδότητες) εξωτερικές διακοπές 0, 1 Κατ αρχήν θα πρέπει να επαναφέρουμε την εξωτερική διακοπή 0 στην κατάσταση της ακμοπυροδότησης. Για να γίνει αυτό μεταβαίνουμε εκ νέου στη διεύθυνση της ROM 0107h και αντικαθιστούμε την εντολή CLR IT0 με την SETB IT0. Επιπλέον, προσθέτουμε τις εξής γραμμές κώδικα: o Στη διεύθυνση μνήμης ROM 0109h την εντολή SETB EX1 (για να ενεργοποιηθεί η δυνατότητα εξυπηρέτησης εξωτερικής διακοπής 1) o Στη διεύθυνση μνήμης ROM 010Bh την εντολή SETB IT1 (για να ρυθμιστεί η εξωτερική διακοπή 1 ως ακμοπυροδότητη). Επίσης, στη διεύθυνση μνήμης ROM 0013h προσθέτουμε την εντολή LJMP ROUT2 (ισοδύναμα, την εντολή LJMP 0300h). Αυτό διότι, όταν φθάσει σήμα διακοπής, ΙΝΤ1 η ροή εκτέλεσης του προγράμματος μεταφέρεται αυτόματα στη διεύθυνση 0013h, από όπου με την εντολή LJMP την εκτρέπουμε στη ROUT2 (δηλ. στη διεύθυνση 0300h της ROM, όπου και βρίσκεται το κύριο μέρος του κώδικα εξυπηρέτησης της διακοπής). Στη συνέχεια προχωρούμε με παρόμοιο τρόπο όπως προηγουμένως: Πραγματοποιήστε Reset Cpu. Φροντίστε, πριν τρέξετε το πρόγραμμα, να επαναφέρετε, χειροκίνητα, την πόρτα P3 3

Εκτελέστε το πρόγραμμα με F1. Ενεργοποιήστε τη διακοπή ΙΝΤ1 αλλάζοντας την τιμή του bit P3.3 της πόρτας P3 από 1 σε 0 (αρνητική ακμή). Το bit P3.3 είναι το τέταρτο από δεξιά. Τι παρατηρείτε; Επιβεβαιώστε ότι εξακολουθεί να είναι δυνατός ο χειρισμός της διακοπής, ΙΝΤ0 αλλάζοντας την τιμή του bit P3.2 της πόρτας P3 από 1 σε 0 (αρνητική ακμή). Το bit P3.2 είναι το τρίτο από δεξιά. Ταυτόχρονη δουλειά με τις (ακμοπυροδότητες) εξωτερικές διακοπές 0, 1 Πραγματοποιήστε Reset Cpu. Φροντίστε, πριν τρέξετε το πρόγραμμα, να επαναφέρετε, χειροκίνητα, την πόρτα P3 Εκτελέστε το πρόγραμμα με F1. Στη συνέχεια δοκιμάστε τα εξής σενάρια: 1) Στείλτε σήμα διακοπής ΙΝΤ0 και, καθώς η ρουτίνα εξυπηρέτησής της εκτελείται, στείλτε σήμα διακοπής ΙΝΤ1. Τι παρατηρείτε; Μπορεί η μία διακοπή να διακόψει τη ρουτίνα εξυπηρέτησης της άλλης; Γιατί; 2) Το ανάποδο. Στείλτε σήμα διακοπής ΙΝΤ1 και, καθώς η ρουτίνα εξυπηρέτησής της εκτελείται, στείλτε σήμα διακοπής. ΙΝΤ0 Τι παρατηρείτε; Μπορεί η μία διακοπή να διακόψει τη ρουτίνα εξυπηρέτησης της άλλης; Γιατί; 3) Στείλτε σήμα διακοπής ΙΝΤ0 και, καθώς η ρουτίνα εξυπηρέτησής της εκτελείται, στείλτε γρήγορα τόσο σήμα διακοπής, ΙΝΤ1 όσο και σήμα διακοπής ΙΝΤ0 εκ νέου. Τι παρατηρείτε; Ποια η σειρά εξυπηρέτησης των δύο νέων αιτημάτων διακοπής; 4) Το ανάποδο. Στείλτε σήμα διακοπής ΙΝT1 και, καθώς η ρουτίνα εξυπηρέτησής της εκτελείται, στείλτε γρήγορα τόσο σήμα διακοπής ΙΝΤ0, όσο και σήμα διακοπής ΙΝΤ1 εκ νέου. Τι παρατηρείτε; Υπάρχει κάποια διαφορά με το σενάριο 3 παραπάνω, όσον αφορά στη σειρά εξυπηρέτησης των νέων αιτημάτων διακοπής; Ταυτόχρονη δουλειά με τις (ακμοπυροδότητες) εξωτερικές διακοπές 0, 1 όταν η 1 έχει υψηλότερη προτεραιότητα Προκειμένου να δώσουμε υψηλότερη προτεραιότητα στην εξωτερική διακοπή 1, πρέπει να εκτελέσουμε την εξής μετατροπή: Στη διεύθυνση της ROM 010Dh να προσθέσουμε την εντολή SETB PX1 (priority external 1). Κατόπιν συνεχίζουμε όπως και προηγουμένως: Πραγματοποιήστε Reset Cpu. Φροντίστε, πριν τρέξετε το πρόγραμμα, να επαναφέρετε, χειροκίνητα, την πόρτα P3 Εκτελέστε το πρόγραμμα με F1. Δοκιμάζουμε τα εξής σενάρια: 1. Στείλτε σήμα της (υψηλής προτεραιότητας) διακοπής ΙΝΤ1. Όσο εκτελείται η ρουτίνα εξυπηρέτησής της, στείλτε σήμα της (χαμηλής προτεραιότητας) διακοπής ΙΝΤ0. Τι παρατηρείτε; Μπορεί η διακοπή ΙΝΤ0 να διακόψει τη ρουτίνα εξυπηρέτησης της διακοπής ; ΙΝΤ1 4

2. Το ανάποδο. Στείλτε σήμα της (χαμηλής προτεραιότητας) διακοπής ΙΝΤ0. Όσο εκτελείται η ρουτίνα εξυπηρέτησής της, σήμα της (υψηλής προτεραιότητας) διακοπής ΙΝΤ1. Τι παρατηρείτε; Διακόπτει η ΙΝΤ1 τη ρουτίνα εξυπηρέτησης της ; ΙΝΤ0 3. Στείλτε σήμα διακοπής ΙΝΤ0 και, στη συνέχεια και σχετικά γρήγορα, στείλτε σήματα διακοπής ΙΝΤ1, ΙΝΤ0 και. ΙΝΤ1 Τι παρατηρείτε και γιατί; 5