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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΟΓΙΑ

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

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

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

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

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

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

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

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

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

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

1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω:

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 7: Πρόγραμμα Συνδεδεμένης Λίστας και Διαδικασιών. Μανόλης Γ.Η.

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

; Οι HL δείχνουν την επόµενη θέση µνήµης MVI A, 38H CMP H JNZ DO_FLMEM ; POP B. ; Ανάκτηση καταχωρητών απο το σωρό.

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

Κεφάλαια Εντολές επανάληψης. Τρεις εντολές επανάληψης. Επιλογή εντολής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ. Σύνταξη στη ΓΛΩΣΣΑ

Οργάνωση Η/Υ. Ο Επεξεργαστής TRN. Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

2 ο Εργαστήριο Αλληλεπίδραση και Animation

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse

ΒΑΣΙΚΑ ΜΑΘΗΜΑΤΑ ΝΤΟΥΛΑΚΗΣ - ΜΕΝΙΟΥΔΑΚΗΣ ΕΠΑ.Λ ΕΛ. ΒΕΝΙΖΕΛΟΥ

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

Εργαστήριο Ψηφιακής Σχεδίασης

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωµάτων Τµήµα Επιστήµης Υπολογιστών Χειµερινό Εξάµηνο

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

ΘΕΜΑΤΑ & ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ

Ο Σ ο β ι ε τ ι κ ό ς Κ ρ υ π τ α λ γ ό ρ ι θ μ ο ς G O S T

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ομή Επανάληψης

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

Συναρτήσεις-Διαδικασίες

Άσκηση 5 Firefox Αποθήκευση αρχείων

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

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

Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

Αρχή ή τέλος ή κοµβικό σηµείο. Λειτουργία εισόδου / εξόδου. Έλεγχος. Πράξεις / ενέργειες. Βρόχος R7 φορές

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

Δείτε τώρα και πώς θα έπρεπε να ήταν το παραπάνω: Page 1

8051 Interrupt Ports. Name Alternate Function

Δομές Επανάληψης. Εισαγωγή στη C++

10. Πληκτρολόγιο matrix 4x4

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

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

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

ΦΥΛΛΟ ΑΠΑΝΤΗΣΗΣ 3 ης ΕΡΓΑΣΙΑΣ

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

ΕΡΓΑΣΤΗΡΙΟ ΠΛΗΡΟΦΟΡΙΚΗ I. 3o ΕΡΓΑΣΤΗΡΙΟ ΕΠΕΞΕΡΓΑΣΙΑ ΜΕ ΤΟ WORD

ίοδοι Εκποµπής Φωτός

Εισαγωγή. Περιεχόμενα της συσκευασίας. Τεχνικές Προδιαγραφές. Απαιτήσεις συστήματος. Ελληνική Έκδοση. IP002 Sweex USB Internet Phone

Φύλλα εργασίας. MicroWorlds Pro. Πολυμεσικές Εφαρμογές με την χρήση της γλώσσας LOGO Στο Γυμνάσιο. Β. Χ. Χρυσοχοΐδης

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

Περι-γράφοντας... κλωνάρια

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

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

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

Σημειώσεις του σεμιναρίου: Δημιουργία εκπαιδευτικού ιστότοπου με χρήση του λογισμικού Joomla

Transcript:

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών Βοήθημα εκτέλεσης εργαστηριακής άσκησης 4: Ρουτίνες καθυστέρησης Άσκηση 1 (σύνοψη της εκφώνησης) [Συγγραφή ρουτίνας καθυστέρησης] Γράψτε ένα πρόγραμμα στον εξομοιωτή του Εργαστηρίου ώστε να «αναβοσβήνει» όλα μαζί τα bits της πόρτας P1 με συχνότητα περίπου 1Hz. Ένα bit θεωρείται «αναμμένο» όταν έχει τιμή 1 και «σβηστό» όταν έχει τιμή 0. (Σε επίπεδο hardware θα μπορούσαμε να οδηγήσουμε τις εξόδους της πόρτας P1 σε ισάριθμα LED, ώστε να παρατηρήσουμε τις εναλλαγές μεταξύ ανάμματος και σβησίματος). Για την πραγματοποίηση του ζητούμενου προγράμματος, θα χρειαστούμε ένα κυρίως πρόγραμμα και μία υπορουτίνα. Η υπορουτίνα θα καθυστερεί τον 8051, δηλαδή θα τον αναγκάζει να μην κάνει τίποτα, για ένα μικρό χρονικό διάστημα. Με τον τρόπο αυτόν οι εναλλαγές ανάμεσα σε σβήσιμο και άναμμα θα μπορούν να γίνονται αρκούντως αργά ώστε να είναι παρατηρήσιμες. Κυρίως πρόγραμμα (να γραφεί ξεκινώντας από τη διεύθυνση 0100h) ΜΑΙΝ1: Επιλέξτε ως ενεργό την ομάδα καταχωρητών 0, κάνοντας RS1=0, RS0=0 με όποιον τρόπο σας είναι ευκολότερος (για παράδειγμα ANL PSW, #11100111B το οποίο θα εμφανιστεί στον εξομοιωτή ως ANL PSW, #E7H). Κάντε τον stack pointer να δείχνει τη θέση μνήμης 60h. LOOP1: (Αυτό το loop θα εκτελείται συνεχώς!). Φορτώστε την πόρτα P1 μόνο με άσσους Καλέστε την υπορουτίνα καθυστέρησης, η οποία αρχίζει με την εντολή που έχει ετικέτα KATHY (η υπορουτίνα θα πρέπει να παράγει καθυστέρηση περίπου μισού δευτερολέπτου). Φορτώστε την πόρτα P1 μόνο με μηδενικά. Καλέστε τη ρουτίνα καθυστέρησης ΚΑΤΗΥ. Κάντε jump στην εντολή που έχει ετικέτα LOOP1. Υπορουτίνα (να γραφεί ξεκινώντας από τη διεύθυνση 0000h) [Συγγραφή ρουτίνας καθυστέρησης με χρήση διπλού βρόχου] KATHY: Φυλάξτε στη στοίβα την τιμή του PSW. Αυτή είναι πάντοτε μια καλή προγραμματιστική τεχνική. Φυλάξτε στη στοίβα την τιμή του καταχωρητή R2, της ομάδας καταχωρητών 0, δηλαδή την τιμή του καταχωρητή που βρίσκεται στη διεύθυνση 02h. Η υπορουτίνα χρησιμοποιεί αυτόν τον καταχωρητή, οπότε καλού-κακού προστατεύουμε την τιμή του. Για τον ίδιο λόγο φυλάξτε στη στοίβα την τιμή του καταχωρητή R3, της ομάδας καταχωρητών 0, δηλαδή την τιμή του καταχωρητή που βρίσκεται στη διεύθυνση 03h. Η υπορουτίνα μας θα περιέχει δύο βρόχους, εμφωλευμένους τον έναν μέσα στον άλλον. Ως μετρητή του εξωτερικού βρόχου, διαλέγουμε τον R2 της ομάδας καταχωρητών 0. Αρχικοποιούμε τον R2 με μια τιμή της αρεσκείας μας, π.χ. την 32h. 1

Εισαγωγή εντολής NOP Εισαγωγή εντολής NOP Εισαγωγή εντολής NOP (Σχόλιο: Οι τρεις εντολές NOP που εισήχθησαν παραπάνω έχουν να κάνουν με την τελευταία άσκηση του σημερινού μαθήματος. Επί της ουσίας «αφήνουν χώρο» στη ROM για εντολές που θα προσθέσουμε αργότερα!) LEX: Αρχή του εξωτερικού βρόχου! Η πρώτη εντολή του εξωτερικού βρόχου είναι εκείνη που αρχικοποιεί τον μετρητή του εσωτερικού βρόχου. Ως μετρητή του εσωτερικού βρόχου, διαλέγουμε τον R3 της ομάδας καταχωρητών 0. Αρχικοποιούμε τον R3 με μια τιμή της αρεσκείας μας, π.χ. την 30h. LES: Αρχή του εσωτερικού βρόχου! Τεμπέλιασε, μην κάνεις τίποτα! Είσαι κουρασμένος, μην κάνεις τίποτα! Ξεκουράσου λίγο ακόμη, μην κάνεις τίποτα! Ελάττωσε τον μετρητή του εσωτερικού βρόχου κατά 1 και, αν αυτός δεν είναι μηδέν, κάνε μία ακόμη επανάληψη του εσωτερικού βρόχου, διαφορετικά συνέχισε στην επόμενη (αμέσως παρακάτω) εντολή. Ελάττωσε τον μετρητή του εξωτερικού βρόχου κατά 1 και, αν αυτός δεν είναι μηδέν, κάνε μία ακόμη επανάληψη του εξωτερικού βρόχου, διαφορετικά συνέχισε στην επόμενη (αμέσως παρακάτω) εντολή. Όταν τελειώσει η εκτέλεση και των δύο βρόχων, άρχισε να αποκαθιστάς τις τιμές που είχες φυλάξει στη στοίβα. Πρώτα αποκατάστησε τον καταχωρητή R3, της ομάδας καταχωρητών 0 (δηλ. POP 03h) Αποκατάστησε τον καταχωρητή R2, της ομάδας καταχωρητών 0 (δηλ. POP 02h) Αποκατάστησε τον καταχωρητή PSW. Επέστρεψε από την υπορουτίνα καθυστέρησης στο κυρίως πρόγραμμα. Εκτελέστε το κυρίως πρόγραμμα με χρήση του πλήκτρου F1 και παρατηρήστε το αναβοσβήσιμο της πόρτας P1. Αν αυτό δεν γίνεται με ρυθμό περίπου 1 Hz, πειραματιστείτε με διαφορετικές τιμές στις αρχικοποιήσεις του εξωτερικού και του εσωτερικού βρόχου καθυστέρησης. Άσκηση 2 (σύνοψη της εκφώνησης) Γράψτε πρόγραμμα στον εξομοιωτή του 8051, ώστε αυτό να κινεί κυκλικά έναν άσσο στην πόρτα P1 με ταχύτητα περίπου μία θέση ανά δευτερόλεπτο. Το πρόγραμμά σας γράψτε το ξεκινώντας από τη διεύθυνση 0200h της ROM. Για την υλοποίηση της ζητούμενης διαδικασίας, θα γράψουμε μόνο το κυρίως πρόγραμμα. Η υπορουτίνα KATHY θα χρησιμοποιηθεί αμετάβλητη από την προηγούμενη Άσκηση. Κυρίως πρόγραμμα (να γραφεί ξεκινώντας από τη διεύθυνση 0200h) MAIN2: Επιλέξτε την ομάδα καταχωρητών 0 με όποιον τρόπο σας είναι ευκολότερος (για παράδειγμα CLR RS1, CLR RS0) Αρχικοποιήστε τον stack pointer ώστε αυτός να δείχνει στη θέση μνήμης με διεύθυνση 60h. 2

Αρχικοποιήστε την πόρτα P1, ώστε το MSB της να είναι άσσος και όλα τα υπόλοιπα bit της να είναι μηδενικά (δηλ. στην πόρτα P1 θα πρέπει να φορτωθεί η τιμή 10000000B, ισοδύναμα η τιμή 80h) Αρχικοποιήστε τον συσσωρευτή Α με την ίδια τιμή. LOOP2: (Αυτό το loop θα εκτελείται συνεχώς!). Ολισθήστε κυκλικά τον συσσωρευτή μία θέση δεξιά. (Θυμηθείτε ότι οι εντολές ολίσθησης μπορούν να εφαρμοστούν μόνο στον συσσωρευτή). Τοποθετήστε την τρέχουσα τιμή του συσσωρευτή στην πόρτα P1. Καλέστε τη ρουτίνα καθυστέρησης. Καλέστε τη ρουτίνα καθυστέρησης (ξανά!), ώστε να επιτευχθεί καθυστέρηση 1 sec συνολικά και από τις δύο κλήσεις. Μεταβείτε στην αρχή του βρόχου LOOP2 για μία ακόμη επανάληψη. Εκτελέστε το κυρίως πρόγραμμα με χρήση του πλήκτρου F1 και παρατηρήστε τον άσσο καθώς αυτός ολισθαίνει κυκλικά προς τα δεξιά στην πόρτα P1. Άσκηση 3 (σύνοψη της εκφώνησης) Γράψτε ένα πρόγραμμα, παρόμοιο με εκείνο της Άσκησης 2, στο οποίο ένας άσσος θα κινείται κυκλικά στην πόρτα P1. Η φορά της κίνησης του άσσου θα εξαρτάται από το MSB της πόρτας P2. Αν αυτό είναι 1, τότε ο άσσος θα ολισθαίνει στην πόρτα P1 προς τα δεξιά. Αν αυτό είναι 0, τότε ο άσσος θα ολισθαίνει στην πόρτα P1 προς τα αριστερά. Για την υλοποίηση της ζητούμενης διαδικασίας, θα γράψουμε μόνο κυρίως πρόγραμμα. Η υπορουτίνα KATHY θα χρησιμοποιηθεί αμετάβλητη από την προηγούμενη Άσκηση. Κυρίως πρόγραμμα (να γραφεί ξεκινώντας από τη διεύθυνση 0300h) MAIN3: Επιλέξτε την ομάδα καταχωρητών 0 με όποιον τρόπο σας είναι ευκολότερος (για παράδειγμα MOV PSW, #00000000B). Αρχικοποιήστε τον stack pointer ώστε να δείχνει στη θέση μνήμης με διεύθυνση 60h Αρχικοποιήστε την πόρτα P2 τοποθετώντας σε αυτήν μόνο άσσους. Αρχικοποιήστε την πόρτα P1 τοποθετώντας σε αυτήν έναν άσσο στο MSB της και μηδέν παντού αλλού. Αρχικοποιήστε τον συσσωρευτή όπως και την P1. LOOP3: (Αυτό το loop θα εκτελείται συνεχώς!). Αν το MSB της πόρτας P2 είναι άσσος, τότε κάνε jump στην εντολή με ετικέτα DEXIA, όπου και θα πραγματοποιηθεί κυκλική δεξιά ολίσθηση του περιεχομένου του συσσωρευτή. Η εντολή που το κάνει είναι η JB P2.7, DEXIA, η οποία ανήκει στην ομάδα εντολών χειρισμού μεμονωμένων bit του 8051). Διαφορετικά, αν δηλαδή το MSB της P2 είναι μηδέν, κάνε κυκλική αριστερή ολίσθηση του περιεχομένου του συσσωρευτή. Έχουμε τελειώσει με την κυκλική αριστερή ολίσθηση, κάνε jump στην εντολή με ετικέτα ΝΕΧΤ για να ενημερωθεί η πόρτα P1 κατάλληλα. DEXIA: Κάνε κυκλική δεξιά ολίσθηση στο περιεχόμενο του συσσωρευτή. Στην επόμενη εντολή θα ενημερωθεί η πόρτα P1. NEXT: Ενημέρωσε την πόρτα P1, βάζοντας σε αυτήν την τρέχουσα τιμή του συσσωρευτή. 3

Κάλεσε την υπορουτίνα καθυστέρησης. Κάλεσε την υπορουτίνα καθυστέρησης (ξανά!), ώστε να επιτευχθεί καθυστέρηση 1 sec συνολικά και από τις δύο κλήσεις. Επίστρεψε τον έλεγχο του προγράμματος στην αρχή του βρόχου LOOP3. Αφού εξασφαλίσετε ότι ο Program Counter (PC) έχει λάβει τη διεύθυνση της αρχικής εντολής του προγράμματος, δηλαδή την τιμή 0300h, τοποθετήστε τον κέρσορα στο MSB της πόρτας P2. Πατήστε το πλήκτρο F1, ώστε να αρχίσει να εκτελείται το κυρίως πρόγραμμα. Ο άσσος ολισθαίνει στην πόρτα Ρ1 κυκλικά προς τα δεξιά. Καθώς το πρόγραμμα τρέχει, αλλάξτε την τιμή του MSB της πόρτας P2 σε μηδέν. Ο άσσος θα αρχίσει τώρα να ολισθαίνει στην πόρτα Ρ1 κυκλικά προς τα αριστερά. Συνεχίστε τους πειραματισμούς μεταβάλλοντας την τιμή του MSB της πόρτας P2 και παρατηρώντας τη φορά της κίνησης του άσσου στην πόρτα P1. Άσκηση 4 (σύνοψη της εκφώνησης) Τροποποιήστε το πρόγραμμα της Άσκησης 3, ώστε τα υπόλοιπα τα υπόλοιπα 7 bits της πόρτας Ρ2 να καθορίζουν την ταχύτητα της κίνησης του άσσου. Για αυτό το σκοπό, αν αυτά τα 7 bits συνιστούν έναν αριθμό, έστω x, η καθυστέρηση που προκαλεί η ρουτίνα καθυστέρησης να είναι ανάλογη του αριθμού x. Μεγάλο x μεγάλη καθυστέρηση μικρή ταχύτητα κίνησης. Μικρό x μικρή καθυστέρηση μεγάλη ταχύτητα κίνησης. Για την υλοποίηση της ζητούμενης διαδικασίας, θα γράψουμε μόνο κατάλληλη υπορουτίνα καθυστέρησης, επί της ουσίας θα κάνουμε μία παραλλαγή της ΚΑΤΗΥ. Το κυρίως πρόγραμμα θα παραμείνει αμετάβλητο, όπως στην Άσκηση 3. Τα bullets που εμφανίζονται με italics, αντιστοιχούν σε εντολές ίδιες με εκείνες που χρησιμοποιήσαμε κατά τη συγγραφή της αρχικής KATHY. Τροποποίηση της υπορουτίνας KATHY KATHY: Φυλάξτε στη στοίβα την τιμή του PSW. Αυτή είναι πάντοτε μια καλή προγραμματιστική τεχνική. Φυλάξτε στη στοίβα την τιμή του καταχωρητή R2, της ομάδας καταχωρητών 0, δηλαδή την τιμή του καταχωρητή που βρίσκεται στη διεύθυνση 02h. Η υπορουτίνα χρησιμοποιεί αυτόν τον καταχωρητή, οπότε καλού-κακού προστατεύουμε την τιμή του. Για τον ίδιο λόγο φυλάξτε στη στοίβα την τιμή του καταχωρητή R3, της ομάδας καταχωρητών 0, δηλαδή την τιμή του καταχωρητή που βρίσκεται στη διεύθυνση 03h. Η υπορουτίνα μας θα περιέχει δύο βρόχους, εμφωλευμένους τον έναν μέσα στον άλλον. Ως μετρητή του εξωτερικού βρόχου, διαλέγουμε τον R2 της ομάδας καταχωρητών 0. Αρχικοποιούμε τον R2 όχι με μια τιμή της αρεσκείας μας, όπως στην αρχική ΚΑΤΗΥ, αλλά με την τιμή της πόρτας P2. Αυτό συμβαίνει διότι η εκφώνηση ζητά τα 7 λιγότερο σημαντικά bits της πόρτας P2 να καθορίζουν την τιμή της καθυστέρησης, δηλαδή προγραμματιστικά την τιμή του R2. Η διαδικασία καθορισμού του R2 ολοκληρώνεται με την αμέσως επόμενη εντολή. 4

Με χρήση κατάλληλης εντολής λογικών πράξεων και μάσκας, μηδενίζουμε το MSB του R2, ενώ παράλληλα διατηρούμε αμετάβλητα τα υπόλοιπα 7 bits του. LEX: Αρχή του εξωτερικού βρόχου! Η πρώτη εντολή του εξωτερικού βρόχου είναι εκείνη που αρχικοποιεί τον μετρητή του εσωτερικού βρόχου. Ως μετρητή του εσωτερικού βρόχου, διαλέγουμε τον R3 της ομάδας καταχωρητών 0. Αρχικοποιούμε τον R3 με μια τιμή της αρεσκείας μας, π.χ. την 30h. LES: Αρχή του εσωτερικού βρόχου! Τεμπέλιασε, μην κάνεις τίποτα! Είσαι κουρασμένος, μην κάνεις τίποτα! Ξεκουράσου λίγο ακόμη, μην κάνεις τίποτα! Ελάττωσε τον μετρητή του εσωτερικού βρόχου κατά 1 και, αν αυτός δεν είναι μηδέν, κάνε μία ακόμη επανάληψη του εσωτερικού βρόχου, διαφορετικά συνέχισε στην επόμενη (αμέσως παρακάτω) εντολή. Ελάττωσε τον μετρητή του εξωτερικού βρόχου κατά 1 και, αν αυτός δεν είναι μηδέν, κάνε μία ακόμη επανάληψη του εξωτερικού βρόχου, διαφορετικά συνέχισε στην επόμενη (αμέσως παρακάτω) εντολή. Όταν τελειώσει η εκτέλεση και των δύο βρόχων, άρχισε να αποκαθιστάς τις τιμές που είχες φυλάξει στη στοίβα. Πρώτα αποκατάστησε τον καταχωρητή R3, της ομάδας καταχωρητών 0. Αποκατάστησε τον καταχωρητή R2, της ομάδας καταχωρητών 0. Αποκατάστησε τον καταχωρητή PSW. Επίστρεψε από την υπορουτίνα καθυστέρησης στο κυρίως πρόγραμμα. Τοποθετήστε στον Program Counter (PC) την τιμή 0300h, δηλαδή τη διεύθυνση της πρώτης εντολής του κυρίως προγράμματος της Άσκησης 3. Στη συνέχεια, τοποθετήστε τον κέρσορα στην πόρτα P2 και εκκινήστε το πρόγραμμα πατώντας F1. Επειδή η πόρτα P2 αρχικοποιείται προγραμματιστικά με άσσους κατά την εκτέλεση του κυρίως προγράμματος της Άσκησης 3, ο άσσος κινείται αργά στην πόρτα P1. Καθώς το πρόγραμμα εκτελείται, δοκιμάστε να μηδενίσετε χειροκίνητα κάποιους από τους 7 λιγότερο σημαντικούς άσσους της πόρτας P2. Θα παρατηρήσετε ότι η κίνηση του άσσου στην πόρτα P1 επιταχύνεται! Συνεχίστε κάνοντας και άλλες αλλαγές του δεδομένου της πόρτας Ρ2. 5