ΜΑΘΗΜΑ: ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΘΕΜΑΤΑ ΙΟΥΝΙΟΥ 2014 Καθηγητής:Νικολαΐδης Νικ. ΑΠΑΝΤΗΣΕΙΣ Ημ/νία εξέτασης:30-6-2014 ΘΕΜΑ 1 α) Να σχεδιαστεί μία μνήμη ROM που να δίνει στις εξόδους της το πλήθος των ημερών του μήνα, ο αριθμός του οποίου (από 1 μέχρι 12) δίνεται στις εισόδους της. Αγνοήστε τα δίσεκτα έτη. Να γραφεί η οργάνωση και το μέγεθος της μνήμης. β) Περιγράψτε τη λειτουργία των εντολών CJNE @R0,#100,100 και JBC 18,19. α) Ο μέγιστος αριθμός που θα εφαρμόζεται στην είσοδο είναι το 12 που γράφεται 1100. Άρα, η ROM θα έχει 4 εισόδους, Α0 μέχρι Α3. Ο μέγιστος αριθμός που θα εμφανίζεται στην έξοδο θα είναι το 31 που γράφεται 11111. Άρα, η ROM θα έχει 5 εξόδους, μέχρι. Πριν τη σχεδίαση της μνήμης, προϋπολογίζουμε ότι η οργάνωση της μνήμης θα είναι 2 4 x5=16x5 και το μέγεθος 80 bits. Μετά τη σχεδίαση θα δούμε ότι η μνήμη θα είναι μικρότερη. Ο πίνακας αλήθειας της ROM είναι ο εξής. 8 4 2 1 16 8 4 2 1 Α3 A2 A1 A0 0 0 0 0 W0 x x x x x 0 0 0 1 W1 1 1 1 1 1 ΙΑΝ 0 0 1 0 W2 1 1 1 0 0 ΦΕΒ 0 0 1 1 W3 1 1 1 1 1 ΜΑΡ 0 1 0 0 W4 1 1 1 1 0 ΑΠΡ 0 1 0 1 W5 1 1 1 1 1 ΜΑΙ 0 1 1 0 W6 1 1 1 1 0 ΙΟΥΝ 0 1 1 1 W7 1 1 1 1 1 ΙΟΥΛ 1 0 0 0 W8 1 1 1 1 1 ΑΥΓ 1 0 0 1 W9 1 1 1 1 0 ΣΕΠ 1 0 1 0 W10 1 1 1 1 1 ΟΚΤ 1 0 1 1 W11 1 1 1 1 0 ΝΟΕ 1 1 0 0 W12 1 1 1 1 1 ΔΕΚ 1 1 0 1 W13 x x x x x 1 1 1 0 W14 x x x x x 1 1 1 1 W15 x x x x x Παρατηρούμε ότι ===1. Άρα, οι έξοδοι της μνήμης που θα συμμετέχουν στον πίνακα μνήμης θα είναι μόνο 2, η και η. Απαντήσεις θεμάτων θεωρίας Μικροϋπολογιστών Ιουνίου 2014 Νικολαΐδης Νικ. - 1 -
W0 Αποκωδ/τής 4-σε-16 W1 W2 W3 W4 W5 W6 W7 W8 W9 W10 W11 W12 W13 W14 W15 Ιαν Φεβ Μαρ Απρ Μαι Ιουν Ιουλ Αυγ Σεπ Οκτ Νοε εκ VCC A3 A2 A1 A0 Η οργάνωση και το μέγεθος της ROM θα είναι 2 4 x2=32 bits. β) CJNE @R1,#200,50: Σύγκρινε το περιεχόμενο της έμμεσης μνήμης RAM με διεύθυνση που περιέχεται στον R1 με τον αριθμό 200. Διακλαδώσου 50 θέσεις μετά τη διεύθυνση της αρχής της επόμενης εντολής αν δεν είναι ίσα. JBC 19,18: Έλεγξε το bit με διεύθυνση 19 και, αν είναι 1, διακλαδώσου 18 θέσεις μετά τη διεύθυνση της επόμενης εντολής. Μηδένισε το bit μετά τον έλεγχο. ΘΕΜΑ 2 α) Περιγράψτε το ρόλο των καταχωρητών SP, PC, DPTR και R0 R7. β) Γράψτε ένα πρόγραμμα που να προσθέτει τις εξής θέσεις της απευθείας RAM. Απαντήσεις θεμάτων θεωρίας Μικροϋπολογιστών Ιουνίου 2014 Νικολαΐδης Νικ. - 2 -
30h 32h 31h + 35h 34h 33h 39h 38h 37h 36h α) SP: Stack Pointer = Δείκτης της στοίβας. Περιέχει τη διεύθυνση της κορυφής της στοίβας. PC: Program Counter = Απαριθμητής προγράμματος. Περιέχει τη διεύθυνση του επόμενου προς ανάκληση byte προγράμματος. DPTR: Data Pointer = Δείκτης δεδομένων. Περιέχει τη διεύθυνση του byte για προσπέλαση στις εξωτερικές μνήμες ROM και RAM μέσω των εντολών MOVC @DPTR και MOVX @DPTR. R0 R7: Καταχωρητές γενικής χρήσης. Σε αυτούς φυλάμε τις πιο συχνά προσπελάσιμες μεταβλητές για μεγαλύτερη ταχύτητα στην εκτέλεση του προγράμματος. Οι καταχωρητές R0 και R1 έχουν και ειδική χρήση. Χρησιμοποιούνται ως δείκτες στην προσπέλαση της εσωτερικής έμμεσης RAM. β) 30h #0 32h 31h + 35h 34h 33h 39h 38h 37h 36h Μεταφέρουμε στο αποτέλεσμα τον πρώτο αριθμό και προσθέτουμε στο αποτέλεσμα τους άλλους δύο. cseg at 0 MOV 36h,30h MOV 37h,#0 MOV 38h,#0 MOV 39h,#0 MOV A,31h ADD A,36h MOV 36h,A MOV A,32h ADDC A,37h MOV 37h,A MOV A,#0 ADDC A,38h MOV 38h,A MOV A,33h ADD A,36h MOV 36h,A MOV A,34h ADDC A,37h MOV 37h,A MOV A,35h ADDC A,38h Απαντήσεις θεμάτων θεωρίας Μικροϋπολογιστών Ιουνίου 2014 Νικολαΐδης Νικ. - 3 -
MOV 38h,A MOV A,#0 ADDC A,39h MOV 39h,A JMP $ Θα μπορούσε να μεταφερθεί στο αποτέλεσμα οποιοσδήποτε αριθμός και να προστεθούν στο αποτέλεσμα οι δύο άλλοι. ΘΕΜΑ 3 α) Σχεδιάστε ένα κύκλωμα που να συνδέει στο διάδρομο δεδομένων του 8051 δύο 8μπιτες θύρες εισόδου με ένα ολοκληρωμένο 74HC573 για κάθε θύρα. Οι θύρες να προσπελαύνονται με εντολές MOVX Α,@Ri. β) Δίδονται δύο προσημασμένοι 8μπιτοι αριθμοί στις θέσεις 90h και 91h. Να γραφεί πρόγραμμα που να υπολογίζει στη σημαία F0 το πρόσημο του γινομένου τους. α) Εφόσον οι θύρες θα προσπελαύνονται με MOVX A,@Ri, θα πρέπει να χρησιμοποιηθούν οι γραμμές διεύθυνσης A0 A7 (έστω Α6 και Α7). Επομένως, είναι υποχρεωτική η χρήση address latch. 8051 D8 Q8 Q7 Q6 Q5 Q4 Q3 Q2 Q1 A0 A1 A2 A3 A4 A5 A6 A7 Q8 Q7 Q6 Q5 Q4 Q3 Q2 Q1 D8 INA0 INA1 INA2 INA3 INA4 INA5 INA6 INA7 ALE LE OE OE LE VCC A6 A7 Q8 Q7 Q6 Q5 Q4 Q3 Q2 Q1 D8 INB0 INB1 INB2 INB3 INB4 INB5 INB6 INB7 RD OE LE VCC β) Το πρόσημο του γινομένου δύο αριθμών είναι το XOR των πρόσημων. cseg at 0 Απαντήσεις θεμάτων θεωρίας Μικροϋπολογιστών Ιουνίου 2014 Νικολαΐδης Νικ. - 4 -
MOV R0,#90h MOV A,@R0 INC R0 XRL A,@R0 MOV C,ACC.7 MOV F0,C JMP $ ΘΕΜΑ 4 α) Να σχεδιαστεί ο αποκωδικοποιητής για ένα σύστημα μνήμης με μία RAM 16 Kbytes, μία ROM 32 Kbytes και 4 περιφερειακά που το καθένα απαιτεί 4 K θέσεις. β) Γράψτε μία υπορουτίνα ADD_A_16 που να προσθέτει το περιεχόμενο του Α στις δύο θέσεις μνήμης που δείχνει ο R0 (το high byte πρώτο, το low byte στην επόμενη θέση). Στη συνέχεια γράψτε ένα πρόγραμμα που να καλεί την ADD_A_16 και να υπολογίζει στον Α, τον μέσο όρο των 16 αριθμών που περιέχονται στις θέσεις μνήμης από d:50h και μετά. α) Η συνολική μνήμη που ζητείται να συνδεθεί είναι ακριβώς 64 Kbytes. Άρα, θα χρησιμοποιηθεί ένας αποκωδικοποιητής από 4 σε 16 του οποίου η κάθε έξοδος θα αποκωδικοποιεί 4 Kbytes. Για τη RAM θα βάλουμε μία πύλη AND 4 εισόδων και για τη ROM μία 8 εισόδων. Απαντήσεις θεμάτων θεωρίας Μικροϋπολογιστών Ιουνίου 2014 Νικολαΐδης Νικ. - 5 -
0 1 2 RAM Αποκωδ/τής 4-σε-16 3 4 5 6 7 8 9 A B C D E F ROM P1 P2 P3 P4 A15 A14 A13 A12 β) cseg at 0 MOV R0,#30h MOV 30h,#0 MOV 31h,#0 MOV R1,#50h MOV R7,#16 LOOP: MOV A,@R1 ; είκτης του αθροίσµατος ; είκτης των αριθµών ;Μετρητής βρόχου για τους 16 αριθµούς ; ιάβασε έναν αριθµό INC R1 ; είξε τον επόµενο CALL ADD_A_16 ;Πρόσθεσέ τον στο άθροισµα DJNZ R7,LOOP MOV A,31h ; ιαίρεση του αθροίσµατος διά 16 SWAP A ;π.χ. αν το άθροισµα είναι 07F8 ANL Α,#0Fh ;o Μ.Ο. θα είναι 7F. MOV 40h,A ;Προσωρινή θέση MOV A,30h SWAP A Απαντήσεις θεμάτων θεωρίας Μικροϋπολογιστών Ιουνίου 2014 Νικολαΐδης Νικ. - 6 -
ADD A,40h JMP $ ADD_A_16: INC R0 ADD A,@R0 MOV @R0,A DEC R0 CLR A ADDC A,@R0 MOV @R0,A RET end Απαντήσεις θεμάτων θεωρίας Μικροϋπολογιστών Ιουνίου 2014 Νικολαΐδης Νικ. - 7 -