|
Η εξομοίωση χρησιμεύει στο να βρίσκονται τα σφάλματα του
κώδικα και να διορθώνονται πριν τον προγραμματισμό του
μικροεπεξεργαστή.
Παρακάτω θα δείτε εξομοίωση
βήμα - βήμα, δηλαδή ανά εντολή και εξομοίωση με σημεία διακοπής
(Breakpoints), δηλαδή το PC (ο υπολογιστής σας) "τρέχει" τον κώδικα που
έχετε ελέγξει γρήγορα, και σταματά στο σημείο που έχετε δηλώσει σαν
breakpoint, για να κάνετε εξομοίωση βήμα - βήμα.
Εξομοίωση βήμα -
βήμα
Η εξομοίωση βήμα - βήμα είναι ο
καλλίτερος τρόπος για να βρείτε και να διορθώσετε τα λάθει του κώδικα που
γράψατε. Θα μπορούσε κάποιος να σκεφτεί πως αν είναι έτοιμο το
κύκλωμα μπορεί να προγραμματίζει τον PIC και να τον δοκιμάζει απευθείας.
Σκεφτείτε όμως πως ο PIC με χρονισμό 4MHz εκτελεί κάθε εντολή ανά 1 μSec,
με αποτέλεσμα να "κολλάει" ή να κάνει λάθει που δεν υπάρχει περίπτωση ποτέ
να τα αντιληφθείτε. Συνεπώς καταλαβαίνετε ότι η εξομοίωση βήμα - βήμα σας
δίνει την δυνατότητα να βλέπετε και να ελέγχετε, το τι συμβαίνει όταν
εκτελείται κάθε εντολή.
Προετοιμασία
| Ξεκινήστε το MPLAB, και ανοίξτε το
Project που έχετε δημιουργήσει π.χ το Test.mcp. |
| Κάντε κλικ στο Project > Make. |
| Αφού γίνει η μεταγλώττιση με επιτυχία,
κάντε κλικ στο View και διαλέξτε
Watch, Hardware stack, Special Function
Registers. |
| Κάντε κλικ στο Debugger και διαλέξτε Stopwatch, τώρα τα βασικά παράθυρα που
χρειάζονται για την εξομοίωση υπάρχουν στην
οθόνη. |
Παρατηρήστε πώς το παράθυρο με τις εντολές του κώδικα
έχει αποκτήσει ένα πράσινο βέλος στο αριστερό
περιθώριο.
Αυτό το βέλος κάθε φορά που θα κάνετε κλικ στο πλήκτρο
F7 ή στο κουμπί βήμα (Step into) θα μετακινείται στην επόμενη εντολή
που πρόκειται να εκτελεστεί.

Εάν θέλετε να δείτε την λίστα του κώδικα που
δημιουργήθηκε μετά την μεταγλώττιση (Test.lst) κάντε κλικ
στα:
File > Open > Αρχεία
Τύπου: All Files (*.*) > Test.lst
Εξομοίωση βήμα -
βήμα
(1) Μηδενισμός
(Reset)
Κάντε κλικ στα
Debugger > Reset > Prossesor Reset ή πατήστε
το κουμπί F6
Μπορείτε αν θέλετε για συντομία να πατήσετε το
κουμπί (Reset), μετά από αυτή την ενέργεια ο
εξομοιωτής βρίσκεται στην ίδια κατάσταση με εκείνη που βρίσκεται ο PIC
μετά την εφαρμογή της τάσης τροφοδοσίας.
| Τα ψηφία (Bit) TO
(Time Out) και PD (Power Down) του καταχωρητή Status έχουν
την τιμή 1, είναι η αρχική κατάσταση του καταχωρητή μετά το
μηδενισμό (Reset). |
| Ο καταχωρητής OPTION_REG έχει
πάρει την τιμή 255 |
| Ο καταχωρητής TRISA έχει
πάρει την τιμή 31 |
| Ο καταχωρητής TRISB έχει
πάρει την τιμή 255 |
| Παρατηρείστε τις αλλαγές που
έχουν γίνει στο παράθυρο Special Function Registers. (Οι αλλαγές
φαίνονται με κόκκινο χρώμα) |

2) Εξομοίωση Βήμα - Πρώτο
(3)
Εξομοίωση Βήμα - Δεύτερο
(4) Εξομοίωση Βήμα - Τρίτο
(5)
Εξομοίωση Βήμα - Τέταρτο
Από εδώ και
στο εξής κάθε φορά που κάνετε κλικ στο κουμπί
(Step) ο μετρητής προγράμματος θα αλλάζει την διεύθυνση που δείχνει από 1
σε 2 και αντίστροφα. Κάθε φορά που θα
εκτελείται η εντολή INCF η οποία βρίσκεται στην διεύθυνση 1, ο καταχωρητής
0Ch θα αυξάνει το περιεχόμενο του κατά 1.
Εξομοίωση με σήμανση διακοπής
(breakpoint)
Παρακάτω θα δείτε την διαδικασία
εξομοίωσης με σημάνσεις διακοπής. Η εκτέλεση των
εντολών του κώδικα σταματά αυτόματα στην εντολή που έχει σημανθεί με
διακοπή.
Breakpoint setting - Τρόπος ορισμού
σήμανσης διακοπής
| ( Τρόπος 1 ) |
| Πηγαίνετε τον δείκτη του ποντικιού σας
στο σημείο που θέλετε να ορίσετε διακοπή και κάντε διπλό κλικ (π.χ
στην εντολή INCF). |
| Παρατηρήστε στο αριστερό γκρίζο
περιθώριο ότι εμφανίζεται η σήμανση της διακοπής με ένα
κεφαλαίο Β . |
| Για να αφαιρέσετε την σήμανση διακοπής
κάντε στο ίδιο σημείο διπλό κλικ ξανά. |

| ( Τρόπος 2 ) |
| Κάντε κλικ στα: Debugger > Breakpoints ή πατήστε το κουμπί
F2 |
| Θα εμφανιστεί το ακόλουθο παράθυρο με
ονομασία Breakpoints |
| Πληκτρολογήστε την τιμή 0x1 για να
δηλώσετε διακοπή στην εντολή INCF και κάντε κλικ στο
ΟΚ. |
| (Πρέπει να γνωρίζετε την δεκαεξαδική
διεύθυνση της εντολής που θέλετε να ορίσετε breakpoint, την οποία
μπορείτε να βρείτε μέσα στο αρχείο
Test.lst) |

| Παρατηρήστε στο αριστερό γκρίζο
περιθώριο ότι εμφανίζεται η σήμανση της διακοπής με ένα
κεφαλαίο Β . |
| Για να αφαιρέσετε την σήμανση
διακοπής κάντε στο σημείο Β
διπλό κλικ. |

Εξομοίωση με σήμανση
διακοπής
(1) Μηδενισμός
(Reset)
Κλαντε κλικ στο κουμπί μηδενισμού (Reset), μετά από αυτή την ενέργεια ο
εξομοιωτής βρίσκεται στην ίδια κατάσταση με εκείνη που βρίσκετε ο PIC
μετά την εφαρμογή της τάσης τροφοδοσίας. Το
πράσινο βελάκι θα δείξει την διεύθυνση 0. Δείτε
τους καταχωρητές που αλλάζουν.
| 02h
|
(PC) |
 |
00 |
|
| 03h |
(STATUS) |
|
18 |
 |
(2) Ορισμός διακοπής (breakpoint)
Κάντε διπλό κλικ στην εντολή
GOTO. Παρατηρήστε στο αριστερό γκρίζο
περιθώριο ότι εμφανίζεται η σήμανση της διακοπής με ένα
κεφαλαίο Β .
(3)
Διαδικασία εξομοίωσης
κάντε κλικ στο κουμπί εκκίνησης
(Run) ή κάντε κλικ στα: Debugger > Run ή πατήστε το
κουμπί F9. Το
πράσινο βελάκι θα δείξει την διεύθυνση 2. Δείτε
τους καταχωρητές που αλλάζουν.
| 02h |
(PC) |
 |
00 |
> |
02 |
 |
Ο μετρητής προγράμματος (program
counter) δείχνει την διεύθυνση 2. |
| 0Ch
|
|
|
00 |
> |
01 |
|
Ο καταχωρητής 0Ch αυξάνει το
περιεχόμενο του κατά
1. |
(4)
Διαδικασία εξομοίωσης
κάντε κλικ στο κουμπί εκκίνησης
(Run) Το πράσινο βελάκι θα δείξει
την διεύθυνση 2. Δείτε τους καταχωρητές που
αλλάζουν.
| 0Ch
|
|
|
01 |
> |
02 |
|
Ο καταχωρητής 0Ch αυξάνει το
περιεχόμενο του κατά
1. |
Κάθε φορά
που κάνετε κλικ στο κουμπί εκκίνησης (Run) το
περιεχόμενο του καταχωρητή 0Ch αυξάνει κατά 1.
(5) Τερματισμός εξομοίωσης
Για να τερματίσετε την εξομοίωση πατήστε το
κουμπί (Halt the processor) ή κάντε κλικ στα: Debug > Halt ή πατήστε το
κουμπί F5.
|