$29.99
3η ΟΜΑΔΑ ΑΣΚΗΣΕΩΝ
ΓΙΑ ΤΟ ΜΑΘΗΜΑ "Συστήματα Μικροϋπολογιστών"
Ασκήσεις προσομοίωσης (να υλοποιηθούν και να δοκιμαστούν στο πρόγραμμα προσομοίωσης του εκπαιδευτικού συστήματος μLAB)
1η ΑΣΚΗΣΗ: Στο μLAB να γραφεί πρόγραμμα Assembly, που να ελέγχει μέσω της διακοπής τύπου RST 6.5 τα φώτα ενός χώρου. Όταν προκαλείται διακοπή τύπου RST 6.5 (πάτημα πλήκτρου INTR) να αναβοσβήνουν (με περίοδο ~1/2 sec) όλα τα LED της πόρτας εξόδου. Αυτό να παραμένει για περίπου ένα (1) λεπτό της ώρας και μετά να σβήνει. Αν όμως ενδιάμεσα ξαναενεργοποιηθεί η διακοπή να ανανεώνεται ο χρόνος του ενός λεπτού. Ο χρόνος που υπολείπεται να απεικονίζεται σε sec συνεχώς στα 2 δεξιότερα δεκαεξαδικά ψηφία των 7-segments displays και σε δεκαδική μορφή.
Να γίνει χρήση των ρουτινών χρονοκαθυστέρησης του εκπαιδευτικού συστήματος μLAB.
Σημ.: Στον προσομοιωτή υπάρχει η “ιδιοτροπία” να προκαλούνται 2 διακοπές σε κάθε ενεργοποίηση της διακοπής (προκαλείται μία διακοπή στο πάτημα και μία στο άφημα του πλήκτρου ή του ποντικιού). Ένας τρόπος διαχείρισης του προβλήματος είναι στον έλεγχο λειτουργίας να κρατάτε πατημένο το πλήκτρο και όταν το αφήνετε να υπολογίζεται αυτό ως 2η διακοπή. Αλλιώς λόγω της μικρής διάρκειας μεταξύ πατήματος και απελευθέρωσης του πλήκτρου δεν αλλάζει τη λειτουργία η διπλή διακοπή.
2η ΑΣΚΗΣΗ: Να υλοποιηθεί και να εκτελεστεί στο μLAB πρόγραμμα σε assembly που όταν προκαλείται διακοπή τύπου RST 6.5 (πάτημα πλήκτρου INTR) να διαβάζει τα 2 διαδοχικά δεκαεξαδικά ψηφία ενός αριθμού (00-FFH => 0-255) που δίνονται στη συνέχεια από το πληκτρολόγιο (χρήση της ρουτίνας KIND) και να τα απεικονίζει στα 2 αριστερότερα 7-segment display (βάσει των ρουτινών DCD και STDM). Να συγκρίνει την τιμή αυτή με τρία κατώφλια Κ1, Κ2 και Κ3 με Κ1<Κ2<Κ3, που οι τιμές τους βρίσκονται στους καταχωρητές C, D και Ε αντίστοιχα. Για να είναι ο έλεγχος εύκολος, στον κώδικα βάλτε συγκεκριμένες τιμές στους καταχωρητές C, D και Ε. Στην συνέχεια να ανάβει ένα από τα τέσσερα LSB LED εξόδου που αντιστοιχούν στις περιοχές τιμών [0..Κ1], (Κ1..Κ2], (Κ2..Κ3] και (Κ3..FFH]. Το κύριο πρόγραμμα να είναι μετά τις αρχικοποιήσεις ένα ατέρμων βρόχος αναμονής (των διακοπών).
Σημ.: Και εδώ η διπλή διακοπή δεν δημιουργεί πρόβλημα στον έλεγχο της λειτουργίας (απλά η ρουτίνα εξυπηρέτησης της διακοπής θα τρέξει 2 φορές).
Θεωρητικές Ασκήσεις
3η ΑΣΚΗΣΗ: α) Δώστε τη μακροεντολή INR16 ADDR που να αυξάνει έναν αριθμό Χ των 16 bit αποθηκευμένο σε 2 διαδοχικές θέσεις στη μνήμη ως εξής: ΧLOW=(ADDR) , ΧHIGH=(ADDR+1). Το αποτέλεσμα να επιστρέφει στις ίδιες θέσεις. Η εκτέλεση της μακροεντολής δεν πρέπει να επηρεάζει τα περιεχόμενα των υπολοίπων καταχωρητών γενικού σκοπού.
β) Δώστε τη μακροεντολή FILL ADDR, K, η οποία γεμίζει ένα τμήμα μνήμης με αρχική διεύθυνση ADDR και μήκος K με τους αριθμούς Κ, Κ-1, ..2, 1. Το μέγεθος του τμήματος Κ μπορεί να είναι από 0 έως 255. Θεωρείστε ότι για Κ=0 το μέγεθος του τμήματος να είναι ίσο με 256 και οι αριθμοί που θα αποθηκευθούν να είναι 0, 255, 254, …1.
γ) Δώστε τη μακροεντολή RHLR Q, R που περιστρέφει τα περιεχόμενα του κρατουμένου CY, των καταχωρητών Q και R κατά μια θέση αριστερά. Οι καταχωρητές Q και R μπορεί να είναι ένας συνδυασμός εκ των B, C, D, E, H και L (φυσικά Q≠R). Η μακροεντολή συμπεριφέρεται στα CY, Q και R σαν να είναι ένας 17-bit καταχωρητής: CY(17ο bit): Q(16ο -9ο bit): R(8ο -1ο bit). Μπορείτε να κάνετε χρήση της στοίβας για την αποθήκευση και επαναφορά τιμής καταχωρητών.
4η ΑΣΚΗΣΗ: Στο μΕ 8085 εκτελείται η εντολή JMP 0900H. Ο μετρητής προγράμματος είναι (PC)=0800H και ο δείκτης σωρού (SP)=1FF0H. Στο μέσον της εκτέλεσης της εντολής συμβαίνει διακοπή RST 6.5. Δώστε τις νέες τιμές των PC, SP, το περιεχόμενο του σωρού καθώς και τις λειτουργίες που συμβαίνουν.
5η ΑΣΚΗΣΗ: Να γραφεί πρόγραμμα Assembly (και η ρουτίνα εξυπηρέτησης) σε μΥ-Σ 8085 που να λαμβάνει 16 δεδομένα των 8 bit από μια συσκευή. Το καθένα μεταφέρεται σε 2 βήματα (πρώτα τα 4 MSB και μετά τα 4 LSB – συνολικά θα χρειαστούν 32 βήματα) μέσω των (X0-X3) της θύρας PORT_IN (20Η) ενώ τα υπόλοιπα MSbit της θύρας (X4-X7) δεν χρησιμοποιούνται. Η συσκευή για κάθε 4 bit που αποστέλλει, προκαλεί πριν διακοπή RST5.5. Να υπολογιστεί ο μέσος όρος των 16 δεδομένων με ακρίβεια 8 bit.