Πίνακας περιεχομένων:

Εισαγωγή στον προγραμματισμό 8051 με AT89C2051 (Πρωταγωνιστές: Arduino): 7 βήματα (με εικόνες)
Εισαγωγή στον προγραμματισμό 8051 με AT89C2051 (Πρωταγωνιστές: Arduino): 7 βήματα (με εικόνες)

Βίντεο: Εισαγωγή στον προγραμματισμό 8051 με AT89C2051 (Πρωταγωνιστές: Arduino): 7 βήματα (με εικόνες)

Βίντεο: Εισαγωγή στον προγραμματισμό 8051 με AT89C2051 (Πρωταγωνιστές: Arduino): 7 βήματα (με εικόνες)
Βίντεο: Εισαγωγή στον προγραμματισμό: Τι είναι ο προγραμματισμός; 2024, Νοέμβριος
Anonim
Εισαγωγή στον προγραμματισμό 8051 με AT89C2051 (Πρωταγωνιστές: Arduino)
Εισαγωγή στον προγραμματισμό 8051 με AT89C2051 (Πρωταγωνιστές: Arduino)

Το 8051 (επίσης γνωστό ως MCS-51) είναι ένα σχέδιο MCU από τη δεκαετία του '80 που παραμένει δημοφιλές σήμερα. Οι σύγχρονοι μικροελεγκτές συμβατοί με 8051 διατίθενται από πολλούς προμηθευτές, σε όλα τα σχήματα και μεγέθη και με μεγάλη ποικιλία περιφερειακών. Σε αυτό το διδακτικό θα κοιτάξουμε το AT89C2051 MCU από την Atmel.

Το AT89C2051 είναι ένας μικρός (2Kbyte Flash, 128byte RAM), φθηνός (1. 1,40 $ ανά τσιπ) μικροελεγκτής. Χαρακτηριστικά:

  • Λειτουργία 2,7-6V
  • 15 γραμμές εισόδου/εξόδου
  • 2 χρονόμετρα (16 bit)
  • Εσωτερικές και εξωτερικές διακοπές
  • UART
  • Αναλογικός συγκριτής σε τσιπ
  • Έως 2MIPS με ρολόι 24MHz

Βήμα 1: Απαιτήσεις

Απαιτήσεις
Απαιτήσεις

Απαιτήσεις:

  • Υπολογιστής Linux (απαιτούμενο λογισμικό: Arduino IDE, git, make, sdcc)
  • Arduino UNO
  • Τσιπ AT89C2051 (πακέτο DIP20)
  • Υποδοχή ZIF 20 ακίδων
  • Optocoupler (κατά προτίμηση MOSFET-έξοδος)
  • Ασπίδα πρωτότυπου Arduino
  • Τροφοδοσία 12V
  • Τροφοδοσία 5V
  • Κρυσταλλικός ταλαντωτής 16MHz
  • 2x πυκνωτής 30pF
  • Πυκνωτής 100nF
  • Δίοδος (π.χ. 1N400X)
  • Αντιστάσεις (1K, 3K3)
  • Protoboard
  • Άλτες
  • Χάλκινο σύρμα

Ελέγξτε για απαιτούμενο λογισμικό:

ποια python3

που κάνουν ποιο sdcc ποιο git

Βήμα 2: Χτίζοντας τον προγραμματιστή

Χτίζοντας τον προγραμματιστή
Χτίζοντας τον προγραμματιστή
Χτίζοντας τον προγραμματιστή
Χτίζοντας τον προγραμματιστή
Χτίζοντας τον προγραμματιστή
Χτίζοντας τον προγραμματιστή

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

Θα πρέπει να προγραμματίσετε τον πίνακα προγραμματιστών:

1. Κλωνοποιήστε το αποθετήριο.

git clone

2. Ανοίξτε το αρχείο AT89C2051_programmer/AT89_prog/AT89_prog.ino στο Arduino IDE.

3. Δημιουργήστε και ανεβάστε το σκίτσο από το Arduino IDE.

Βήμα 3: Εγκατάσταση λογισμικού προγραμματιστή

Εγκατάσταση λογισμικού προγραμματιστή
Εγκατάσταση λογισμικού προγραμματιστή
Εγκατάσταση λογισμικού προγραμματιστή
Εγκατάσταση λογισμικού προγραμματιστή

1. Δημιουργήστε ένα εικονικό περιβάλλον python.

python3 -m venv venv

Το venv/bin/activ

2. Εγκαταστήστε το at89overlord. Ο at89overlord είναι προγραμματιστής ανοιχτού κώδικα για το τσιπ AT89C2051 που γράφτηκε από εμένα. Ο πηγαίος κώδικας μπορεί να βρεθεί εδώ.

pip εγκατάσταση at89overlord

3. Επαληθεύστε την εγκατάσταση.

at89overlord -η

Βήμα 4: Προγραμματισμός του τσιπ

Προγραμματισμός του τσιπ
Προγραμματισμός του τσιπ
Προγραμματισμός του τσιπ
Προγραμματισμός του τσιπ
Προγραμματισμός του τσιπ
Προγραμματισμός του τσιπ
Προγραμματισμός του τσιπ
Προγραμματισμός του τσιπ

1. Κλωνοποιήστε ένα απλό σχέδιο αναλαμπής.

cd

git clone https://github.com/piotrb5e3/hello-8051.git cd hello-8051/

2. Δημιουργήστε την εφαρμογή.

φτιαχνω, κανω

3. Συνδέστε το Arduino στον υπολογιστή, συνδέστε την παροχή 12V, τοποθετήστε το τσιπ AT89C2051 στην υποδοχή ZIF.

4. Εντοπίστε τη σειριακή θύρα του Arduino.

ls /dev /tty*

5. Ανεβάστε το ενσωματωμένο αρχείο IntelHex στο τσιπ. Εάν η θύρα του Arduino είναι διαφορετική από /dev /ttyACM0, πρέπει να περάσετε τη σωστή τιμή με την παράμετρο της γραμμής εντολών -p.

at89overlord -φ./hello.ihx

Βήμα 5: Συναρμολόγηση

Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση

Συναρμολογήστε το κύκλωμα σύμφωνα με το σχηματικό σχήμα. Μια έκδοση PDF μπορεί να βρεθεί στο αποθετήριο.

Θα πρέπει να δείτε το πράσινο φλας LED με συχνότητα περίπου 0,5Hz.

Βήμα 6: Επεξήγηση κώδικα

Επεξήγηση κώδικα
Επεξήγηση κώδικα

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

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

Ξεκινάμε συμπεριλαμβάνοντας την κεφαλίδα AT89X051 από το sdcc. Περιέχει μακροεντολές για αλληλεπίδραση με καταχωρητές σαν να ήταν μεταβλητές. Περιλαμβάνουμε επίσης το stdint.h το οποίο περιέχει ορισμούς ακέραιων τύπων uint8_t και uint16_t.

// Υποθέτοντας ότι ο ταλαντωτής είναι 16MHz

#define INTERRUPTS_PER_SECOND 5208

Μια διακοπή συμβαίνει όταν το Timer0 υπερχειλίσει. Έχει ρυθμιστεί ως ένας χρονοδιακόπτης 8bit, έτσι συμβαίνει κάθε 2 κύκλους επεξεργαστή 2^8. Ένας κύκλος επεξεργαστή διαρκεί 12 κύκλους ρολογιού και έτσι φτάνουμε στο 16000000/12/2^8 = 5208.33333.

πτητικό uint8_t led_state = 0;

πτητικό uint16_t timer_counter = INTERRUPTS_PER_SECOND;

Δηλώνουμε τον έλεγχο κατάστασης led και τις μεταβλητές μετρητή διακοπής.

void Timer0_ISR (άκυρο) _διακοπή (1) {

timer_counter--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

Κάθε φορά που το Timer0 ξεχειλίζει ο μετρητής μειώνεται. Εάν είναι ίσο με μηδέν, επαναφέρεται και η κατάσταση led αλλάζει. Αυτό συμβαίνει περίπου μία φορά το δευτερόλεπτο, με αποτέλεσμα συχνότητα αναβοσβήματος LED 0,5Hz LED.

int main () {

TMOD = 0x3; // Λειτουργία χρονοδιακόπτη - 8 bit, χωρίς προκαταρκτικό χρονοδιακόπτη. freq = OSCFREQ/12/2^8 TL0 = 0; // Διαγραφή μετρητή TH0 = 0; // Διαγραφή μητρώου TR0 = 1; // Ρυθμίστε το χρονόμετρο να λειτουργεί. ET0 = 1; // Ορισμός διακοπής. ΕΑ = 1; // Ορισμός καθολικής διακοπής. ενώ (1) {if (led_state) {P1 = 0xFF; } else {P1 = 0x00; }}}

Διαμορφώνουμε τη μονάδα χρονοδιακόπτη και αναμένουμε αλλαγές στη μεταβλητή ελέγχου κατάστασης led. Το TOD είναι ο καταχωρητής ελέγχου λειτουργίας χρονοδιακόπτη. Τα TL0 και TH0 είναι καταχωρητές ελέγχου Timer0. Το ET0 είναι το bit ενεργοποίησης-χρονομέτρου στον καταχωρητή ελέγχου χρονοδιακόπτη (TCON). Τα TR0 και EA είναι bits στον καταχωρητή ενεργοποίησης διακοπών (IE).

Βήμα 7: Πρόσθετοι πόροι

  • Φύλλο δεδομένων AT89C2051:
  • Μικρή συσκευή C Compiler (sdcc):
  • Πόροι 8051:
  • Αποθήκη προγραμματιστή AT89C2051:
  • γεια αποθήκη 8051:

Συνιστάται: