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 τον πηγαίο κώδικα.