Τι είναι ο πηγαίος κώδικας; Τι είναι κώδικας προγράμματος, εφαρμογή, σφάλματα

  • Προγραμματισμός
  • Άλλοι για διασκέδαση, άλλοι για να αποδείξουν την ύπαρξη ή να διαψεύσουν μια υπόθεση, άλλοι για να ασκήσουν το μυαλό τους (ταξιδεύοντας στην επιφάνεια ενός μπουκαλιού Klein ή σε τετραδιάστατο χώρο), αλλά εκατοντάδες άνθρωποι έχουν δημιουργήσει «εσωτερικές» γλώσσες προγραμματισμού. Έχω περάσει από περίπου 150 από αυτές τις γλώσσες και δεν θα είμαι ποτέ ξανά ο ίδιος.

    "Argh!", "Oof!", "2-ill", "Nhohnhehr", "Noit o" mnain gelb", "DZZZZ", "Ypsilax", "YABALL", fuckfuck - αυτά είναι ξόρκια, η ποίηση είναι μόνο ονόματα ... under catom - παραδείγματα κώδικα στις πιο εντυπωσιακές γλώσσες προγραμματισμού.

    Η τρύπα του κουνελιού είναι βαθιά.

    INTERCAL (Τούρινγκ-πλήρη)



    Don Woods και Jim Lyon

    Μία από τις παλαιότερες εσωτερικές γλώσσες προγραμματισμού. Σύμφωνα με τους δημιουργούς, το όνομά του σημαίνει «Γλώσσα μεταγλωττιστή χωρίς προφορικό ακρωνύμιο». Η γλώσσα δημιουργήθηκε το 1972 από τους μαθητές Don Woods και James M. Lyon ως παρωδία των υπαρχουσών γλωσσών προγραμματισμού και της νοητικής γυμναστικής.

    Γειά σου Κόσμε

    Σε κάθε εντολή προγράμματος μπορεί να δοθεί μια πιθανότητα με την οποία θα εκτελεστεί όταν ξεκινήσει το πρόγραμμα. Επιπλέον, υπάρχουν εντολές που εμποδίζουν την εκτέλεση επόμενων εντολών συγκεκριμένου τύπου ή αλλαγές σε μεταβλητές.

    Γειά σου Κόσμε!

    // «Hello World» του Stephen McGreal.
    // Σημειώστε ότι οι απόψεις που εκφράζονται σε αυτόν τον πηγαίο κώδικα δεν συμπίπτουν απαραίτητα με εκείνες του

    Gr34t l33tN3$$;
    M3h…
    iT 41n"t s0 7rIckY.

    Το L33t sP33k είναι U8er keWl 4nD eA5y wehn u 7hink 1t tHr0uGh.
    1f u w4nn4be UB3R-l33t u d3f1n1t3lY w4nt σε 0n a b4d4sS h4xX0r1ng s1tE!!! ;Π
    w4r3Z c0ll3cT10n2 r 7eh l3Et3r!

    Qu4k3 cL4nS r 7eh bE5t tH1ng 1n teh 3nTIr3 w0rlD!!!
    g4m3s wh3r3 u g3t έως 5h00t ppl r 70tAl1_y w1cK1d!!!
    I"M teh fr4GM4stEr aN I"lL t0t41_1Ly WIpE teh phr34k1ng fL00r ***j3d1 5tYlE*** WITH y0uR h1dE!!! L0L0L0L!
    t3lEphR4gG1nG l4m3rs wit my m8tes r34lLy k1kK$ A$$

    L33t hAxX0r$ CrE4t3 u8er- k3wL 5tUff lIkE n34t pR0gR4mm1nG lAnguidGe$…
    s0m3tIm3$ teh l4nGu4gES l00k jUst l1k3 rE41_ 0neS 7o mAkE ppl Th1nk th3y"r3 ju$t n0rMal lEE7 5pEEk αλλά th3y"re 5ecRetLy c0!!!
    n080DY underDer5tAnD$ l33t SpEaK 4p4rT fr0m j3d1!!!
    50mE παιδί 0n A me$$4gEb04rD m1ghT 8E a r0xX0r1nG hAxX0r wH0 w4nT2 t0 bR34k 5tuFf, 0r mAyb3 ju5t sh0w 7eh wAy5 l3n3t 4mE cp!!! hE i5 teh u8ER!!!
    1t m1ght 8E 5omE v1rus 0r a Pl4ySt4tI0n ch34t c0dE.
    1t 3v3n MiTe jUs7 s4y “H3LL0 W0RLD!!!” u ju5t δεν μπορείτε"T gu3s5.
    tH3r3"s n3v3r anY p0iNt l00KiNg sC3pT1c4l c0s th4t, be1_1Ev3 iT 0r n0t, 1s whAt th1s 1s!!!

    5uxX0r5!!!L0L0L0L0L!!!

    ArnoldC

    Γλώσσα προγραμματισμού Terminator.

    Γειά σου Κόσμε!

    Οκ!

    Είτε η γλώσσα των ουρακοτάγκων, είτε το όνειρο του Γουίλιαμ του Όκαμ.

    Γειά σου Κόσμε!

    Σεφ

    Μια εσωτερική γλώσσα προγραμματισμού που αναπτύχθηκε από τον David Morgan-Mar, στην οποία τα προγράμματα είναι παρόμοια με τις γαστρονομικές συνταγές. Κάθε πρόγραμμα στη γλώσσα αποτελείται από ένα όνομα, μια λίστα μεταβλητών και τις τιμές τους και μια λίστα οδηγιών. Οι μεταβλητές μπορούν να ονομαστούν μόνο με τα ονόματα των βασικών τροφίμων. Καλείται η στοίβα στην οποία τοποθετούνται οι τιμές των μεταβλητών. μπολ ανάμειξης και οι λειτουργίες για τον χειρισμό των μεταβλητών είναι ανάμειξη, ανάδευση και ούτω καθεξής.

    Γειά σου Κόσμε

    Γεια σου Κόσμος σουφλέ.

    Συστατικά.
    72 γρ φασόλια φασόλια
    101 αυγά
    108 γρ λαρδί
    111 φλιτζάνια λάδι
    32 κολοκυθάκια
    119 ml νερό
    114 γρ κόκκινο σολομό
    100 γρ μουστάρδα ντιζόν
    33 πατάτες

    Μέθοδος.
    Βάλτε τις πατάτες στον κάδο του μίξερ.
    Βάλτε τη μουστάρδα ντιζόν στον κάδο του μίξερ.

    Βάλτε τον κόκκινο σολομό στον κάδο του μίξερ.

    Ρίξτε νερό στον κάδο του μίξερ.
    Βάζουμε τα κολοκυθάκια στον κάδο του μίξερ.
    Ρίξτε λάδι στον κάδο του μίξερ.
    Βάλτε το λαρδί στον κάδο του μίξερ.
    Βάλτε το λαρδί στον κάδο του μίξερ.
    Βάζουμε τα αυγά στον κάδο του μίξερ.
    Βάλτε τα φασόλια φασόλια στον κάδο του μίξερ.
    Ρευστοποιήστε τα περιεχόμενα του κάδου ανάμειξης.
    Ρίξτε το περιεχόμενο του μπολ του μίξερ στο ταψί.

    Οποιοδήποτε πρόγραμμα ή διαδικτυακή υπηρεσία, για παράδειγμα, Word, Microsoft Windows, WhatsApp ή ένα πρόγραμμα περιήγησης, που εκκινούν καθημερινά εκατοντάδες εκατομμύρια άνθρωποι, με τον έναν ή τον άλλον τρόπο, αποτελείται από ειδικές οδηγίες. Ή ειδικός κώδικας προγράμματος που καταλαβαίνει το μηχάνημα και του λέει τι πρέπει να κάνει ή, αντίθετα, να μην κάνει. Ή πώς να ανταποκρίνεστε σωστά στις ενέργειες των χρηστών. Τι είναι ο κώδικας προγράμματος θα συζητηθεί σε αυτό το άρθρο.

    Περιγραφή

    Ο κώδικας προγράμματος ενός προγράμματος είναι κείμενο γραμμένο σε μια ειδική γλώσσα που είναι κατανοητή από μια μηχανή. Μπορεί να εκτελεστεί απευθείας από το κείμενο χρησιμοποιώντας διερμηνέα ή να μεταφραστεί σε ειδική φόρμα χρησιμοποιώντας μεταγλωττιστή.

    Ο πηγαίος κώδικας ενός προγράμματος μπορεί να αποτελείται από πολλά αρχεία. Επιπλέον, όλα πρέπει να έχουν την ίδια μορφή. Το κείμενο του προγράμματος που περιέχεται σε αυτά πρέπει να είναι γραμμένο στην ίδια γλώσσα. Είναι αλήθεια ότι μπορεί να υπάρχουν εξαιρέσεις. Για παράδειγμα, στην ανάπτυξη Ιστού, ένα αρχείο σελίδας μπορεί να περιέχει πολλές διαφορετικές γλώσσες προγραμματισμού και πρότυπα. Ανάλογα με την πολυπλοκότητα του έργου, μπορεί να υπάρχουν γλώσσες και τεχνολογίες όπως PHP, HTML και άλλες.

    Όταν συναρμολογούνται, τα πολύπλοκα συστήματα λογισμικού ενδέχεται να απαιτούν μεγάλο αριθμό αρχείων, τα οποία μπορεί να ανέρχονται σε εκατοντάδες. Για να συνεργαστούν σε τόσο μεγάλα έργα, οι προγραμματιστές χρησιμοποιούν πολύ συχνά συστήματα ελέγχου εκδόσεων. Σας επιτρέπουν να εργάζεστε ταυτόχρονα με πολλά αντίγραφα πηγαίου κώδικα, τα οποία σε ένα ορισμένο στάδιο ανάπτυξης μπορούν να συνδυαστούν σε ένα κοινό.

    Ποιότητα κώδικα

    Ο υπολογιστής δεν είναι σε θέση να καταλάβει πώς είναι γραμμένος ο κώδικας για αυτόν, κακός ή καλός. Εάν είναι λειτουργικό και δεν περιέχει σφάλματα, τότε το μηχάνημα θα το εκκινήσει σε κάθε περίπτωση. Ο κακός κώδικας μπορεί να περιπλέξει τις εργασίες συντήρησης λογισμικού. Αυτό ισχύει ιδιαίτερα για μεγάλα έργα. Συνήθως, ο κώδικας υψηλής ποιότητας χαρακτηρίζεται από διάφορες παραμέτρους:

    • Αναγνωσιμότητα κώδικα. Μια ματιά σε αυτό θα πρέπει να είναι αρκετή για να κατανοήσετε γενικά τι υλοποιείται από ένα κομμάτι κώδικα.
    • Η παρουσία σαφών και περιεκτικών σχολίων. Αυτή η παράμετρος επηρεάζει σε μεγάλο βαθμό την αναγνωσιμότητα, την ευκολία εντοπισμού σφαλμάτων, τη δοκιμή υποστήριξης και την αντιμετώπιση προβλημάτων του κώδικα προγράμματος.
    • Χαμηλή δυσκολία.
    • Βελτιστοποίηση κώδικα. Θα πρέπει να οργανωθεί με τέτοιο τρόπο ώστε το πρόγραμμα να χρησιμοποιεί όσο το δυνατόν λιγότερους πόρους συστήματος, όπως μνήμη, χρόνο επεξεργαστή και χώρο στον σκληρό δίσκο.
    • Χωρίς σκουπίδια. Δηλαδή, αχρησιμοποίητες μεταβλητές ή μπλοκ κώδικα στα οποία δεν μπαίνει ποτέ ο έλεγχος προγράμματος.

    Κακόβουλος κώδικας

    Εκτός από χρήσιμα προγράμματα, υπάρχουν μερικά που μπορούν να βλάψουν το σύστημα ή ακόμα και τον εξοπλισμό. Κατά κανόνα, ένας τέτοιος κώδικας γράφεται από άτομα που ενδιαφέρονται για κάποιο όφελος από τη συνεχιζόμενη διαδικασία. Για παράδειγμα, προγράμματα που μπορούν να κλέψουν προσωπικά δεδομένα από τους υπολογιστές των χρηστών. Μπορεί να είναι αριθμοί καρτών πληρωμής, δεδομένα διαβατηρίου ή οποιαδήποτε άλλη εμπιστευτική πληροφορία. Άλλα μπορεί απλώς να παρεμβαίνουν στη λειτουργία του συστήματος, προκαλώντας έτσι βλάβες και αποτρέποντας την πλήρη λειτουργικότητα.

    Ο Jeff Vogel, ένας μακροχρόνιος προγραμματιστής, μοιράστηκε μερικές συμβουλές για να διδάξει στους επίδοξους προγραμματιστές τους κανόνες του καλού κώδικα.

    Συγκεκριμένα, προτείνει να σχολιάζετε πάντα τον κώδικα του προγράμματος σας. Τι είναι ένα σχόλιο; Είναι μια σαφής και συνοπτική περιγραφή του τι συμβαίνει σε μια δεδομένη γραμμή κώδικα ή συνάρτησης. Το γεγονός είναι ότι η ανάπτυξη ενός συγκεκριμένου προγράμματος μπορεί να διαρκέσει για ένα μήνα ή ακόμα και να σταματήσει για κάποιο χρονικό διάστημα. Επιστρέφοντας στη δουλειά σε ένα έργο μετά από μερικούς μήνες, ακόμη και ένας έμπειρος προγραμματιστής θα δυσκολευτεί να κατανοήσει το δικό του πρόγραμμα. Αλλά τα λεπτομερή σχόλια θα μπορούν να αποκαταστήσουν την αλυσίδα των γεγονότων και τη συμπεριφορά του κώδικα.

    Συνιστά επίσης να χρησιμοποιείτε καθολικές μεταβλητές στο πρόγραμμά σας όσο πιο συχνά γίνεται. Αυτό εξηγείται από το γεγονός ότι κατά την αλλαγή του κωδικού προγράμματος, θα πρέπει να προσαρμόσετε την τιμή της μεταβλητής σε ένα μόνο σημείο. Σε αυτήν την περίπτωση, όλες οι συναρτήσεις ή οι διαδικασίες που χρησιμοποιούν την τιμή θα το γνωρίζουν αμέσως και θα εκτελούν λειτουργίες με τα νέα δεδομένα.

    Ονόματα μεταβλητών και εντοπισμός σφαλμάτων

    Το σωστό όνομα των μεταβλητών θα συμβάλει επίσης στη σημαντική μείωση του χρόνου που δαπανάται για τη μελέτη του πηγαίου κώδικα του προγράμματος, ακόμα κι αν ο κώδικας γράφτηκε από εσάς. Δηλαδή, καλός κώδικας θεωρείται το κείμενο όπου οι μεταβλητές και οι συναρτήσεις έχουν ονόματα που καθιστούν σαφές τι ακριβώς κάνουν ή αποθηκεύουν. Σε αυτήν την περίπτωση, θα πρέπει να προσπαθήσετε να μην χρησιμοποιείτε μεγάλα ονόματα μεταβλητών.

    Είναι πολύ σημαντικό να δίνεται μεγάλη προσοχή στην έγκαιρη εξάλειψη των σφαλμάτων. Τι είναι ο κώδικας προγράμματος που εκτελείται τέλεια; Αυτός είναι κώδικας που δεν έχει σφάλματα. Δηλαδή, οποιαδήποτε διακλάδωση βρόχου ή αλλαγή μεταβλητής, ή ακόμα και τυχόν απροσδόκητες ενέργειες χρήστη, θα οδηγεί πάντα στο αναμενόμενο αποτέλεσμα. Αυτό επιτυγχάνεται δοκιμάζοντας το τελικό προϊόν πολλές φορές.

    Ο εντοπισμός σφαλμάτων κώδικα προγράμματος ή μάλλον η πρόβλεψή τους είναι δυνατός στο στάδιο του σχεδιασμού του προγράμματος. Η παρουσία στον κώδικα διαφόρων ελέγχων συνθηκών και πιθανών εξαιρέσεων θα βοηθήσει στον έλεγχο του προγράμματος σε μια συγκεκριμένη πορεία.

    Η βελτιστοποίηση είναι τεράστιας σημασίας για τη σύνταξη ενός εφαρμόσιμου προγράμματος που θα χρησιμοποιεί οικονομικά τους πόρους του υπολογιστή και ταυτόχρονα θα αποφεύγει σφάλματα στην εκτέλεση του κώδικα του προγράμματος. Τι είναι ένα βελτιστοποιημένο πρόγραμμα; Πρόκειται για ένα προϊόν που μπορεί να εκτελέσει όλες τις δηλωμένες λειτουργίες, ενώ συμπεριφέρεται «αθόρυβα» και οικονομικά.

    Σχεδόν πάντα, η βελτιστοποίηση για σταθερή λειτουργία προγράμματος μπορεί να επιτευχθεί μόνο με τη διεξαγωγή πολλών δοκιμών σε διαφορετικές πλατφόρμες και υπό διαφορετικές συνθήκες. Εάν ένα πρόγραμμα αρχίσει να συμπεριφέρεται απρόβλεπτα, πρέπει να προσδιορίσετε τι το προκάλεσε και, εάν είναι δυνατόν, να εξαλείψετε ή να παρεμποδίσετε τη διαδικασία.

    συμπέρασμα

    Τι είναι ο κώδικας προγράμματος; Με απλά λόγια, είναι ένα σύνολο οδηγιών και εννοιών για έναν υπολογιστή. Περιέχει κείμενο που ένας μεταγλωττιστής ή διερμηνέας μπορεί να μετατρέψει σε γλώσσα αναγνώσιμη από μηχανή. Δηλαδή, στην ουσία, ο κώδικας προγράμματος είναι ένας ενδιάμεσος μεταξύ ενός ατόμου και ενός υπολογιστή, γεγονός που απλοποιεί τη σχέση τους.

    Πηγή(συνήθως απλά κείμενο προγράμματος, Αγγλικά πηγαίος κώδικας) - οποιοδήποτε σύνολο οδηγιών ή δηλώσεων γραμμένων σε γλώσσα προγραμματισμού υπολογιστή και σε μορφή που μπορεί να διαβαστεί από ένα άτομο. Ο πηγαίος κώδικας επιτρέπει στον προγραμματιστή να επικοινωνεί με τον υπολογιστή χρησιμοποιώντας ένα περιορισμένο σύνολο οδηγιών.

    Πηγαίος κώδικας γραμμένος σε HTML χρησιμοποιώντας JavaScript

    Ο πηγαίος κώδικας που αντιπροσωπεύει ένα πρόγραμμα συνήθως περιέχεται σε ένα ή περισσότερα αρχεία κειμένου, μερικές φορές αποθηκεύεται σε βάσεις δεδομένων ως αποθηκευμένες διαδικασίες και μπορεί επίσης να εμφανίζεται ως αποσπάσματα κώδικα που εκτυπώνονται σε βιβλία ή άλλα μέσα εκτύπωσης. Μια μεγάλη συλλογή αρχείων πηγαίου κώδικα μπορεί να οργανωθεί σε ένα δέντρο καταλόγου, οπότε μπορεί να είναι επίσης γνωστό ως δέντρο πηγαίου κώδικα(Αγγλικά) δέντρο πηγής) ή δέντρο κώδικα πηγαίου κώδικα δέντρο κ.λπ.

    Πηγαίος κώδικας προγράμματοςείναι ένα σύνολο αρχείων που απαιτούνται για τη μετατροπή από αναγνώσιμη από τον άνθρωπο μορφή σε κάποια μορφή εκτελέσιμου κώδικα από υπολογιστή. Υπάρχουν δύο πιθανές κατευθύνσεις για την εκτέλεση κώδικα: μεταφρασμένο σε κωδικός μηχανήςχρησιμοποιώντας έναν μεταγλωττιστή σχεδιασμένο για ένα συγκεκριμένο αρχιτεκτονική υπολογιστών, ή εκτελείται απευθείας στο κείμενο χρησιμοποιώντας διερμηνέα.

    Στόχοι

    Ο πηγαίος κώδικας χρησιμοποιείται κυρίως ως είσοδος σε μια διαδικασία που παράγει εκτελέσιμα προγράμματα (δηλαδή μεταγλωττίζεται ή ερμηνεύεται). Χρησιμοποιείται επίσης ως μέσο μεταφοράς αλγορίθμων μεταξύ ανθρώπων (για παράδειγμα, θραύσματα κώδικα σε βιβλία). Η μεταφορά ενός προγράμματος σε άλλες πλατφόρμες υπολογιστών χωρίς ακατέργαστο κώδικα είναι συνήθως αρκετά δύσκολη. Αν και είναι δυνατές επιλογές μεταφοράς χωρίς πηγαίους κώδικες, για παράδειγμα, δυαδική μετάφραση ή εξομοίωση της αρχικής πλατφόρμας.

    Αδειοδότηση

    Τα εργαλεία λογισμικού, και ο πηγαίος κώδικας που τα συνοδεύει, εμπίπτουν συνήθως σε ένα από τα δύο παραδείγματα αδειοδότησης: λογισμικό ανοιχτού κώδικα και μη ελεύθερο (ή ιδιόκτητο) λογισμικό. Γενικά το λογισμικό είναι Άνοιξε, εάν ο πηγαίος κώδικας μπορεί να χρησιμοποιηθεί ελεύθερα, να διανεμηθεί, να τροποποιηθεί και να αναλυθεί και ιδιόκτητος, εάν ο πηγαίος κώδικας διατηρείται μυστικός ή είναι ιδιωτικός και η πρόσβαση σε αυτόν είναι περιορισμένη. Για τη διασφάλιση του απορρήτου, χρησιμοποιούνται κυρίως οι διατάξεις διαφόρων νόμων περί πνευματικών δικαιωμάτων, αλλά συχνά χρησιμοποιούνται και εμπορικά μυστικά και διπλώματα ευρεσιτεχνίας. Επιπλέον, η διανομή του προγράμματος συνοδεύεται συνήθως με συμφωνία άδειας χρήσης (EULA), η οποία απαγορεύει πρωτίστως την αποσυμπίληση, την αντίστροφη μηχανική, την ανάλυση, την επεξεργασία ή την παράκαμψη της προστασίας αντιγραφής. Τύποι προστασίας πηγαίου κώδικα (εκτός από την παραδοσιακή μεταγλώττιση σε αντικειμενικό κώδικα περιλαμβάνουν κρυπτογράφηση κώδικα, συσκότιση κώδικα). συσκότιση κώδικα) ή μορφοποίηση κώδικα.

    Ποιότητα

    Ο τρόπος που γράφεται ένα πρόγραμμα μπορεί να έχει πολύ σημαντικές συνέπειες για τη συντήρησή του. Πολλά εγχειρίδια στυλ προγραμματισμού επιμένουν στη σημασία της αναγνωσιμότητας και πολλές οδηγίες εστιάζουν στη διατήρηση του πηγαίου κώδικα ενός προγράμματος, ο οποίος περιλαμβάνει εντοπισμό σφαλμάτων και ενημερώσεις. Άλλες προτεραιότητες, όπως η ταχύτητα εκτέλεσης του προγράμματος και η δυνατότητα μεταγλώττισης ενός προγράμματος για πολλαπλές αρχιτεκτονικές, συχνά καθιστούν την αναγνωσιμότητα κώδικα λιγότερο σημαντική, επειδή ποιότηταΟ κώδικας εξαρτάται αποκλειστικά από τον σκοπό του.

    Δεδομένου ότι ο προγραμματισμός υπάρχει σε βιομηχανική κλίμακα εδώ και δεκαετίες, έχουν αναπτυχθεί κατάλληλα πρότυπα μορφοποίησης κώδικα. Ορισμένα πρότυπα επισημοποιούνται, ενώ άλλα είναι άρρητοι κανόνες. Για παράδειγμα, η ουγγρική σημείωση ρυθμίζει την ονομασία των αναγνωριστικών σε ένα πρόγραμμα (συχνά αυτό αποφασίζεται με την έκδοση μιας σύμβασης ονοματοδοσίας σε όλη την επιχείρηση), άλλα πρότυπα ορίζουν τους κανόνες για τη διευθέτηση των συντακτικών στοιχείων.

    Σήμερα, πολλές εταιρείες, καθώς και ιδιώτες, αισθάνονται την ανάγκη να έχουν τη δική τους ιστοσελίδα, γι' αυτό και οι πληροφορίες σχετικά με το θέμα της ανάπτυξης και προώθησης έργων Διαδικτύου είναι τόσο περιζήτητες. Πολλοί άνθρωποι ενδιαφέρονται για το ερώτημα - πώς να δημιουργήσετε το δικό σας ιστοσελίδα, κώδικας προγράμματοςγια το οποίο είναι σαν θεμέλιο για ένα σπίτι; Ας προσπαθήσουμε να κατανοήσουμε αυτό το ζήτημα εμβαθύνοντας στο θέμα της ανάπτυξης ιστού.

    Ένας ιστότοπος δεν είναι απλώς μια συλλογή κειμένου, συνδέσμων, εικόνων και πολύχρωμων banner, είναι επίσης ένας κώδικας προγράμματος που εκτελείται στον υπολογιστή του χρήστη ή στην πλευρά του διακομιστή. Και αν σήμερα σχεδόν οποιοσδήποτε μπορεί να δημιουργήσει εικόνες της απαιτούμενης μορφής στην απαιτούμενη ανάλυση και ποιότητα, χρησιμοποιώντας έτοιμες εικόνες από το Διαδίκτυο ή οποιοδήποτε δημοφιλές πρόγραμμα επεξεργασίας γραφικών, τότε δημιουργήστε κώδικας τοποθεσίαςγια έναν μη ειδικό είναι γεμάτο με σημαντικές δυσκολίες.

    Η ποιότητα των εφαρμογών και του έργου Διαδικτύου στο σύνολό του εξαρτάται σε μεγάλο βαθμό από την ικανότητα του προγραμματιστή που αναπτύσσει τον ιστότοπο, ο κώδικας του προγράμματος του οποίου μπορεί να περιέχει σφάλματα που επηρεάζουν σε μεγάλο βαθμό την ταχύτητα φόρτωσης των ιστοσελίδων και πολλές άλλες πτυχές της λειτουργίας του συνόλου τοποθεσία, συμπεριλαμβανομένων εκείνων που σχετίζονται με την ασφάλεια. Επομένως, ο εντοπισμός και η εξάλειψη σφαλμάτων στον κώδικα είναι υποχρεωτικό στοιχείο κατά τη δημιουργία οποιουδήποτε ιστότοπου. Είναι καλύτερο να αναθέσετε την ανάπτυξη ενός πολύπλοκου εταιρικού ιστότοπου σε ειδικούς (αν δεν είστε ένας), επειδή ορισμένα σφάλματα είναι δύσκολο να εντοπιστούν και πολλά από αυτά μπορούν περαιτέρω να οδηγήσουν σε αργή φόρτωση και εσφαλμένη εμφάνιση ιστοσελίδων στα προγράμματα περιήγησης του υπολογιστές χρηστών του Διαδικτύου. Η υπερβολική φόρτωση μπορεί να προκαλέσει εκροή επισκεπτών από τον ιστότοπο και μείωση της ποιότητας της επισκεψιμότητας, γεγονός που μειώνει το κέρδος και την αποτελεσματικότητα της χρήσης εμπορικών έργων στο Διαδίκτυο.

    HTML και CSS πρώτα

    Η βάση ενός εγγράφου Ιστού είναι ο κώδικας γραμμένος σε γλώσσα σήμανσης HTML. Μια γλώσσα σήμανσης δεν πρέπει να συγχέεται με μια γλώσσα προγραμματισμού και η πραγματική διαφορά είναι γραμμένη λεπτομερώς. Κατ 'αρχήν, χρησιμοποιώντας το σύνολο εντολών που προσφέρει η HTML για τον προγραμματιστή ιστότοπου, μπορείτε να ορίσετε όλες τις απαραίτητες παραμέτρους ενός στατικού εγγράφου ιστού - τη διάταξη των στοιχείων (σήμανση μπλοκ), επικεφαλίδες, παραγράφους, πίνακες, εικόνες κ.λπ. Και με τη βοήθεια του CSS, ενός ειδικού πρόσθετου για HTML, μπορείτε να τοποθετήσετε όλα τα αναφερόμενα αντικείμενα σήμανσης, να αλλάξετε το στυλ τους - χρώμα, μέγεθος, μορφή κ.λπ.

    Μετά JavaScript

    Διαδραστικά και κινούμενα στοιχεία, για παράδειγμα, banners, tickers, φόρμες ανατροφοδότησης, σε ιστοσελίδες λειτουργούν λόγω της παρουσίας σεναρίων και κώδικα γραμμένου σε γλώσσες προγραμματισμού διακομιστή ή πελάτη. Τα σενάρια που έχουν αναπτυχθεί χρησιμοποιώντας τη γλώσσα προγραμματισμού JavaScript είναι πολύ δημοφιλή. Τέτοια σενάρια πελάτη δεν χρησιμοποιούν τις δυνατότητες του διακομιστή στην εργασία τους και εκτελούνται στο πλάι του υπολογιστή του χρήστη, δηλαδή στο πρόγραμμα περιήγησης. Αυτό κάνει τις εφαρμογές JavaScript απλές και γρήγορες.

    Και τέλος PHP

    Όταν είναι απαραίτητο να γράψετε πολύπλοκους και ογκώδεις κώδικες, για παράδειγμα για φόρουμ ή βιβλία επισκεπτών, οι προγραμματιστές απευθύνονται σε γλώσσες προγραμματισμού από την πλευρά του διακομιστή για βοήθεια, και συγκεκριμένα σε . Οι κώδικες PHP εκτελούνται από την πλευρά του διακομιστή, επομένως η απόδοσή τους μπορεί να είναι ελαφρώς πιο αργή, ανάλογα με την ταχύτητα της σύνδεσης με τον απομακρυσμένο υπολογιστή και το πόσο απασχολημένος είναι. Χρησιμοποιώντας εντολές PHP και SQL (μια ειδική γλώσσα ερωτημάτων για μια σχεσιακή βάση δεδομένων), μπορείτε να οργανώσετε την αλληλεπίδραση ενός ιστότοπου με βάσεις δεδομένων και να δημιουργήσετε διαδραστικά έργα Διαδικτύου - φόρουμ, ηλεκτρονικά καταστήματα, πίνακες ανακοινώσεων, διάφορους καταλόγους κ.λπ.

    Η βάση του ιστότοπου είναι ο κώδικας του προγράμματοςτροποποιήθηκε τελευταία: 3 Μαρτίου 2016 από διαχειριστής

    (Οδηγός προγραμματιστή για μικροελεγκτές οικογένειας HCS08)

    Στο Παράδειγμα 12.1, θα εξετάσουμε τον κώδικα που σας επιτρέπει να γράφετε και να διαγράφετε εγγενή δεδομένα στη μνήμη flash. Τέτοιες ενέργειες είναι απαραίτητες εάν ο χρήστης μιας συσκευής κάνει πρόσθετες ρυθμίσεις για αυτήν τη συσκευή και θέλει να διατηρηθεί η επιλεγμένη διαμόρφωση μετά την απενεργοποίηση του ρεύματος.

    Προηγουμένως, σημειώσαμε ότι η οικογένεια MCU HCS08 δεν επιτρέπει τη διαγραφή και τον προγραμματισμό λειτουργιών μνήμης flash, εκτελώντας το πρόγραμμα για τον έλεγχο αυτών των λειτουργιών και από τη μνήμη flash. Φροντίστε πρώτα να ξαναγράψετε τον κώδικα προγράμματος που είναι υπεύθυνος για τη διαγραφή και τον προγραμματισμό λειτουργιών στη μνήμη RAM και, στη συνέχεια, εκτελέστε αυτόν τον κώδικα για εκτέλεση. Κατά τη διαδικασία διαγραφής και προγραμματισμού, θα εφαρμοστεί αυξημένη τάση στη μονάδα μνήμης flash. Ωστόσο, αυτό δεν θα οδηγήσει σε διακοπή του προγράμματος, αφού σε μια δεδομένη στιγμή θα εκτελείται από τη μνήμη RAM.

    Η NXP έχει αναπτύξει ένα σύνολο βοηθητικών προγραμμάτων γλώσσας συναρμολόγησης που διευκολύνουν τη δημιουργία προσαρμοσμένου κώδικα για τον προγραμματισμό της μνήμης flash υπό τον έλεγχο του προγράμματος λειτουργίας της συσκευής. Αυτά τα βοηθητικά προγράμματα βρίσκονται στο αρχείο doonstack.asm. Αυτό το αρχείο θα πρέπει να συμπεριληφθεί στο έργο, όπως φαίνεται στο Σχ. 12.3.

    Ρύζι. 12.3. Παράθυρο έργου με περιλαμβανόμενο αρχείο doonstack.asm.

    Περιεχόμενα αρχείου doonstack.asmπαρουσιάζεται παρακάτω. Δίνεται το αρχικό κείμενο του κώδικα προγράμματος που χρησιμοποιείται, επομένως τα σχόλια δεν μπορούν να μεταφραστούν.


    ;* Αυτή η γραφική ύλη προορίζεται να χρησιμεύσει ως πλαίσιο για ένα *
    ;* εφαρμογή χρήστη. Για ένα πιο ολοκληρωμένο πρόγραμμα που *
    ;* δείχνει την πιο προηγμένη λειτουργικότητα αυτού του *
    ;* επεξεργαστής, δείτε τις εφαρμογές επίδειξης *
    ;* που βρίσκεται στον υποκατάλογο παραδειγμάτων του *
    ;* Metrowerks Codewarrior για τον κατάλογο προγραμμάτων HC08 *
    ;**************************************************************
    ; σύμβολα εξαγωγής
    XDEF DoOnStack
    XDEF FlashErase
    XDEF FlashProg
    ; χρησιμοποιούμε ως σύμβολο εξαγωγής "Είσοδος". Αυτό μας επιτρέπει
    ; αναφορά "Είσοδος" είτε στο αρχείο linker .prm
    ; ή από C/C++ αργότερα

    ; περιλαμβάνουν μακροεντολές ειδικών παραγώγων
    Συμπεριλάβετε το "MC9S08GB60.inc"

    Οι επόμενες δύο γραμμές θα πρέπει να μην σχολιαστούν και να αποδοθούν οι επιθυμητές τιμές.

    ;mPageErase ισοδύναμο 40$
    ;mByteProg ισοδυναμεί με 20$
    mFACCERR ισοδύναμο $10
    mFPVIOL ισοδύναμο 20 $
    mFCBEF ισοδύναμο 80 $
    ; μεταβλητή/ενότητα δεδομένων
    MY_ZEROPAGE: SECTION SHORT
    ; Εισαγάγετε εδώ τον ορισμό των δεδομένων σας. Για επίδειξη, χρησιμοποιείται temp_byte.
    ; temp_byte ds.b 1
    ; ενότητα κώδικα
    MyCode: SECTION
    ;**************************************************************
    ; αυτή η ρουτίνα συναρμολόγησης ονομάζεται εφαρμογή C/C++
    DoOnStack: pshx
    pshh ;αποθήκευση δείκτη στο flash
    psha ;εντολή αποθήκευσης στη στοίβα
    ldhx #SpSubEnd ;σημαδέψτε στο τελευταίο byte για να μετακινηθείτε στη στοίβα.
    SpMoveLoop: lda ,x ;ανάγνωση από flash
    psha ;μεταβείτε στη στοίβα
    aix #-1 ;επόμενο byte προς μετακίνηση
    cphx #SpSub-1 ;προηγούμενο τέλος;
    bne SpMoveLoop ;βρόχος μέχρι ολόκληρου υπο στη στοίβα
    tsx ;point to sub στη στοίβα
    tpa ;μετακινήστε το CCR στο A για δοκιμή
    και #$08 ;ελέγξτε τη μάσκα I
    bne I_set ;παράλειψη εάν έχω ήδη ορίσει
    sei ;μπλοκ διακόπτει ενώ το FLASH είναι απασχολημένο
    lda SpSubSize+6,sp ;προφόρτωση δεδομένων για εντολή
    cli ;ok για καθαρισμό I mask now
    σουτιέν I_cont ;συνέχεια στη στοίβα απο-κατανομή
    I_set: lda SpSubSize+6,sp ;προφόρτωση δεδομένων για εντολή
    jsr ,x ;εκτελέστε το δευτερεύον στη στοίβα
    I_cont: ais #SpSubSize+3 ;deallocate subbody + H:X + εντολή
    ;H:X δείκτης φλας ΟΚ από το SpSub
    lsla ;A=00 & Z=1 εκτός εάν PVIOL ή ACCERR
    rts ;για να αναβοσβήνει εκεί που κλήθηκε το DoOnStack
    ;**************************************************************
    SpSub: ldhx LOW(SpSubSize+4),sp ;λάβετε διεύθυνση flash από τη στοίβα
    sta 0,x ;εγγραφή στο flash; πρόσθετο κλειδώματος και δεδομένα
    lda SpSubSize+3,sp ;get εντολή flash
    sta FCMD ;γράψτε την εντολή flash
    lda #mFCBEF ;μάσκα για εκκίνηση εντολής
    στα FSTAT ; εντολή εγγραφής
    όχι ;[p] θέλει min 4~ από τον κύκλο w στο r
    ChkDone: lda FSTAT ; άρα ισχύει το FCCF
    lsla ;FCCF τώρα στο MSB
    bpl ChkDone ;loop εάν FCCF = 0
    SpSubEnd: rts ;επιστρέφει στο DoOnStack σε flash
    SpSubSize: equ (*-SpSub)
    ;**************************************************************
    FlashErase: psha ;adjust sp για την καταχώρηση DoOnStack

    lda #mPageErase ;μοτίβο μάσκας για την εντολή διαγραφής σελίδας
    bsr DoOnStack ;εντολή ολοκλήρωσης από υποστ. που βασίζεται σε στοίβα
    rts
    ;**************************************************************
    FlashProg: psha ;προσωρινή αποθήκευση δεδομένων εισόδου
    lda #(mFPVIOL+mFACCERR) ;μάσκα
    sta FSTAT ;ακύρωση οποιασδήποτε εντολής και εκκαθάριση σφαλμάτων
    lda #mByteProg ;μοτίβο μάσκας για την εντολή byte prog
    bsr DoOnStack ;εκτέλεση κωδικού προγράμματος από τη στοίβα RAM
    ais #1 ;κατανομή θέσης δεδομένων από τη στοίβα
    rts
    ;**************************************************************

    Επίσης στο κείμενο του κώδικα προγράμματος σε C είναι απαραίτητο να κατευθυνθείτε #περιλαμβάνωαρχείο σύνδεσης doonstack.χ, το κείμενο του οποίου παρουσιάζεται παρακάτω.


    /* */
    /* Όνομα έργου: doonstack.h */
    /* Τελευταία τροποποίηση: 04/11/2004 */
    /* Από: r60817 */
    /* */
    /* */
    /**********************************************************************/
    /* */
    /* Περιγραφή: MC9S08GB60_FLASH_DOONSTACK - επίδειξη */
    /* */
    /* */
    /* Τεκμηρίωση: MC9S08GB60/D Αναθ. 2.2 */
    /* HCS08RMv1/D Αναθ. 1(4.8Παραδείγματα εφαρμογής FLASH) */
    /* */
    /* Αυτό το λογισμικό έχει ταξινομηθεί ως Μηχανικό Δείγμα Λογισμικού. */
    /* */
    /**********************************************************************/
    /* */
    /* Οι υπηρεσίες που εκτελούνται από τη FREESCALE σε αυτό το θέμα εκτελούνται ΩΣ ΕΧΟΥΝ */
    /* και χωρίς καμία εγγύηση. Ο ΠΕΛΑΤΗΣ διατηρεί την τελική απόφαση */
    /* σε σχέση με τον συνολικό σχεδιασμό και τη λειτουργικότητα του τελικού προϊόντος. */
    /* FREESCALE ούτε εγγυάται ούτε θα φέρει ευθύνη από τον ΠΕΛΑΤΗ */
    /* για την επιτυχία αυτού του έργου. ΑΠΟΠΟΙΗΣΗ ΔΩΡΕΑΝ ΚΛΙΜΑΚΩΝ ΟΛΩΝ */
    /* ΕΓΓΥΗΣΕΙΣ, ΡΗΤΕΣ, ΣΙΩΠΗΡΕΣ Ή ΝΟΜΙΚΕΣ ΠΕΡΙΛΑΜΒΑΝΟΝΤΑΣ, ΑΛΛΑ ΟΧΙ */
    /* ΠΕΡΙΟΡΙΣΜΕΝΗ ΣΕ ΣΙΩΠΗΡΗ ΕΓΓΥΗΣΗ ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ Ή ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ */
    /* ΣΥΓΚΕΚΡΙΜΕΝΟΣ ΣΚΟΠΟΣ ΓΙΑ ΟΠΟΙΟΔΗΠΟΤΕ ΥΛΙΚΟ, ΛΟΓΙΣΜΙΚΟ Ή ΣΥΜΒΟΥΛΗ ΠΑΡΕΧΟΜΕΝΟ */
    /* ΠΡΟΣ ΤΟ ΕΡΓΟ ΑΠΟ ΕΛΕΥΘΕΡΗ ΚΛΙΜΑΚΑ ΚΑΙ Ή ΟΧΙ ΠΡΟΪΟΝ ΠΟΥ ΠΡΟΚΥΠΤΕΙ ΑΠΟ */
    /* ΔΩΡΕΑΝ ΥΠΗΡΕΣΙΕΣ . ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ ΔΕΝ ΕΙΝΑΙ ΥΠΕΥΘΥΝΗ Η ΔΩΡΕΑΝ ΚΛΙΜΑΚΑ ΓΙΑ */
    /* ΤΥΠΙΤΙΚΕΣ Ή ΣΥΝΕΠΕΙΕΣ ΖΗΜΙΕΣ ΠΟΥ ΠΡΟΚΥΠΤΟΥΝ ΑΠΟ ΤΗΝ ΠΑΡΟΥΣΑ ΣΥΜΦΩΝΙΑ. */
    /* */
    /* Ο ΠΕΛΑΤΗΣ συμφωνεί να κρατήσει το FREESCALE ακίνδυνο έναντι όλων */
    /* αξιώνει απαιτήσεις ή ενέργειες από οποιονδήποτε λόγω οποιασδήποτε ζημίας, ή */
    /* τραυματισμός, εμπορικός, συμβατικός ή στριμωγμένος, αυξανόμενος */
    /* άμεσα ή έμμεσα ως αποτέλεσμα της συμβουλής ή της βοήθειας */
    /* παρεχόμενος ΠΕΛΑΤΗΣ σε σχέση με προϊόν, υπηρεσίες ή αγαθά */
    /* παρέχονται βάσει της παρούσας Συμφωνίας. */
    /* */
    /**********************************************************************/
    /*
    - αυτό το API αρχείου μεταξύ main.c και doonstack.asm
    */
    #ifndef _doonstack
    #define_doonstack
    #ifdef __cplusplus
    εξωτερικό "C" ( /* οι λειτουργίες συναρμολόγησης μας έχουν σύμβαση κλήσης C */
    #τέλος εαν
    void DoOnStack(void); /* πρωτότυπο για τη ρουτίνα DoOnStack */
    void FlashErase(unsigned char *); /* πρωτότυπο για τη ρουτίνα FlashErase */
    /* Εντολή Διαγραφή σελίδας */
    void FlashProg(unsigned char *, unsigned char); /* πρωτότυπο για τη ρουτίνα FlashProg */
    /* Εντολή προγράμματος Byte */
    #ifdef __cplusplus
    }
    #τέλος εαν

    #endif /* _doonstack */
    /**********************************************************************/

    Στο παράδειγμά μας, ένα μπλοκ 512 byte είναι δεσμευμένο για την εγγραφή μη ασταθών δεδομένων. Αυτό το μέγεθος μπλοκ επιλέχθηκε επειδή είναι η ελάχιστη ποσότητα κελιών μνήμης flash που επιτρέπεται να διαγραφούν στον μικροελεγκτή MC9S08QG8. Το επιλεγμένο μπλοκ θα βρίσκεται στην αρχή του χώρου διευθύνσεων της μόνιμης μνήμης flash του MK: από 0xE000 έως 0xE1FF. Ο κωδικός προγράμματος θα ξεκινά από τη διεύθυνση 0xE200 και μπορεί να καταλάβει χώρο διευθύνσεων έως και 0xFFFF.

    Για να εφαρμόσετε την προβλεπόμενη τοποθέτηση δεδομένων και κωδικών προγραμμάτων, θα πρέπει να αλλάξετε τις ρυθμίσεις σύνδεσης στο αρχείο project.prm.

    Στο τυπικό έργο υπήρχε μια καταχώρηση:


    ROM = READ_ONLY 0xE000 TO 0xFFAD;

    Θα πρέπει να αντικατασταθεί:

    SEGMENTS /* Εδώ εμφανίζονται όλες οι περιοχές RAM/ROM της συσκευής */
    ROM = READ_ONLY 0xE200 TO 0xFFAD;

    Στο παράδειγμά μας, χρησιμοποιείται επίσης η λειτουργία προστασίας εγγραφής της περιοχής κώδικα προγράμματος, π.χ. χώρος διευθύνσεων από 0xF200 έως 0xFFFF. Στο Σχ. Το 12.4 δείχνει τη διαδικασία δημιουργίας κώδικα για τον καταχωρητή FPROT, ο οποίος προστατεύει τον χώρο διευθύνσεων 0xF200...0xFFFF από τυχαία διαγραφή/εγγραφή. Τα πιο σημαντικά επτά bit της τελευταίας διεύθυνσης 0xF1FF του μη προστατευμένου χώρου διευθύνσεων πρέπει να εγγραφούν στον καταχωρητή FPROT.

    Διεύθυνση Α15 Α14 Α13 Α12 Α11 Α10 Α9 Α8 Α7 Α6 Α5 Α4 Α3 Α2 Α'1 Α0
    0xE1FF 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1
    FPROT FPS7 FPS6 FPS5 FPS4 FPS3 FPS2 FPS1 FPDIS
    0xE0 1 1 1 0 0 0 0 0

    Ρύζι. 12.4. Σχηματισμός εγγραφής κωδικού ασφαλείας για τον καταχωρητή FPROT.

    Παράδειγμα 12.1. Λειτουργίες με μη πτητικά δεδομένα στη μνήμη flash

    // Επίδειξη πλακέτας DEMO9S08QG8
    // διαγραφή/εγγραφή/ανάγνωση μόνιμης μνήμης flash
    #include /* για μακροεντολή EnableInterrupts */
    #include "derivative.h" /* περιλαμβάνει περιφερειακές δηλώσεις */
    #include "hcs08.h" /* Αυτό είναι το αρχείο δήλωσης μας! */
    #include "doonstack.h"
    #define BUSCLK 8000000
    #define vFCDIV (BUSCLK/200000-1)
    char fdata, λειτουργία;
    ανυπόγραφη int faddress?
    // Εκχωρήστε μια περιοχή διευθύνσεων με προστασία εγγραφής: 0xE200 έως 0xFFFF
    const byte NVPROT_INIT @0x0000FFBD = 0xE0;
    // Αρχικοποίηση ΜΚ
    void mcu_init(void)
    {
    SOPT1 = bBKGDPE; // Ενεργοποίηση της λειτουργίας γραμμής εντοπισμού σφαλμάτων BKGD
    ICSSC = NV_FTRIM; // Γράψτε την τιμή περικοπής FTRIM
    ICSTRM = NV_ICSTRM; // Γράψτε την τιμή περικοπής TRIM
    ICSC2 = 0; // ICSOUT = DCOOUT / 1
    // BUSCLK = 8 MHz
    FCDIV = vFCDIV; // Γράψτε την τιμή του κωδικού διαιρέτη για τη συχνότητα FCLK
    // (FCLK = 200 kHz)
    }
    #pragma inline
    // Λειτουργία για την ανάγνωση ενός byte από ένα κελί μνήμης με μια δεδομένη διεύθυνση
    char flash_read (ανυπόγραφη διεύθυνση int)
    {
    ανυπόγραφο char *δείκτης;
    δείκτης = (char*) διεύθυνση;
    επιστροφή (*δείκτης);
    }
    // Λειτουργία για την εγγραφή ενός byte σε ένα κελί μνήμης με μια δεδομένη διεύθυνση
    char flash_write (ανυπόγραφη διεύθυνση int, ανυπόγραφα δεδομένα χαρακτήρων)
    {
    ανυπόγραφο char *δείκτης;
    δείκτης = (char*) διεύθυνση;
    FlashProg (δείκτης, δεδομένα); // Κλήση της συνάρτησης προγραμματισμού φλας
    εάν (FSTAT_FACCERR) δεδομένα=1; other data=0;
    εάν (FSTAT_FPVIOL) δεδομένα|=2;
    επιστροφή(δεδομένα)·
    }
    // Λειτουργία για τη διαγραφή ενός καθορισμένου μπλοκ στην περιοχή της μνήμης flash
    ανυπόγραφο char flash_sector_erase (ανυπόγραφη διεύθυνση int)
    {
    ανυπόγραφο char *pointer, res;
    δείκτης = (char*) διεύθυνση;
    FlashErase(δείκτης);
    εάν (FSTAT_FACCERR) res=1; else res=0;
    if (FSTAT_FPVIOL) res|=2;
    επιστροφή(res);
    }
    κενό κύριο (κενό)
    {
    mcu_init();
    fdata = 0;
    faddress = 0xE000;
    λειτουργία = 0;
    ενώ (1)
    {
    διακόπτης (λειτουργία)
    {
    περίπτωση 1: // Διαγραφή μπλοκ
    fdata = flash_sector_erase(faddress);
    λειτουργία = 0;
    Διακοπή;
    περίπτωση 2: // Γράψτε ένα byte
    fdata = flash_write(faddress,fdata);
    λειτουργία = 0;
    Διακοπή;
    περίπτωση 3: // Ανάγνωση byte
    fdata = flash_read(faddress);
    λειτουργία = 0;
    Διακοπή;
    }
    }
    }

    Ας εξετάσουμε τη μεθοδολογία για τη δοκιμή του κώδικα προγράμματος του Παραδείγματος 12.1. Για να το κάνετε αυτό, στο παράθυρο του προγράμματος εντοπισμού σφαλμάτων ΔεδομέναΑς προσθέσουμε τρεις μεταβλητές: προσόψεως, fdata, λειτουργία. Θα ρυθμίσουμε επίσης το παράθυρο σε λειτουργία περιοδικής ενημέρωσης, για παράδειγμα, κάθε 200 ms.

    Πριν εκτελέσετε τον κώδικα του προγράμματος, γράψτε τον σε μια μεταβλητή προσόψεωςδιεύθυνση για εγγραφή και σε μια μεταβλητή fdata— byte δεδομένων προς εγγραφή. Δίπλα στη μεταβλητή λειτουργίαΣημειώστε τον κωδικό 0x02. Μετά την εκτέλεση του παραδείγματος κώδικα, ένα byte δεδομένων θα αρχίσει να γράφεται στο επιλεγμένο κελί μνήμης flash. Λάβετε υπόψη ότι το επιλεγμένο κελί πρέπει να είναι σε κατάσταση διαγραφής, π.χ. θα πρέπει να περιέχει τον κωδικό 0xFF.

    Για να διαγράψετε το μπλοκ μνήμης 0xE00...0xE1FF, γράψτε στο προσόψεωςοποιαδήποτε διεύθυνση από το καθορισμένο εύρος και ορίστε τη μεταβλητή λειτουργίαστο 1. Στη συνέχεια, εκτελέστε ξανά τον κώδικα για εκτέλεση.

    Η ανάγνωση δεδομένων από τη μνήμη flash είναι επίσης εύκολη. Για να το κάνετε αυτό, γράψτε στη μεταβλητή προσόψεωςκωδικός διεύθυνσης, σε μια μεταβλητή λειτουργία- κωδικός 0x03. Τα περιεχόμενα του επιλεγμένου κελιού μνήμης flash θα εμφανιστούν στη μεταβλητή fdataμετά την εκτέλεση του κώδικα του προγράμματος.

    Σημειώστε ότι οι λειτουργίες flash_write()Και flash_sector_erase()επιστρέφει μια μεταβλητή τύπου τσαρέλαμε κωδικό σφάλματος κατά την εκτέλεση της ενέργειας: 0 - δεν υπήρχε σφάλμα, 0x02 - υπήρχε σφάλμα πρόσβασης, 0x04 - έγινε προσπάθεια διαγραφής/εγγραφής του προστατευμένου χώρου διευθύνσεων. Και οι δύο λειτουργίες που αναφέρονται παραπάνω απαιτούν περίπου 35 byte μνήμης στοίβας για να εκτελεστούν. Εάν η πραγματική περιοχή στοίβας είναι μικρότερη, θα προκύψει μοιραίο σφάλμα. Θα είναι δυνατή η επαναφορά της λειτουργικότητας του προγράμματος μόνο με επαναφορά του MK.

    Για να δείτε τις αλλαγές flash στο πρόγραμμα εντοπισμού σφαλμάτων, πρέπει να κάνετε ορισμένες αλλαγές στη διαμόρφωση του προγράμματος εντοπισμού σφαλμάτων. Ακολουθώντας τις προεπιλεγμένες ρυθμίσεις, το πρόγραμμα εντοπισμού σφαλμάτων διαβάζει την περιοχή μνήμης flash MCU μόνο μία φορά μετά την έναρξη μιας περιόδου λειτουργίας εντοπισμού σφαλμάτων. Για να αλλάξετε τη διαμόρφωση, επιλέξτε την επιλογή στο κύριο μενού εντοπισμού σφαλμάτων MultilinkCyclonPro > Εντοπισμός σφαλμάτων χάρτη μνήμης. Θα ανοίξει το παράθυρο που φαίνεται στο Σχ. 12.5, α. Επιλέξτε σε αυτό το παράθυρο μπλοκ μνήμης 3και πατήστε το κουμπί Τροποποίηση/Λεπτομέρειες. Στο νέο παράθυρο που φαίνεται στο Σχ. 12.5, β, επιλέξτε την επιλογή που έχει επισημανθεί. Αυτό θα επιτρέψει στον εντοπισμό σφαλμάτων να ενημερώνει περιοδικά το παράθυρο της μνήμης.

    Ρύζι. 12.5. Αλλάξτε τη διαμόρφωση του προγράμματος εντοπισμού σφαλμάτων για να ενημερώνετε περιοδικά τα περιεχόμενα του παραθύρου της μνήμης.