Προγραμματισμός γλώσσας Assembly για αρχάριους με παραδείγματα προγραμμάτων. Συνοπτικά χαρακτηριστικά της συσκευής

Γειά σου!
Θέλω να δείξω πώς να γράψω ένα πρόγραμμα για τον έλεγχο του τεχνολογικού εξοπλισμού σε ένα PLC.
Τις περισσότερες φορές ασχολήθηκα με PLC κατασκευασμένα από τη Schneider Electric. Το Quantum που επέλεξα για αυτήν την εργασία είναι το πιο ισχυρό και ακριβό PLC από αυτόν τον κατασκευαστή. Μπορεί να ελέγξει τον εξοπλισμό με χιλιάδες σήματα φυσικά, κανείς δεν θα τον χρησιμοποιήσει για φανάρι στην πραγματική ζωή.

Ποτέ δεν ασχολήθηκα με την αυτοματοποίηση των φωτεινών σηματοδοτών, οπότε κατέληξα στον αλγόριθμο μόνος μου. Να τος:
1. Φανάρι ελεγχόμενης διάβασης πεζών. Εκείνοι. ένα φανάρι για αυτοκίνητα, ένα φανάρι για τους πεζούς και ένα κουμπί για τους πεζούς, πατώντας το οποίο ο πεζός ειδοποιεί ότι θέλει να διασχίσει το δρόμο.
2. Μετά την έναρξη του προγράμματος, το φως γίνεται πράσινο για τα αυτοκίνητα και κόκκινο για τους πεζούς.
3. Αφού ο πεζός πατήσει το κουμπί, το πράσινο για τα αυτοκίνητα αρχίζει να αναβοσβήνει, μετά ανάβει κίτρινο και μετά κόκκινο. Μετά από αυτό, ανάβει πράσινο για τους πεζούς, μετά από καθορισμένο χρόνο αρχίζει να αναβοσβήνει, κόκκινο ανάβει για πεζούς, μετά ανάβει κίτρινο και κόκκινο για αυτοκίνητα και μετά πράσινο.
4. Κατά τη διάρκεια μιας καθορισμένης χρονικής περιόδου αφού ένα φανάρι πεζών ανάψει πράσινο, το πάτημα ενός κουμπιού από έναν πεζό δεν ενεργοποιεί τον αλγόριθμο μετάβασης. Σε αυτήν την περίπτωση, ο αλγόριθμος μετάβασης εκκινείται μόνο αφού παρέλθει ο καθορισμένος χρόνος.
Ο προγραμματισμός PLC πραγματοποιείται στο περιβάλλον προγραμματισμού Unity στις γλώσσες του προτύπου IEC 61131-3. Αυτό το πρότυπο περιλαμβάνει 5 γλώσσες. Για παράδειγμα, επέλεξα τη γλώσσα μπλοκ συνάρτησης - FBD.
Εδώ είναι το πρόγραμμα περιήγησης του έργου στο Unity:

Διαμόρφωση του PLC:


Το PLC αποτελείται από έναν πίνακα τοποθέτησης, ένα τροφοδοτικό (1), έναν ελεγκτή (2), μια διακριτή μονάδα εισόδου για 32 σήματα 24V DC (4), μια διακριτή μονάδα εισόδου για 32 σήματα 24V DC (5). Σε ένα πραγματικό έργο, μπορεί να υπάρχουν δεκάδες πάνελ στερέωσης συνδεδεμένα σε έναν ελεγκτή μέσω διαφόρων δικτύων και εκατοντάδες μονάδες I/O.
Δημιουργούμε μεταβλητές των απαιτούμενων τύπων στον επεξεργαστή μεταβλητών:


Οι μεταβλητές που συνδέονται σε κανάλια μονάδων I/O έχουν μια διεύθυνση που υποδεικνύει σε ποιο καλάθι, μονάδα και κανάλι είναι συνδεδεμένο το σήμα.
Το πρόγραμμα αποτελείται από ενότητες που εκτελούνται κάθε κύκλος σάρωσης ελεγκτή με τη σειρά.
Ένας απλοποιημένος κύκλος σάρωσης ελεγκτή μοιάζει με αυτό:
1. Ανάγνωση σημάτων εισόδου από τη μονάδα εισόδου σε μεταβλητές με διευθύνσεις.
2. Εκτέλεση τμημάτων.
3. Εγγραφή τιμών από μεταβλητές με διευθύνσεις στα σήματα εξόδου των μονάδων εξόδου.
4. Πηγαίνετε στο βήμα 1.
Δημιουργήστε ένα τμήμα Ρολογιού με μια γεννήτρια παλμών με περίοδο 0,5 δευτερολέπτων. Όταν το σήμα εισόδου αλλάζει από 0 σε 1, το μπλοκ TP παράγει έναν παλμό δεδομένης διάρκειας στην έξοδο.


Εδώ και παρακάτω, τα στιγμιότυπα οθόνης των ενοτήτων εμφανίζονται σε λειτουργία κινούμενης εικόνας και όχι σε λειτουργία επεξεργασίας. Εμφανίζουν τις τιμές των μεταβλητών την τρέχουσα χρονική στιγμή όταν συνδέονται σε ένα PLC με φορτωμένο πρόγραμμα (αριθμοί για αριθμητικές μεταβλητές, χρώμα πράσινο (1)-κόκκινο (0) για Boolean).
Η κύρια ενότητα χειρίζεται την κύρια λογική.
Το μπλοκ SR ορίζει την έξοδο σε 1 όταν S1=1 και επαναφέρει την έξοδο στο 0 όταν R=1.
Το μπλοκ R_TRIG ορίζει την έξοδο για 1 κύκλο σάρωσης σε 1 όταν η είσοδος μεταβαίνει από το 0 στο 1 (ανιχνευτής ανερχόμενης ακμής).
Το μπλοκ F_TRIG ορίζει την έξοδο για 1 κύκλο σάρωσης σε 1 όταν η είσοδος μεταβαίνει από το 1 στο 0 (ανιχνευτής πτώσης άκρων).
Η μεταβλητή inButton που είναι δεσμευμένη στο κανάλι κουμπιών έχει αντικατασταθεί στην ενότητα από το inButtonForTest, έτσι ώστε η τιμή της να μπορεί να αλλάξει στον προσομοιωτή ελεγκτή χωρίς πραγματικό υλικό.


Η ενότητα "Έξοδοι" παράγει σήματα εξόδου για τον έλεγχο των λαμπτήρων φαναριών.


Φορτώστε το έργο στον προσομοιωτή ελεγκτή:


Η τιμή οποιωνδήποτε μεταβλητών μπορεί να προβληθεί στον πίνακα κινούμενων εικόνων:


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

Ας προσπαθήσουμε να διασχίσουμε το δρόμο:

Δεν περίμενα ότι θα χρειάζονταν 30 τετράγωνα για να ελέγξω ένα τόσο απλό αντικείμενο όπως ένα φανάρι.
Στο επόμενο άρθρο θα δείξω πώς να γράψω αυτό το πρόγραμμα χρησιμοποιώντας όλες τις γλώσσες του προτύπου IEC 61131-3 ταυτόχρονα.

UPD. Διορθώθηκε ένα σφάλμα στο όνομα του προτύπου.

(Σχήματα), (Πάνελ).

Πριν δημιουργήσετε μια εφαρμογή, θα πρέπει να ελέγξετε την περιγραφή των νέων στοιχείων.

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

Πρόοδος του έργου

1. Δημιουργήστε ένα νέο έργο. Αποθηκεύστε το σε έναν ξεχωριστό φάκελο, ονομάστε τον "Φανάρι".

2. Τοποθετήστε στη φόρμα ένα πλαίσιο (TPanel) με τρία σχήματα (TShape), δύο κουμπιά (TButton), ένα πεδίο κειμένου (TEdit), μια επιγραφή (TLabel), ένα χρονόμετρο (TTimer) σύμφωνα με το παράδειγμα:

Θα πρέπει να μοιάζει με αυτό:

2. Κάνουμε το σχέδιο:

Ορίστε αυτές τις τιμές ιδιοτήτων στο Object Inspector:

Συστατικό Ιδιοκτησία Εννοια
Έντυπο 1 Λεζάντα Φανάρι
Πίνακας 1 Λεζάντα *Αδειάζω*
Σχήμα 1 Σχήμα stCircle
Σχήμα 2 Σχήμα stCircle
Σχήμα 3 Σχήμα stCircle
Ετικέτα 1 Λεζάντα Ταχύτητα
Επεξεργασία 1 Κείμενο *κενό*
Κουμπί 1 Λεζάντα Αρχή
Κουμπί 2 Λεζάντα Να σταματήσει

3. Δημιουργήστε ένα συμβάν για το Form1 στην ενότητα OnCreate – Κάντε κλικ στην έλλειψη

Δημιουργήστε ένα συμβάν για το Timer1 στην ενότητα OnTimer – Κάντε κλικ στην έλλειψη

4. Ορίστε χρώματα για τα σχήματα:

Τελική εργασία:

5. Κατά τη φόρτωση της φόρμας, το χρονόμετρο απενεργοποιείται και τα σχήματα στον πίνακα γίνονται αόρατα.

Δημιουργήστε ένα πρόγραμμα χειρισμού για το συμβάν FormCreate (κάντε διπλό κλικ στο στοιχείο Form1) και επικολλήστε αυτόν τον κώδικα:

var k:ακέραιος; διαδικασία TForm1.FormCreate(Αποστολέας: TObject); start Timer1.Enabled:=false; Shape1.Visible:=false; Shape2.Visible:=false; Shape3.Visible:=false; τέλος;

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

Κάντε διπλό κλικ στο στοιχείο Timer1 και επικολλήστε αυτόν τον κωδικό:

6. Γράψτε τον κωδικό προγράμματος για το κουμπί Έναρξη. Κάνοντας κλικ στο κουμπί από το πεδίο Ταχύτητα, διαβάζεται το διάστημα για το χρονόμετρο, επαναφέρονται οι ενδείξεις του χρονοδιακόπτη και ενεργοποιείται ο χρονοδιακόπτης.

Κάντε διπλό κλικ στο στοιχείο Button1 και επικολλήστε τον κωδικό:

διαδικασία TForm1.Button1Click(Αποστολέας: TObject); start Timer1.Interval:=StrToInt(Edit1.text); k:=0; Timer1.Enabled:=true; τέλος;

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

Κάντε διπλό κλικ στο στοιχείο Button2 και επικολλήστε τον κωδικό:

διαδικασία TForm1.Button2Click(Αποστολέας: TObject); start Timer1.Enabled:=false; Shape1.Visible:=false; Shape2.Visible:=false; Shape3.Visible:=false; τέλος;

8. Εκτελέστε το έργο. Στο πεδίο Ταχύτητα, πληκτρολογήστε τον αριθμό 1000 (1000 ms=1s). Τα φανάρια θα αρχίσουν να αλλάζουν ανά διαστήματα ενός δευτερολέπτου.

Artem Poznyak, μαθητής της τάξης 10 "A", γυμνάσιο Νο. 23, Ekibasbuz

Στείλτε την καλή δουλειά σας στη βάση γνώσεων είναι απλή. Χρησιμοποιήστε την παρακάτω φόρμα

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

Δημοσιεύτηκε στις http:// www. όλα τα καλύτερα. ru/

ΟΜΟΣΠΟΝΔΙΑΚΟΣ ΟΡΓΑΝΙΣΜΟΣ ΓΙΑ ΤΗΝ ΕΚΠΑΙΔΕΥΣΗ ΤΗΣ ΡΔ

Κρατικό εκπαιδευτικό ίδρυμα δευτεροβάθμιας επαγγελματικής εκπαίδευσης

Ufa College of Statistics, Informatics and Computer Science

Πεπεξηγηματικό σημείωμα

ΦΑΝΑΡΙΣΜΑ ΒΑΣΙΣΜΕΝΟ ΣΕ ΜΙΚΡΟΕΛΕΓΚΤΗ

Abdrakhimov A.R.

Project Manager

Michurin E.A.

ΕΙΣΑΓΩΓΗ

1. ΠΕΡΙΓΡΑΦΗ ΤΗΣ ΣΧΕΤΙΚΟΤΗΤΑΣ ΤΗΣ ΕΡΓΑΣΙΑΣ ΚΑΙ ΤΟ ΠΕΔΙΟ ΕΦΑΡΜΟΓΗΣ

1.1 Φανάρια κυκλοφορίας

1.2 Τύποι φωτεινών σηματοδοτών

1.3 Σχεδιασμός φωτεινών σηματοδοτών

2. ΕΡΕΥΝΑ, ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΚΥΚΛΩΜΑΤΩΝ

2.1 Επισκόπηση χαρακτηριστικών του μικροελεγκτή ATtiny25V

ΣΥΜΠΕΡΑΣΜΑ

ΚΑΤΑΛΟΓΟΣ ΑΝΑΦΟΡΩΝ ΚΑΙ ΚΑΝΟΝΙΣΜΩΝ ΚΑΙ ΤΕΧΝΙΚΗΣ ΤΕΚΜΗΡΙΩΣΗΣ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΑΝ

ΕΦΑΡΜΟΓΕΣ

ΕΙΣΑΓΩΓΗ

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

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

Κατά το σχεδιασμό αυτής της εργασίας μαθήματος, τέθηκαν οι ακόλουθες εργασίες:

1) Σκεφτείτε, σχεδιάστε και δοκιμάστε στην πράξη μια συσκευή που βασίζεται σε μικροελεγκτή.

2) γράψτε και μεταγλωττίστε ένα πρόγραμμα για τον μικροελεγκτή

3) σκεφτείτε τον προγραμματισμό μικροελεγκτών.

1 . ΠΕΡΙΓΡΑΦΗ ΤΗΣ ΣΧΕΤΙΚΟΤΗΤΑΣ ΤΗΣ ΕΡΓΑΣΙΑΣ ΚΑΙ ΤΟ ΠΕΔΙΟ ΕΦΑΡΜΟΓΗΣ

Σε αυτή την εργασία μαθήματος, βασισμένη στον μικροελεγκτή ATtiny25V, σχεδιάστηκε και υλοποιήθηκε μια συσκευή - ένα φανάρι βασισμένο σε έναν μικροελεγκτή.

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

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

Ταυτόχρονα, αυξάνεται ο αριθμός των τροχαίων ατυχημάτων (RTA), στα οποία εκατομμύρια άνθρωποι σε όλο τον κόσμο σκοτώνονται και τραυματίζονται, ακριβός εξοπλισμός και φορτία καταστρέφονται και καταστρέφονται. Πάνω από το 60% όλων των τροχαίων ατυχημάτων συμβαίνουν σε πόλεις και άλλες κατοικημένες περιοχές. Ταυτόχρονα, πάνω από το 30% όλων των τροχαίων ατυχημάτων συγκεντρώνονται σε διασταυρώσεις, οι οποίες καταλαμβάνουν μικρό μέρος της επικράτειας της πόλης.

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

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

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

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

Κατά την εφαρμογή μέτρων για την οργάνωση της κυκλοφορίας, ειδικός ρόλος ανήκει στην εισαγωγή τεχνικών μέσων: οδική σήμανση και οδική σήμανση, συσκευές ελέγχου φωτεινών σηματοδοτών, οδοφράγματα και συσκευές καθοδήγησης. Ταυτόχρονα, η ρύθμιση των φωτεινών σηματοδοτών είναι ένα από τα κύρια μέσα διασφάλισης της ασφάλειας της κυκλοφορίας στις διασταυρώσεις. Ο αριθμός των διασταυρώσεων εξοπλισμένων με φανάρια στις μεγαλύτερες πόλεις του κόσμου με υψηλό επίπεδο μηχανοκίνησης αυξάνεται συνεχώς και σε ορισμένες περιπτώσεις φτάνει την αναλογία: μία εγκατάσταση φαναριών για 1,5-2 χιλιάδες κατοίκους πόλεων.

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

1.1 Φανάρια

Σημασία και εναλλαγή σήματος.

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

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

· σε λωρίδες όπου η κατεύθυνση κίνησης μπορεί να αλλάξει προς το αντίθετο.

· σε σιδηροδρομικές διαβάσεις, κινητή γέφυρες, προβλήτες, πορθμεία, διαβάσεις.

· όταν τα οχήματα των ειδικών υπηρεσιών κινούνται σε δρόμους με έντονη κυκλοφορία.

· να ελέγχει την κίνηση των δημόσιων οχημάτων.

Η σειρά εναλλαγής των σημάτων, ο τύπος και η σημασία τους, που εγκρίθηκε στη Ρωσία, είναι σύμφωνη με τη Διεθνή Σύμβαση για τα Οδικά Σήματα και Σήματα. Τα σήματα εναλλάσσονται με την εξής σειρά: κόκκινο - κόκκινο με κίτρινο - πράσινο - κίτρινο - κόκκινο...

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

· Ένα μαύρο βέλος με περίγραμμα σε στρογγυλό κόκκινο φόντο απαγορεύει την κίνηση προς την κατεύθυνση που υποδεικνύεται από το βέλος.

· λοξός κόκκινος σταυρός σε μαύρο τετράγωνο φόντο

· απαγορεύει την είσοδο στη λωρίδα κυκλοφορίας πάνω από την οποία βρίσκεται.

· η κόκκινη σιλουέτα ενός όρθιου ατόμου απαγορεύει την κίνηση των πεζών.

· Ένα κόκκινο σήμα που αναβοσβήνει ή δύο κόκκινα σήματα που αναβοσβήνουν εναλλάξ απαγορεύουν την οδήγηση σε σιδηροδρομική διάβαση, κινητή γέφυρα, προβλήτα πορθμείων και άλλα μέρη που αποτελούν ιδιαίτερο κίνδυνο για την κυκλοφορία.

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

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

Οι τύποι του πράσινου σήματος και ο σκοπός τους είναι οι εξής:

· ένα μαύρο βέλος περιγράμματος σε πράσινο φόντο στρογγυλού σχήματος, καθώς και ένα πράσινο βέλος σε μαύρο φόντο στρογγυλού σχήματος - επιτρέψτε την κίνηση προς την κατεύθυνση του βέλους.

· Ένα πράσινο βέλος, στραμμένο προς τα κάτω σε μαύρο τετράγωνο φόντο, επιτρέπει την κίνηση κατά μήκος της λωρίδας πάνω από την οποία βρίσκεται το φανάρι.

· ένα σήμα με τη μορφή πράσινης σιλουέτας ενός ατόμου που περπατά επιτρέπει την κίνηση των πεζών.

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

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

1.2 Τύποι φωτεινών σηματοδοτών

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

Στο Παράρτημα 1 παρουσιάζονται ορισμένα φανάρια που χρησιμοποιούνται στη χώρα μας για τον έλεγχο της κυκλοφορίας. Σύμφωνα με το GOST 25695-83 "Οδικά φανάρια. Γενικές τεχνικές συνθήκες" χωρίζονται σε δύο ομάδες: μεταφορά και πεζό. Τα φανάρια κάθε ομάδας, με τη σειρά τους, χωρίζονται σε τύπους και εκδόσεις. Υπάρχουν επτά τύποι φωτεινών σηματοδοτών και δύο τύποι πεζών. Κάθε φανάρι έχει τον δικό του αριθμό. Το πρώτο ψηφίο του αριθμού σημαίνει την ομάδα (1 - φανάρι μεταφοράς, 2 - πεζός), το δεύτερο ψηφίο - τον τύπο του φαναριού, το τρίτο ψηφίο (ή τον αριθμό) - τον τύπο του σχεδιασμού του.

Τα φανάρια μεταφοράς τύπου 1 (με εξαίρεση τα σήματα πρόσθετων τμημάτων) και τύπου 2 έχουν τρία στρογγυλά σήματα με διάμετρο 200 ή 300 mm, τοποθετημένα κάθετα. Κατ' εξαίρεση, για φανάρια τύπου 1 επιτρέπεται οριζόντια τοποθέτηση σημάτων. Ακολουθία διάταξης από πάνω προς τα κάτω (από αριστερά προς τα δεξιά): κόκκινο, κίτρινο, πράσινο.

Πρόσθετα τμήματα χρησιμοποιούνται μόνο με φανάρια τύπου 1 με κατακόρυφα σήματα και έχουν σήμα με τη μορφή βέλους σε μαύρο στρογγυλό φόντο.

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

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

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

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

Τα φανάρια μεταφοράς τύπου 3 χρησιμοποιούνται ως επαναλήπτες σημάτων των φαναριών τύπου 1. Στην εμφάνισή τους, μοιάζουν με φανάρια αυτού του τύπου, αλλά σε αντίθεση με αυτά έχουν μικρότερες συνολικές διαστάσεις και διαμέτρους σήματος 100 mm. Εάν το κύριο φανάρι (τύπου 1) έχει ένα πρόσθετο τμήμα, τότε το φανάρι επαναλήπτη είναι επίσης εξοπλισμένο με ένα επιπλέον τμήμα φυσικά μειωμένου μεγέθους.

Τα φανάρια τύπου 3 τοποθετούνται κάτω από το κύριο φανάρι σε ύψος 1,5-2 m από το οδόστρωμα, εάν η ορατότητα των κύριων σημάτων φαναριών είναι δύσκολη για έναν οδηγό που σταματά στη γραμμή στάσης. Τα φανάρια αυτού του τύπου μπορούν επίσης να χρησιμοποιηθούν για τον έλεγχο της κυκλοφορίας των ποδηλάτων σε διασταυρώσεις μεταξύ ενός δρόμου και ενός ποδηλατόδρομου. Σε αυτή την περίπτωση, πάνω τους τοποθετείται ένα λευκό πιάτο με την εικόνα ενός συμβόλου ποδηλάτου.

Τα φανάρια τύπου 4 χρησιμοποιούνται για τον έλεγχο εισόδων σε μεμονωμένες λωρίδες. Αυτή η ανάγκη προκύπτει, για παράδειγμα, κατά την οργάνωση της αντίστροφης κίνησης. Φανάρια αυτού του τύπου τοποθετούνται πάνω από κάθε λωρίδα στην αρχή της. Έχουν μια οριζόντια διάταξη σημάτων: στα αριστερά - με τη μορφή ενός λοξού κόκκινου σταυρού. στα δεξιά - με τη μορφή πράσινου βέλους που δείχνει προς τα κάτω. Και τα δύο σήματα εκτελούνται σε μαύρο ορθογώνιο φόντο. Οι συνολικές διαστάσεις κάθε συμβόλου είναι 450-500 mm.

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

Φανάρι μεταφοράς τύπου 5 έχει τέσσερα χρωματιστά σήματα λευκού φεγγαριού στρογγυλού σχήματος με διάμετρο 100 mm. Ένα τέτοιο φανάρι χρησιμοποιείται στην περίπτωση ρύθμισης χωρίς συγκρούσεις της κυκλοφορίας των δημόσιων οχημάτων (τραμ, λεωφορεία δρομολογίων, τρόλεϊ) που κινούνται κατά μήκος μιας ειδικά καθορισμένης λωρίδας. Ωστόσο, ακόμη και σε αυτές τις περιπτώσεις, συχνά δεν χρειάζεται να εγκατασταθούν φωτεινοί σηματοδότες τύπου 5: το σύστημα διαχείρισης της κυκλοφορίας στη διασταύρωση διασφαλίζει την χωρίς συγκρούσεις διέλευση των οχημάτων των καθορισμένων τύπων μαζί με τη γενική ροή και τα φανάρια του τύπου 5 επαναλάβετε μόνο τις έννοιες των σημάτων των φαναριών τύπου 1 ή 2.

Ελλείψει ειδικά καθορισμένων λωρίδων κυκλοφορίας για τα δημόσια οχήματα ή δυνατότητας διέλευσής τους χωρίς συγκρούσεις, η χρήση φαναριών τύπου 5 καθίσταται άνευ σημασίας. Ο έλεγχος της κυκλοφορίας πραγματοποιείται από φανάρια τύπου 1 ή 2.

Τα φανάρια τύπου 6 έχουν δύο (σπάνια ένα) στρογγυλό κόκκινο σήμα με διάμετρο 200 ή 300 mm, που βρίσκονται οριζόντια και λειτουργούν σε εναλλασσόμενη λειτουργία αναβοσβήνει. Όταν επιτρέπεται η κίνηση των οχημάτων, τα σήματα σβήνουν. Φανάρια αυτού του τύπου τοποθετούνται μπροστά από σιδηροδρομικές διαβάσεις, κινητή γέφυρες, κουκέτες σιδηροδρομικών διασταυρώσεων και σε σημεία όπου εισέρχονται οχήματα ειδικών υπηρεσιών στο δρόμο.

Το φανάρι τύπου 7 έχει ένα κίτρινο σήμα που αναβοσβήνει συνεχώς. Χρησιμοποιείται σε μη ρυθμισμένες διασταυρώσεις αυξημένου κινδύνου.

Τα φανάρια τύπου 8 έχουν δύο κάθετα τοποθετημένα κόκκινα και πράσινα κυκλικά σήματα με διάμετρο 200 και 300 mm. Χρησιμοποιούνται όταν το οδόστρωμα είναι προσωρινά στενό, όταν οργανώνεται εναλλακτική κυκλοφορία κατά μήκος μιας λωρίδας και η χρήση πινακίδων προτεραιότητας για αυτούς τους σκοπούς είναι δύσκολη λόγω περιορισμένης ορατότητας σε αυτό το τμήμα του δρόμου. Επιπλέον, τα φανάρια τύπου 8 χρησιμοποιούνται επίσης για τον έλεγχο της κυκλοφορίας χαμηλής έντασης στους εσωτερικούς χώρους γκαράζ, επιχειρήσεων και οργανισμών, όπου κατά κανόνα εισάγονται όρια ταχύτητας. Στις αναφερόμενες περιπτώσεις, επιτρέπεται επίσης η χρήση των πιο κοινών φωτεινών σηματοδοτών τύπου 1, ωστόσο, τα φανάρια τύπου 8, τα οποία διαφέρουν από αυτά ελλείψει κίτρινου σήματος, υποδεικνύουν τις ιδιαιτερότητες των συνθηκών κυκλοφορίας.

Τα φανάρια πεζών έχουν δύο κατακόρυφα τοποθετημένα στρογγυλά ή τετράγωνα σήματα με διάμετρο κύκλου ή τετράγωνη πλευρά 200 ή 300 mm. Το επάνω σήμα είναι μια κόκκινη σιλουέτα ενός πεζού που στέκεται, το κάτω σήμα είναι μια πράσινη σιλουέτα ενός πεζού που περπατά. Και οι δύο σιλουέτες εκτελούνται σε μαύρο φόντο.

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

Για όλους τους τύπους φαναριών, εάν υπάρχουν δύο επιλογές σήματος (200 ή 300 mm), φανάρια με μεγαλύτερο μέγεθος σήματος εγκαθίστανται σε κεντρικούς δρόμους και πλατείες, σε δρόμους με μέγιστη επιτρεπόμενη ταχύτητα άνω των 60 km/h, καθώς και κάτω από δυσμενείς συνθήκες ορατότητας. Αυτό εξασφαλίζει καλύτερη αντίληψη του σήματος από τους χρήστες του δρόμου. Επιπλέον, το αυξημένο μέγεθος των σημάτων τονίζει τη φύση του δρόμου στον οποίο βρίσκεται ο οδηγός. Για τον ίδιο σκοπό, πριν από διασταυρώσεις με αυτούς τους δρόμους, στην πλευρά όπου υπήρχαν φανάρια με διάμετρο σήματος 200 mm, τοποθετείται φανάρι με αυξημένη διάμετρο (300 mm) κόκκινου σήματος.

1.3 Σχεδιασμός φωτεινών σηματοδοτών

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

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

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

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

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

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

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

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

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

2 . ΕΡΕΥΝΑ, ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΚΥΚΛΩΜΑΤΩΝ

Γενική περιγραφή:

ATtiny25 - οικονομικό 8-bit. Μικροελεγκτές CMOS βασισμένοι στην προηγμένη αρχιτεκτονική AVR RISC. Εκτελώντας τις περισσότερες εντολές σε έναν μόνο κύκλο μηχανής, οι μικροελεγκτές ATtiny25 επιτυγχάνουν απόδοση 1M. όπ. ανά δευτερόλεπτο χρονισμένο στο 1 MHz, το οποίο επιτρέπει στον προγραμματιστή να βελτιστοποιήσει την κατανάλωση ενέργειας και την απόδοση.

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

Το ATtiny25 περιέχει τα ακόλουθα στοιχεία: 2 kbyte προγραμματιζόμενης μνήμης flash εντός του συστήματος, 128 byte EEPROM, 128 byte στατικής μνήμης RAM, 6 γραμμές I/O γενικής χρήσης, 32 καταχωρητές εργασίας γενικής χρήσης, ένας 8-bit. χρονομετρητής με λειτουργίες σύγκρισης, ένα 8-bit. χρονομετρητής υψηλής ταχύτητας, σειριακή διεπαφή γενικής χρήσης, εσωτερικές και εξωτερικές διακοπές, 10-bit 4 καναλιών. ADC, προγραμματιζόμενος χρονοδιακόπτης παρακολούθησης με εσωτερικό ταλαντωτή και τρεις λειτουργίες εξοικονόμησης ενέργειας που επιλέγονται από το λογισμικό. Στην κατάσταση αναμονής, η CPU σταματά ενώ η στατική μνήμη RAM, ο μετρητής χρονοδιακόπτη, ο ADC, ο αναλογικός συγκριτής και το σύστημα διακοπής συνεχίζουν να λειτουργούν. Η λειτουργία απενεργοποίησης διατηρεί τα περιεχόμενα των μητρώων και απενεργοποιεί όλες τις ενσωματωμένες λειτουργίες μέχρι την επόμενη διακοπή ή επαναφορά υλικού. Η λειτουργία μείωσης θορύβου ADC σταματά τη CPU και όλες τις μονάδες I/O εκτός από το ADC, μειώνοντας έτσι τον ψηφιακό θόρυβο κατά τη μετατροπή ADC.

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

Το ATtiny25 υποστηρίζεται από μια πλήρη σειρά εργαλείων εντοπισμού σφαλμάτων υλικού και λογισμικού, συμπεριλαμβανομένων. C compilers, assembler, προγράμματα εντοπισμού σφαλμάτων/προσομοιωτών λογισμικού, εξομοιωτές εντός κυκλώματος και κιτ αξιολόγησης.

2.1 Οεπισκόπηση των χαρακτηριστικών του μικροελεγκτήATtiny25 V

8-bit μικροελεγκτής με προγραμματιζόμενη μνήμη flash 2KB στο σύστημα

Ιδιαιτερότητες:

Υψηλής απόδοσης, οικονομικό 8-bit. Μικροελεγκτής AVR

Προηγμένη αρχιτεκτονική RISC

Εκτεταμένο σύνολο 120 εντολών, οι περισσότερες από τις οποίες εκτελούνται σε έναν μόνο κύκλο

32 x 8 μητρώα γενικής χρήσης γενικής χρήσης

Εντελώς στατική λειτουργία

Μη πτητικές μνήμες προγραμμάτων και δεδομένων

2 KB προγραμματιζόμενη μνήμη προγράμματος flash στο σύστημα (10K κύκλοι εγγραφής/διαγραφής)

128 byte προγραμματιζόμενου εντός συστήματος EEPROM (ATtiny25) (100 χιλιάδες κύκλοι εγγραφής/διαγραφής)

128 byte εσωτερική στατική RAM (ATtiny25)

Προγραμματιζόμενα Bits ασφαλείας Flash και EEPROM

Διακριτικά χαρακτηριστικά περιφερειακών συσκευών

8-bit χρονομετρητής με prescaler και δύο κανάλια PWM

8-bit χρονομετρητής υψηλής ταχύτητας με ξεχωριστό προκλιμακωτή 2 εξόδους PWM υψηλής συχνότητας με ξεχωριστούς καταχωρητές κατωφλίου σύγκρισης

Προγραμματιζόμενη γεννήτρια παύσης

Καθολική σειριακή διεπαφή με ξεχωριστό ανιχνευτή κατάστασης εκκίνησης

10-bit ADC

4 μη ισορροπημένα κανάλια

2 διαφορικά κανάλια με προγραμματιζόμενο κέρδος (1x, 20x)

Προγραμματιζόμενος χρονοδιακόπτης παρακολούθησης με ξεχωριστό ενσωματωμένο ταλαντωτή

Ενσωματωμένος αναλογικός συγκριτής

Ειδικές λειτουργίες μικροελεγκτή

Ενσωματωμένο σύστημα εντοπισμού σφαλμάτων WIRE

Προγραμματισμός εντός συστήματος μέσω θύρας SPI

Εξωτερικές και εσωτερικές πηγές διακοπής

Economy modes: Idle, ADC Noise Reduction και Power-down

Βελτιωμένο κύκλωμα επαναφοράς ενεργοποίησης

Προγραμματιζόμενο κύκλωμα παρακολούθησης τάσης τροφοδοσίας

Ενσωματωμένη βαθμονομημένη γεννήτρια

I/O και περιβλήματα

Έξι προγραμματιζόμενες γραμμές I/O

8 pin PDIP και περίβλημα 8 ακίδων SOIC

Τάση λειτουργίας

1,8 - 5,5V για ATtiny25V

2,7 - 5,5V για ATtiny25

Διαβαθμίσεις απόδοσης

ATtiny25V: 0 - 4 MHz στα 1,8 - 5,5 V, 0 - 10 MHz στα 2,7 - 5,5 V

ATtiny25: 0 - 10 MHz στα 2,7 - 5,5 V, 0 - 20 MHz στα 4,5 - 5,5 V

Εύρος βιομηχανικής θερμοκρασίας

Χαμηλή κατανάλωση ρεύματος

Ενεργή λειτουργία: 1 MHz, 1,8 V: 450 µA

Λειτουργία μειωμένης ισχύος: 0,1 µA στα 1,8 V

Το μπλοκ διάγραμμα του μικροελεγκτή δίνεται στο Παράρτημα Δ.

Μελέτη σκοπιμότητας

Όνομα προϊόντος

Αντιστάσεις

LED

ΣΥΜΠΕΡΑΣΜΑ

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

ΚΑΤΑΛΟΓΟΣ ΑΝΑΦΟΡΩΝ ΚΑΙ ΚΑΝΟΝΙΣΜΩΝ ΚΑΙ ΤΕΧΝΙΚΗΣ ΤΕΚΜΗΡΙΩΣΗΣ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΑΝ

1. GOST 2.105-95 ESKD. Γενικές απαιτήσεις για έγγραφα κειμένου. - Εισαγω. 1996-01-07 -M.: Publishing house of standards, 1996.- 36

2. GOST 21.1101-92 SPDS. "Βασικές απαιτήσεις για τεκμηρίωση εργασίας."

3. GOST 2.004-88 ESKD «Γενικές απαιτήσεις για την εφαρμογή σχεδιαστικών και τεχνολογικών εγγράφων σε συσκευές εκτύπωσης υπολογιστών και γραφικών εξόδου»,

ΕΦΑΡΜΟΓΕΣ

Παράρτημα Α

Διάγραμμα συσκευής

Πρόγραμμα υλικολογισμικού μικροελεγκτή (μεταγλωττισμένη έκδοση)

Παράρτημα Β

Καταχώριση προγραμμάτων Κωδικός προγράμματος για υλικολογισμικό μικροελεγκτή

Αυτό το πρόγραμμα δημιουργήθηκε από την

CodeWizardAVR V2.04.8b Αξιολόγηση

Αυτόματη Γεννήτρια Προγραμμάτων

© Πνευματικά δικαιώματα 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

Ημερομηνία: 18/11/2011

Τύπος τσιπ: ATtiny25

Συχνότητα ρολογιού πυρήνα AVR: 8.000000 MHz

Μοντέλο μνήμης: Μικροσκοπικό

Μέγεθος εξωτερικής μνήμης RAM: 0

Μέγεθος στοίβας δεδομένων: 32

#περιλαμβάνω

#περιλαμβάνω

ανυπόγραφο char light=0;

// Δηλώστε τις καθολικές μεταβλητές σας εδώ

// Δηλώστε τις τοπικές σας μεταβλητές εδώ

// Αρχικοποίηση θυρών εισόδου/εξόδου

// Αρχικοποίηση θύρας Β

// Func5=In Func4=In Func3=In Func2=Έξοδος Func1=Έξοδος Func0=Έξοδος

// State5=T State4=T State3=T State2=0 State1=0 State0=0

// Αρχικοποίηση χρονοδιακόπτη/μετρητή 0

// Πηγή ρολογιού: Ρολόι συστήματος

// Τιμή ρολογιού: Χρονοδιακόπτης 0 Σταμάτησε

// Λειτουργία: Κανονική κορυφή=FFh

// Έξοδος OC0A: Αποσυνδέθηκε

// Έξοδος OC0B: Αποσυνδέθηκε

// Αρχικοποίηση εξωτερικής διακοπής

// Διακοπή σε οποιαδήποτε αλλαγή στις ακίδες PCINT0-5: Ενεργό

// Αρχικοποίηση αναλογικού συγκριτή

// Αναλογικός Συγκριτής: Απενεργοποίηση

//PORTB.0=1; //πράσινος

//PORTB.1=1; //το κόκκινο

//PORTB.2=1; //κίτρινος

αν (ελαφρ<5)svet++;

περίπτωση 1:PORTB.0=0; PORTB.1=1; PORTB.2=0;delay_ms(1000); Διακοπή;

περίπτωση 2:PORTB.2=1; PORTB.0=0; PORTB.1=1;delay_ms(500); Διακοπή;

περίπτωση 3:PORTB.1=0; PORTB.0=1; PORTB.2=0;delay_ms(1000); Διακοπή;

περίπτωση 4:PORTB.1=0;PORTB.2=0; PORTB.0=0;delay_ms(100); Διακοπή;

περίπτωση 5:PORTB.1=0; PORTB.0=1; PORTB.2=0;delay_ms(100); Διακοπή;

Παράρτημα Β

Ανάθεση καρφίτσας:

Δημοσιεύτηκε στο Allbest.ru

...

Παρόμοια έγγραφα

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

    εργασία μαθήματος, προστέθηκε 24/12/2012

    Σχεδιασμός διαγράμματος κυκλώματος συσκευής ένδειξης βασισμένου σε μικροελεγκτή AVR 8-bit τύπου ATmega16, που τροφοδοτείται από τροφοδοτικό 10 V και εμφανίζει δεδομένα σε γραφική οθόνη LCD. Ανάπτυξη λογισμικού μικροελεγκτή.

    εργασία μαθήματος, προστέθηκε 19/12/2010

    Χαρακτηριστικά του μικροελεγκτή ATTINY της οικογένειας AVR. Περιγραφή πόρων μικροελεγκτή ATTINY12: περιγραφή του επεξεργαστή, θύρες εισόδου/εξόδου, περιφερειακές συσκευές, αρχιτεκτονική πυρήνα. Ανάπτυξη συσκευής με εφέ φωτισμού που βασίζεται σε μικροελεγκτή.

    εργασία μαθήματος, προστέθηκε 24/06/2013

    Περιγραφή του ολοκληρωτή πρώτης τάξης. Ανασκόπηση του μικροελεγκτή ATmega16. Πρόσθετος ορισμός του συνόλου υλικού. Διάγραμμα σύνδεσης μικροελεγκτή. Σχηματισμός παλμών ρολογιού. Επαναφορά οργάνωσης. Αλγόριθμος λειτουργίας και σχεδιασμός μονάδων συσκευής.

    εργασία μαθήματος, προστέθηκε 19/12/2010

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

    διατριβή, προστέθηκε 22/01/2016

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

    εργασία μαθήματος, προστέθηκε 16/12/2010

    Πρακτικά παραδείγματα και η εφαρμογή λογισμικού τους σε γλώσσα assembly για τον μικροελεγκτή της οικογένειας MCS-51 (MK51). Χρήση εντολών μεταφοράς δεδομένων. Αριθμητικές και λογικές πράξεις, bit στο MCS-51. Αλληλεπίδραση του μικροελεγκτή με το αντικείμενο ελέγχου.

    εργασία μαθήματος, προστέθηκε στις 19/02/2011

    Μπλοκ διάγραμμα συστήματος μικροελεγκτή. Διαγράμματα σύνδεσης για τον μικροελεγκτή, ψηφιακά και αναλογικά σήματα, γραμμική οθόνη και πληκτρολόγιο. Κείμενο του κύριου προγράμματος στη γλώσσα Assembly για το MK51. Πρόγραμμα εισαγωγής και επεξεργασίας αναλογικών πληροφοριών.

    εργασία μαθήματος, προστέθηκε 19/12/2013

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

    εργασία μαθήματος, προστέθηκε 22/01/2015

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

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

IDE για Assembler

Η πρώτη ερώτηση είναι: σε ποιο περιβάλλον ανάπτυξης πρέπει να προγραμματίσω στο Assembly; Η απάντηση είναι ξεκάθαρη - MASM32. Αυτό είναι ένα τυπικό πρόγραμμα που χρησιμοποιείται για αυτήν τη γλώσσα. Μπορείτε να το κατεβάσετε στον επίσημο ιστότοπο masm32.com με τη μορφή αρχείου, το οποίο θα πρέπει να αποσυσκευάσετε και στη συνέχεια να εκτελέσετε το πρόγραμμα εγκατάστασης install.exe. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το FASM, αλλά ο κωδικός για αυτό θα είναι σημαντικά διαφορετικός.

Πριν ξεκινήσετε την εργασία, το κύριο πράγμα δεν είναι να ξεχάσετε να προσθέσετε την ακόλουθη γραμμή στη μεταβλητή συστήματος PATH:

C:\masm32\bin

Το πρόγραμμα "Hello world" σε assembler

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

386 .model flat, stdcall επιλογή casemap: κανένα δεν περιλαμβάνει /masm32/include/windows.inc περιλαμβάνει /masm32/include/user32.inc περιλαμβάνει /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/ lib/kernel32.lib .data msg_title db "Title", 0 msg_message db "Hello world", 0 .code start: invoke MessageBox, 0, adr msg_message, addr msg_title, MB_OK invoke end start start, 0

Αρχικά, εκκινούμε το πρόγραμμα επεξεργασίας qeditor.exe στον φάκελο με εγκατεστημένο το MASM32 και γράφουμε τον κώδικα του προγράμματος σε αυτόν. Στη συνέχεια το αποθηκεύουμε ως αρχείο με την επέκταση “.asm” και χτίζουμε το πρόγραμμα χρησιμοποιώντας το στοιχείο μενού “Project” → “Build all”. Εάν δεν υπάρχουν σφάλματα στον κώδικα, το πρόγραμμα θα μεταγλωττιστεί με επιτυχία και η έξοδος θα είναι ένα ολοκληρωμένο αρχείο exe που θα εμφανίζει ένα παράθυρο των Windows με την επιγραφή "Hello world".

Προσθήκη δύο αριθμών στο assembler

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

486 .model flat, stdcall επιλογή casemap: κανένα δεν περιλαμβάνει /masm32/include/windows.inc περιλαμβάνει /masm32/include/user32.inc περιλαμβάνει /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/ lib/kernel32.lib περιλαμβάνουν /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data .code start: mov eax, 123 mov ebx, -90 add eax, ebx test eax, eax jz zero invoke,0s. chr$("Eax δεν είναι 0!"), chr$("Info"), 0 jmp lexit zero: invoke MessageBox, 0, chr$("Eax is 0!"), chr$("Info"), 0 lexit: κλήση ExitProcess, 0 τέλος έναρξη

Εδώ χρησιμοποιούμε τα λεγόμενα tags και ειδικές εντολές χρησιμοποιώντας αυτές (jz, jmp, test). Ας ρίξουμε μια πιο προσεκτική ματιά:

  • test – χρησιμοποιείται για τη λογική σύγκριση μεταβλητών (τελεστών) με τη μορφή byte, λέξεων ή διπλών λέξεων. Για σύγκριση, η εντολή χρησιμοποιεί λογικό πολλαπλασιασμό και εξετάζει τα bit: αν είναι ίσα με 1, τότε το bit αποτελέσματος θα είναι ίσο με 1, διαφορετικά - 0. Εάν λάβαμε 0, οι σημαίες ορίζονται μαζί με το ZF (σημαία μηδέν) , το οποίο θα είναι ίσο με 1 Τα αποτελέσματα αναλύονται περαιτέρω με βάση το ZF.
  • jnz – εάν η σημαία ZF δεν είχε οριστεί πουθενά, γίνεται μετάβαση σε αυτήν την ετικέτα. Αυτή η εντολή χρησιμοποιείται συχνά εάν το πρόγραμμα έχει λειτουργίες σύγκρισης που επηρεάζουν κατά κάποιο τρόπο το αποτέλεσμα ZF. Αυτά περιλαμβάνουν δοκιμή και cmp.
  • jz – εάν η σημαία ZF ήταν ακόμα καθορισμένη, η ετικέτα πλοηγείται.
  • jmp – ανεξάρτητα από το αν υπάρχει ZF ή όχι, η ετικέτα πλοηγείται.

Πρόγραμμα άθροισης αριθμών στο assembler

Ένα πρωτόγονο πρόγραμμα που δείχνει τη διαδικασία άθροισης δύο μεταβλητών:

486 .model flat, stdcall επιλογή casemap: κανένα δεν περιλαμβάνει /masm32/include/windows.inc περιλαμβάνει /masm32/include/user32.inc περιλαμβάνει /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/ lib/kernel32.lib περιλαμβάνουν /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data msg_title db "Title", 0 A DB 1h B DB 2h buffer db 128 dup(?) format", db .code start: MOV AL, A ADD AL, B invoke wsprintf, addr buffer, addr format, eax invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK invoke ExitProcess, 0 end start

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

Λήψη τιμής από τη γραμμή εντολών στη γλώσσα συναρμολόγησης

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

486 .model flat, stdcall επιλογή casemap: κανένα δεν περιλαμβάνει /masm32/include/windows.inc περιλαμβάνει /masm32/include/user32.inc περιλαμβάνει /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/ lib/kernel32.lib περιλαμβάνουν /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data .code start: καλέστε GetCommandLine ; το αποτέλεσμα θα τοποθετηθεί στο eax push 0 push chr$("Command Line") push eax ; το κείμενο για έξοδο λαμβάνεται από το eax push 0 call MessageBox push 0 call ExitProcess end start

Μπορείτε επίσης να χρησιμοποιήσετε μια εναλλακτική μέθοδο:

486 .model flat, stdcall επιλογή casemap: κανένα δεν περιλαμβάνει /masm32/include/windows.inc περιλαμβάνει /masm32/include/user32.inc περιλαμβάνει /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/ lib/kernel32.lib περιλαμβάνουν /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data .code start: καλέστε GetCommandLine ; το αποτέλεσμα θα τοποθετηθεί στο eax invoke GetCommandLine invoke MessageBox, 0, eax, chr$("Command Line"), 0 invoke ExitProcess, 0 push 0 call ExitProcess end start

Εδώ χρησιμοποιούμε το invoke, μια ειδική μακροεντολή που απλοποιεί τον κώδικα του προγράμματος. Κατά τη μεταγλώττιση, οι εντολές macro μετατρέπονται σε οδηγίες συναρμολόγησης. Με τον ένα ή τον άλλο τρόπο, χρησιμοποιούμε μια στοίβα - έναν πρωτόγονο τρόπο αποθήκευσης δεδομένων, αλλά ταυτόχρονα πολύ βολικό. Σύμφωνα με τη σύμβαση stdcall, σε όλες τις συναρτήσεις WinAPI, οι μεταβλητές περνούν μέσα από τη στοίβα, μόνο με αντίστροφη σειρά, και τοποθετούνται στον αντίστοιχο καταχωρητή eax.

Βρόχοι στη γλώσσα συναρμολόγησης

Περίπτωση χρήσης:

Δεδομένα msg_title db "Title", 0 A DB 1h buffer db 128 dup(?) format db "%d",0 .code start: mov AL, A .REPEAT inc AL .ΜΕΩΣ AL==7 κλήση wsprintf, addr buffer, μορφή addr, AL invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK invoke ExitProcess, 0 end start .data msg_title db "Title", 0 buffer db 128 dup(?) format db "%d",0 .code start: mov eax, 1 mov edx, 1 .WHILE edx==1 inc eax .IF eax==7 .BREAK .ENDIF .ENDW invoke wsprintf, addr buffer, adr format, eax invoke MessageBox, 0, addr buffer, addr msg_title, MB_ επίκληση ExitProcess, 0

Για να δημιουργήσετε έναν βρόχο, χρησιμοποιήστε την εντολή επανάληψης. Στη συνέχεια, χρησιμοποιώντας το inc, η τιμή της μεταβλητής αυξάνεται κατά 1, ανεξάρτητα από το αν είναι στη μνήμη RAM ή στον ίδιο τον επεξεργαστή. Για να διακοπεί ο βρόχος, χρησιμοποιείται η οδηγία ".BREAK". Μπορεί είτε να σταματήσει τον κύκλο είτε να συνεχίσει τη δράση του μετά από μια «παύση». Μπορείτε επίσης να διακόψετε την εκτέλεση του κώδικα προγράμματος και να ελέγξετε τις συνθήκες επανάληψης και ενώ χρησιμοποιώντας την οδηγία «.ΣΥΝΕΧΕΙΑ».

Άθροισμα στοιχείων πίνακα στο assembler

Εδώ αθροίζουμε τις τιμές των μεταβλητών στον πίνακα χρησιμοποιώντας έναν βρόχο "for":

486 .model flat, stdcall επιλογή casemap: κανένα δεν περιλαμβάνει /masm32/include/windows.inc περιλαμβάνει /masm32/include/user32.inc περιλαμβάνει /masm32/include/kernel32.inc includelib /masm32/lib/user32.lib includelib /masm32/ lib/kernel32.lib περιλαμβάνουν /masm32/macros/macros.asm uselib masm32, comctl32, ws2_32 .data msg_title db "Title", 0 A DB 1h x dd 0,1,2,3,4,5,6,7, 8,9,10,11 n dd 12 buffer db 128 dup(?) μορφή db "%d",0 .code start: mov eax, 0 mov ecx, n mov ebx, 0 L: add eax, x add ebx, type x dec ecx cmp ecx, 0 jne L invoke wsprintf, addr buffer, addr format, eax invoke MessageBox, 0, addr buffer, addr msg_title, MB_OK invoke ExitProcess, 0 end start

Η εντολή dec, όπως και η inc, αλλάζει την τιμή του τελεστή κατά ένα, μόνο προς την αντίθετη κατεύθυνση, σε -1. Αλλά το cmp συγκρίνει μεταβλητές χρησιμοποιώντας τη μέθοδο της αφαίρεσης: αφαιρεί μια τιμή από τη δεύτερη και, ανάλογα με το αποτέλεσμα, ορίζει τις κατάλληλες σημαίες.

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

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

Προβολές ανάρτησης: 767

mob_info