תוכן עניינים:

מבוא לתכנות 8051 עם AT89C2051 (כוכב אורח: ארדואינו): 7 שלבים (עם תמונות)
מבוא לתכנות 8051 עם AT89C2051 (כוכב אורח: ארדואינו): 7 שלבים (עם תמונות)

וִידֵאוֹ: מבוא לתכנות 8051 עם AT89C2051 (כוכב אורח: ארדואינו): 7 שלבים (עם תמונות)

וִידֵאוֹ: מבוא לתכנות 8051 עם AT89C2051 (כוכב אורח: ארדואינו): 7 שלבים (עם תמונות)
וִידֵאוֹ: מבוא לתכנות מערכות - 1 2024, יולי
Anonim
היכרות עם תכנות 8051 עם AT89C2051 (כוכב אורח: ארדואינו)
היכרות עם תכנות 8051 עם AT89C2051 (כוכב אורח: ארדואינו)

8051 (המכונה גם MCS-51) הוא עיצוב MCU משנות ה -80 שנותר פופולרי כיום. בקר מיקרו-בקרים מודרני תואם 8051 זמין מספקים רבים, בכל הצורות והגדלים, ועם מגוון רחב של ציוד היקפי. במדריך זה נסתכל על AT89C2051 MCU מאטמל.

AT89C2051 הוא מיקרו -בקר קטן (2Kbyte, 128byte RAM) וזול (~ $ 1.40 לכל שבב).

  • פעולה 2.7-6V
  • 15 קווי I/O
  • 2 טיימרים (16 ביט)
  • הפרעות פנימיות וחיצוניות
  • UART
  • משווה אנלוגי על שבב
  • עד 2MIPS עם שעון 24MHz

שלב 1: דרישות

דרישות
דרישות

דרישות:

  • מחשב Linux (תוכנה נדרשת: Arduino IDE, git, make, sdcc)
  • ארדואינו UNO
  • שבב AT89C2051 (חבילת DIP20)
  • שקע ZIF 20 פינים
  • מצמד אופטי (רצוי פלט MOSFET)
  • מגן אב טיפוס של Arduino
  • ספק כוח 12V
  • ספק כוח 5V
  • מתנד קריסטל 16MHz
  • 2 קבלים 30pF
  • קבל 100nF
  • דיודה (למשל: 1N400X)
  • נגדים (1K, 3K3)
  • פרוטובארד
  • מגשרים
  • חוט נחושת

בדוק אם קיימת תוכנה נדרשת:

איזה פייתון 3

שעושים איזה sdcc איזה git

שלב 2: בניית המתכנת

בניית המתכנת
בניית המתכנת
בניית המתכנת
בניית המתכנת
בניית המתכנת
בניית המתכנת

חלק זה יהיה קצר, כפי שבניתי את מגן התכנות שלי לפני זמן מה. צירפתי את הסכימה והתמונות של הלוח המורכב. קובץ ה- PDF של הסכימה ניתן למצוא במאגר.

יהיה עליך לתכנת את לוח המתכנתים:

1. שיבוט את המאגר.

שיבוט git

2. פתח את הקובץ AT89C2051_programmer/AT89_prog/AT89_prog.ino ב- Arduino IDE.

3. בנה והעלה את הסקיצה מה- Arduino IDE.

שלב 3: התקנת תוכנת מתכנת

התקנת תוכנת מתכנת
התקנת תוכנת מתכנת
התקנת תוכנת מתכנת
התקנת תוכנת מתכנת

1. צור סביבה וירטואלית של פייתון.

python3 -m venv venv

. venv/bin/activ

2. התקן את at89overlord. at89overlord הוא מתכנת קוד פתוח לשבב AT89C2051 שנכתב על ידי. קוד המקור שלו ניתן למצוא כאן.

pip להתקין at89overlord

3. אמת את ההתקנה.

at89overlord -h

שלב 4: תכנות הצ'יפ

תכנות הצ'יפ
תכנות הצ'יפ
תכנות הצ'יפ
תכנות הצ'יפ
תכנות הצ'יפ
תכנות הצ'יפ
תכנות הצ'יפ
תכנות הצ'יפ

1. שיבוט פרויקט מצמוץ פשוט.

תקליטור ~

שיבוט git 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 -f./hello.ihx

שלב 5: הרכבה

הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה

הרכיב את המעגל על פי סכמטי. ניתן למצוא גרסת PDF במאגר.

אתה אמור לראות את הבזק הלד הירוק בתדירות של סביב 0.5 הרץ.

שלב 6: הסבר קוד

הסבר קוד
הסבר קוד

#לִכלוֹל

#לִכלוֹל

אנו מתחילים בהכללת הכותרת AT89X051 מ- sdcc. הוא מכיל פקודות מאקרו לאינטראקציה עם רגיסטרים כאילו היו משתנים. אנו כוללים גם stdint.h המכיל הגדרות של סוגי uint8_t ו- uint16_t שלמים.

// בהנחה שהמתנד הוא 16MHz

#הגדר INTERRUPTS_PER_SECOND 5208

הפרעה מתרחשת כאשר טיימר 0 עולה על גדותיו. הוא מוגדר כטיימר יחיד של 8 ביט, כך שזה קורה כל 2^8 מחזורי מעבד. מחזור מעבד אחד לוקח 12 מחזורי שעון, וכך אנו מגיעים ל 16000000/12/2^8 = 5208.33333.

uint8_t led_state נדיף = 0;

uint16_t timer_counter נדיף = INTERRUPTS_PER_SECOND;

אנו מכריזים על בקרת המדינה המובילה ומפריעים למשתני נגד.

טיימר void0_ISR (void) _interrupt (1) {

שעון_ Timer--; if (timer_counter == 0) {led_state =! led_state; timer_counter = INTERRUPTS_PER_SECOND; }}

בכל פעם שהטיימר 0 עולה על גדותיו, המונה יורד. אם הוא שווה לאפס הוא מתאפס, ומצב ה- LED משתנה. זה קורה בערך פעם בשנייה, וכתוצאה מכך תדר מהבהב של ~ 0.5Hz LED.

int main () {

TMOD = 0x3; // מצב טיימר - 8 סיביות, ללא מכשיר מראש. freq = OSCFREQ/12/2^8 TL0 = 0; // ניקוי מונה TH0 = 0; // נקה רשום TR0 = 1; // הגדר טיימר להפעלה. ET0 = 1; // הגדר הפרעה. EA = 1; // הגדר הפרעה גלובלית. בעוד (1) {if (led_state) {P1 = 0xFF; } אחר {P1 = 0x00; }}}

אנו מגדירים את מודול הטיימר ומחכים לשינויים במשתנה הבקרה של מצב ה- LED. TMOD הוא רשם בקרת מצב הטיימר. TL0 ו- TH0 הם אוגרי בקרת טיימר 0. ET0 הוא ביט ההפעלה של טיימר 0 ברשם בקרת הטיימר (TCON). TR0 ו- EA הם סיביות ברשם האפשרויות להפריע (IE).

שלב 7: משאבים נוספים

  • גיליון נתונים של AT89C2051:
  • מהדר מכשיר קטן C (sdcc):
  • 8051 משאבים:
  • מאגר מתכנת AT89C2051:
  • מאגר hello-8051:

מוּמלָץ: