Προετοιμασία
Η
ανίχνευση
σφαλμάτων στο παράδειγμα αυτό γίνεται με την χρήση του εξομοιωτή
(Simulator)
του
MPLAB
της
Microchip .
Αφού έχετε
ετοιμάσει ένα project με το όνομα Signboard1.mcp, έχετε εισάγει το
PIC16F84A.inc και το Signboard1.asm,
μην ξεχάσετε να ανοίξετε το αρχείο Signboard1.lst
κάνοντας κλικ στο File > Open >Αρχεία
τύπου: All files > Signboard1.lst
και τέλος μεταγλωττίστε κάνοντας κλικ
στο
Προσθήκη
παραθύρων Κάντε κλικ στο View και επιλέξτε τα :
File registers , Special function
registers, και EEPROM.
SFR ( Ειδικοί καταχωρητές )

Καταχωρητές (όλοι)

Περιεχόμενα EEPROM

Στην
παρακάτω επεξήγηση οι διευθύνσεις της μνήμης χρησιμοποιούνται για να
βλέπετε σε πιο σημείο της λίστας κώδικα βρίσκεται η εντολή που
εκτελείται εκείνη την
στιγμή.
Εκκίνηση (Εξομοίωση
αρχικοποίησης)
Μηδενισμός μικροεπεξεργαστή
(Reset)
Κάντε κλικ στο κουμπί
, το
πρόγραμμα εξομοίωσης (Simulator)
του
PIC
θα
κάνει Reset
και
ο μετρητής προγράμματος (Program
counter) θα
δείξει
PC=0000.
Εξομοίωση
βήμα—βήμα
Εξομοίωση λειτουργίας
οθόνης
Μετά το τέλος των αρχικών ρυθμίσεων ακολουθεί η
λειτουργία οδήγησης της οθόνης.
Εξομοίωση
βήμα—βήμα
Εξομοίωση λειτουργίας
διακοπής από υπερχείλιση του TMR0
Εξομοίωση με χρήση σημείων διακοπής ροής κώδικα
(Breakpoints)
Εισαγωγή σημείων διακοπής ροής κώδικα
(Breakpoints)
Τα breakpoint μπορούν να εισαχθούν στην εξομοίωση με
την ακόλουθη διαδικασία.
| (1) |
Θέλουμε να εισάγουμε διακοπή ροής (Breakpoint)
στη διεύθυνση 0027h (119). Κάντε διπλό κλικ στην εντολή που
αντιστοιχεί η διεύθυνση στον εξομοιωτή. Αμέσως στο γκρίζο
περιθώριο θα εμφανιστεί το σήμα
Β . |
(2)
 |
κάντε δεξί
κλικ.
 στο μενού που θα
εμφανιστεί κάντε κλικ στο Set Breakpoint με το αριστερό
πλήκτρο του mouse.
Η εντολή που είχατε επιλέξει θα έχει τώρα στο
γκρίζο περιθώριο το σήμα
Β . |
Η εισαγωγή
του σημείου διακοπής
ολοκληρώθηκε. |
κάντε κλικ στο κουμπί ή ακολουθήστε τις επιλογές :
Debugger > Run.
Μετά από σύντομο χρονικό
διάστημα ο εξομοιωτής θα φτάσει στην διεύθυνση 0027h του Breakpoint
και θα σταματήσει εκεί.
Στο MPLAB κατά την εξομοίωση του
κώδικα το Status Bar στο κάτω μέρος της οθόνης του Η/Υ δείχνει
:
![]()
Εξομοίωση αποθήκευσης διεύθυνσης στον
καταχωρητή σωρού (Stack) που είχε ο PC αμέσως πριν συμβεί η
διακοπή.

Εξομοίωση λειτουργίας
οθόνης
Βάλτε ένα σημείο διακοπής (breakpoint), στην εντολή
movlw tm_adj (0037h), (140) της υπορουτίνας
timer_int.
Εξομοίωση βήμα - βήμα
Εξομοίωση με χρήση σημείων διακοπής
(breakpoint)
Διαγράψτε όλα τα σημεία διακοπής που τυχόν έχετε
βάλει, και βάλτε ένα στη διεύθυνση 0048h (161).
κάντε κλικ στο κουμπί ή ακολουθήστε τις επιλογές :
Debugger > Run.
Εξομοίωση βήμα - βήμα
Με την παραπάνω εξομοίωση μπορείτε να δείτε τις
αλλαγές που γίνονται στην κατάσταση των Led (αναμένο - σβηστό) για κάθε
περίοδο διακοπής (interruption).
Εξομοίωση λειτουργίας μετά το τέλος της ανάγνωσης της
EEPROM.
Εξομοίωση με χρήση σημείων
διακοπής ( breakpoint)
Διαγράψτε όλα τα σημεία διακοπής που τυχόν έχετε
βάλει, και βάλτε ένα στη διεύθυνση 0054h (173).
κάντε κλικ στο κουμπί ή ακολουθήστε τις επιλογές :
Debugger > Run.
Εξομοίωση βήμα - βήμα
|