| Home Pic in Greek Οδηγός χρήσης Pic Λίγα λόγια για τον Κώδικα |
Λίγα λόγια για τον Κώδικα
Ο PIC μπορεί να πραγματοποιήσει διάφορες λειτουργίες, εκτελώντας τις εντολές που διαβάζει από την μνήμη προγράμματος (program memory). Η πρώτη εντολή που εκτελείται μετά την εφαρμογή της τάσης τροφοδοσίας, είναι αυτή που θα είναι αποθηκευμένη στην διεύθυνση 0 (0000h). Εάν η εντολή πήγαινε GOTO (νέα διεύθυνση) βρεθεί εκεί, ο μικροεπεξεργαστής θα συνεχίσει την εκτέλεση των εντολών που θα βρει, στην νέα διεύθυνση. Σύνταξη εντολών (Κώδικας), σημαίνει να βάλετε σε σειρά τις λειτουργίες που πρέπει να κάνει ο μικροεπεξεργαστής και να τον οδηγήσετε μέσο των εντολών στην πραγματοποίηση τους. Για αυτό θα πρέπει πριν ξεκινήσετε να γράφετε κώδικα, να έχετε αποφασίσει τι ακριβώς θέλετε να κάνετε και να έχετε ετοιμάσει το διάγραμμα ροής προγράμματος (Block Diagram). Παρακάτω θα δείτε ένα παράδειγμα γραφής κώδικα. Job of the PIC - Εργασία Αύξηση του περιεχομένου ενός καταχωρητή γενικής χρήσης. (Δώστε προσοχή στον τρόπο που γράφονται οι εντολές και να θυμάστε πως είναι απλό παράδειγμα και όχι κανονικός κώδικας.) Condition - Ορισμός Ο καταχωρητής γενικής χρήσης του παραδείγματος θα είναι ο 0Ch. (Υπάρχει τρόπος να βαφτίσετε εικονικά κάθε καταχωρητή γενικής χρήσης με όνομα που θα μπορείτε να θυμάστε ευκολότερα (Π.Χ count)) Processing flow - Γραφή κώδικα & ροή προγράμματος Η εκτέλεση των εντολών μετά την εφαρμογή της τάσης τροφοδοσίας ξεκινά από την διεύθυνση 0 (0000h). Σε πραγματικό πρόγραμμα (κώδικα) υπάρχει ακολουθία εντολών αρχικοποίησης (initialization), εδώ την παρακάμπτουμε για να γίνει σύντομο το παράδειγμα και θα αναφερθούμε αναλυτικά αργότερα.
Διεύθυνση μνήμης | Οδηγία | Εντολή
--- | --- | ---
0000h | Μηδένισε το περιεχόμενο του καταχωρητή 0Ch | CLRF 0Ch
0001h | Αύξησε το περιεχόμενο του κατά ένα, αποθήκευσε στον ίδιο | INCF 0Ch,1
0002h | Πήγαινε στην διεύθυνση 0001h, εκτέλεσε την εντολή που θα βρεις | GOTO 0001h
Οι εντολές που θα γραφτούν στην μνήμη προγράμματος μετά τον προγραμματισμό του μικροεπεξεργαστή είναι οι παρακάτω:
Διεύθυνση μνήμης | Εντολές | Σχόλια
--- | --- | ---
0000h |  | Τα κόκκινα ψηφία είναι η εντολή CLRF. Τα πράσινα ψηφία είναι η διεύθυνση του καταχωρητή 0Ch.
0001h |  | Τα κόκκινα ψηφία είναι η εντολή INCF Το μπλε ψηφίο είναι αποθήκευση αποτελέσματος στον 0Ch. Τα πράσινα ψηφία είναι η διεύθυνση του καταχωρητή 0Ch
0002h |  | Τα κόκκινα ψηφία είναι η εντολή GOTO. Τα πράσινα ψηφία είναι η διεύθυνση που πρέπει να πάει ο PIC
Όπως λοιπόν είδατε παραπάνω μετά την εφαρμογή της τάσης τροφοδοσίας ο PIC μηδενίζει τον καταχωρητή 0Ch, αυξάνει το περιεχόμενο του κατά ένα, και στη συνέχεια πηγαίνει στην διεύθυνση 1 (0001h) και επαναλαμβάνει την λειτουργία μέτρησης. Με αυτόν τον πολύ απλό κώδικα φτιάξαμε έναν μετρητή ο οποίος μετρά από το 0 έως το 255 κάνοντας συνεχόμενους κύκλους (Loop). Επειδή ο PIC όπως και όλα τα ψηφιακά υπολογιστικά συστήματα καταλαβαίνουν μόνο το 0 και το 1, υπάρχουν προγράμματα τα οποία μεταφράζουν τις εντολές (μνημονικά) που γράφει ο προγραμματιστής στη λεγόμενη γλώσσα μηχανής. Αυτά τα προγράμματα λέγονται μεταγλωττιστές (Compilers) ή συμβολομεταφραστές (Assemblers). Παρακάτω μπορείτε να δείτε τον πηγαίο κώδικα (Source code - αυτόν που θα γράφετε εσείς) και την λίστα εντολών (Listing File) μετά την μεταγλώττιση από το πρόγραμμα MPASM (Assembler) της Microchip.
| The Source Code - Πηγαίος κώδικας
                    LIST            P=16F84A
                    ORG             0
                    CLRF            0C
    LOOP            INCF            0C,1
                    GOTO            LOOP
                    END
| Στο παράδειγμα αυτό χρησιμοποιούμε δεκαεξαδική αρίθμηση γιατί αυτή είναι ή εξ' ορισμού επιλεγμένη από τον μεταγλωττιστή MPASM. Θα μπορούσαμε να χρησιμοποιήσουμε δεκαδική αρίθμηση γράφοντας (Π.Χ .12 ή D'12') ή ακόμα και δυαδική αρίθμηση γράφοντας (Π.Χ B'1100' ).
| The Listing File - Λίστα εντολών (Μετά την μεταγλώττιση - Compilation)
LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 LIST P=16F84A 0000 00002 ORG 0 0000 018C 00003 CLRF 0C 0001 0A8C 00004 LOOP INCF 0C,1 0002 2801 00005 GOTO LOOP 00006 END
Η στήλη LOC δείχνει τις διευθύνσεις της μνήμης προγράμματος. Η στήλη OBJECT CODE δείχνει τον κώδικα σε γλώσσα μηχανής. Η στήλη LINE δείχνει τον αριθμό γραμμής του κειμένου & η SOURCE TEXT τον πηγαίο κώδικα.