מבוא לתכנות 8051 בשפת הרכבה

נסה את הכלי שלנו לביטול בעיות





שפת ההרכבה היא שפת תכנות ברמה נמוכה המשמשת לכתיבת קוד התוכנית במונחים של זיכרונות. למרות שיש כיום הרבה מאוד שפות ברמה גבוהה המבוקשות, שפת תכנות הרכבה נמצאת בשימוש פופולרי ביישומים רבים. ניתן להשתמש בה לצורך מניפולציות ישירות בחומרה. הוא משמש גם לכתיבת ה- קוד תכנות 8051 ביעילות עם פחות מחזורי שעון על ידי צריכת פחות זיכרון בהשוואה לשפות אחרות ברמה גבוהה.

8051 תכנות בשפת הרכבה

תכנות 8051



8051 תכנות בשפת הרכבה

שפת ההרכבה היא שפת תכנות מלאה הקשורה לחומרה. על המעצבים המוטבעים להיות בעלי ידע מספיק על חומרה של מעבד או בקרים מסוימים לפני כתיבת התוכנית. שפת ההרכבה פותחה על ידי תזכירים ולכן משתמשים אינם יכולים להבין אותה בקלות כדי לשנות את התוכנית.


8051 תכנות בשפת הרכבה

8051 תכנות בשפת הרכבה



שפת תכנות הרכבה מפותחת על ידי מהדרים שונים ו- ה 'אולם באולינג' המתאים ביותר ל מיקרו-בקרתִכנוּת התפתחות. Mבקרי מיקרואו שמעבדים יכולים להבין רק שפה בינארית בצורה של '0s או 1s'. הרכבה ממירה את שפת ההרכבה לשפה בינארית ואז שומרת אותהמיקרו-בקרזיכרון לביצוע המשימה הספציפית.

8051 אדריכלות מיקרו-בקר

8051מיקרו-בקרהאם ה אדריכלות הרווארד מבוססת על CISC , ויש בו ציוד היקפי כמו 32 ​​קלט / פלט, טיימרים / מונים, תקשורת טורית וזיכרונות. המיקרו-בקרדורש תוכנית לביצוע הפעולות הדורשות זיכרון לשמירה ולקריאת הפונקציות. 8051מיקרו-בקרמורכב מזיכרונות RAM ו- ROM לאחסון הוראות.

8051 מיקרו-בקר Arctitecuture

8051 אדריכלות מיקרו-בקר

רישום הוא החלק העיקרי ב המעבדים ומיקרו-בקרים אשר כלול בזיכרון המספק דרך מהירה יותר לאיסוף ואחסון הנתונים. תכנות שפת הרכבה 8051 מבוסס על רושמי הזיכרון. אם אנו רוצים לתפעל נתונים למעבד או לבקר על ידי ביצוע חיסור, חיבור וכו ', איננו יכולים לעשות זאת ישירות בזיכרון, אך הוא זקוק לרשמים כדי לעבד ולאחסן את הנתונים.מיקרו-בקריםמכילים מספר סוגים של רישומים שניתן לסווג בהתאם להוראותיהם או לתכנים הפועלים בהם.

תוכניות מיקרו-בקר 8051 בשפת הרכבה

שפת הרכבה מורכבת מאלמנטים שכולם משמשים לכתיבת התוכניתבאופן רציף. פעל על פי הכללים הנתונים כדי לכתוב תכנות בשפת הרכבה.


כללי שפת האסיפה

  • יש לכתוב את קוד ההרכבה באותיות גדולות
  • אחרי התוויות חייב להיות נקודתיים (תווית :)
  • כל הסמלים והתוויות חייבים להתחיל באות
  • כל ההערות מוקלדות באותיות קטנות
  • השורה האחרונה בתוכנית חייבת להיות הנחיית ה- END

המינונים של שפת ההרכבה הם בצורת אופ-קוד, כגון MOV, ADD, JMP, וכן הלאה, המשמשים לביצוע הפעולות.

קוד אופ: קוד op הוא הוראה אחת שניתן לבצע על ידי המעבד. כאן קוד ה- op הוא הוראות MOV.

מבצעים: האופרנדים הם פיסת נתונים אחת הניתנת להפעלה באמצעות קוד op. דוגמה, פעולת הכפל מתבצעת על ידי האופרנדים המוכפלים באופראנד.

תחביר: MUL א,ב

האלמנטים של תכנות שפת אסיפה:

  • הרכיב הנחיות
  • סט הוראות
  • טיפול במצבים

הוראות להרכיב:

הוראות ההרכבה נותנות את ההוראות למעבד. 8051מיקרו-בקרמורכב מסוגים שונים של הוראות הרכבה על מנת לתת את ההנחיה ליחידת הבקרה. ההוראות הכי שימושיות הן תכנות 8051, כגון:

  • אורג
  • DB
  • EQU
  • סוֹף

אורג(מָקוֹר): הנחיה זו מציינת את תחילת התוכנית. זה משמש להגדרת כתובת הרישום במהלך ההרכבה. לדוגמא ORG 0000h אומר למהדר את כל הקוד הבא החל מכתובת 0000h.

תחביר: ORG 0000h

DB(הגדר בתים): בתים להגדיר משמש לאפשר מחרוזת בתים. לדוגמא, הדפיסו את 'EDGEFX' שבו כל תו נלקח על ידי הכתובת ולבסוף מדפיס את ה'מחרוזת 'על ידי ה- DB ישירות עם מרכאות כפולות.

תחביר:

ORG 0000h

MOV a, # 00h
————-
————-
DB 'EDGEFX'

EQU (שווה ערך): ההנחיה המקבילה משמשת להשוואה בין כתובת המשתנה.

תחביר:

רג שווה ערך,09:00
—————–
—————–
MOVרג,# 2 שעות

סיום: הוראת ה- END משמשת לציון סיום התוכנית.

תחביר:

רג שווה ערך,09:00

—————–
—————–
MOVרג,# 2 שעות
סוֹף

דרכי התייחסות:

דרך הגישה לנתונים נקראת מצב כתובת. המעבד יכול לגשת לנתונים בדרכים שונות באמצעות מצבי כתובת. 8051מיקרו-בקרמורכב מחמישה מצבי כתובת כגון:

  • מצב טיפול מיידי
  • רשום מצב כתובת
  • מצב כתובת ישירה
  • מצב כתובת עקיף
  • מצב כתובת אינדקס בסיסי

מצב כתובת מיידי:

במצב כתובת זה, המקור חייב להיות ערך שיכול להיות אחריו '#' והיעד חייב להיות רושמי SFR, רושמים למטרות כלליות וכתובת. הוא משמש לאחסון מיידי של הערך ברשומות הזיכרון.

תחביר:

MOV A, # 20h // A הואanרישום המצברים, 20 מאוחסן ב- A //
MOV R0,# 15 // R0 הוא מרשם 15 למטרה כללית המאוחסן במרשם R0 //
MOV P0, # 07h // P0 הוא SFR register07 מאוחסן ב- P0 //
MOV 20h,# 05h // 20h היא הכתובת של המרשם 05 המאוחסן ב 20h //

לְשֶׁעָבַר:

MOV R0, # 1
MOV R0, # 20 // R0<—R0[15] +20, הערך הסופי נשמר ב- R0 //

רשום מצב כתובת:

במצב כתובת זה, המקור והיעד חייבים להיות רושמים, אך לא רישומי מטרה כללית. אז הנתונים לא מועברים בתוך ה- רישומי בנקים למטרות כלליות .

תחביר:

MOV A, B // A הוא מרשם SFR, B הוא מרשם למטרות כלליות //
MOV R0, R1 // הוראה לא חוקית, GPR ל- GPR לא אפשרי //

לְשֶׁעָבַר:

MOV R0, # 02h
MOV A, # 30h
הוסף R0, A // R0<—R0+A, the final value is stored in the R0 register//

מצב כתובת ישירה

במצב כתובת זה, המקור או היעד (או גם המקור וגם היעד) חייבים להיות כתובת, אך לא ערך.

תחביר:

MOV A,20h / 20h זו כתובת A היא רישום //
MOV 00h, 07h // שניהם מופנים מרשמי ה- GPS //

לְשֶׁעָבַר:

MOV 07h,# 01h
MOV A, # 08h
הוסף,07h // א<—A+07h the final value is stored in A//

מצב כתובת עקיף:

במצב כתובת זה, המקור או היעד (או היעד או המקור) חייבים להיותלכתובת עקיפה, אך לא ערך. מצב כתובת זה תומך במושג המצביע. המצביע הוא משתנה המשמש לאחסון כתובת המשתנה האחר. מושג מצביע זה משמש רק לרשומות R0 ו- R1.

תחביר:

MOVR0, ערך 01h // 01 מאוחסן במרשם R0, כתובת R0 08h //
MOV R1, # 08h // R1 הוא משתנה המצביעחנויותכתובת (08 שעות) של R0 //
MOV 20h,ערך @ R1 // 01 נשמר בכתובת 20 שעות של רישום רופאי המשפחה //

מצב כתובת עקיף

מצב כתובת עקיף

מצב כתובת אינדקס בסיסי:

מצב כתובת זה משמש לקריאת הנתונים מה- זיכרון חיצוני או זיכרון ROM . כל מצבי ההתייחסות אינם יכולים לקרוא את הנתונים מזיכרון הקוד. על הקוד לקרוא דרך רישום DPTR. ה- DPTR משמש לציון הנתונים בקוד או בזיכרון החיצוני.

תחביר:

MOVC A, @ A + DPTR // C מציין זיכרון קוד //
MOCX A, @ A + DPTR // X מציינים זיכרון חיצוני //
EX: MOV A, # 00H // 00H מאוחסן במרשם A //
MOV DPTR, # 0500H // נקודות DPTR נקודות 0500h בזיכרון //
MOVC A, @ A + DPTR // שלח את הערךלהרשומה A //
MOV P0, A // תאריך A לשלוח לרשם התו //

סט הוראות:

מערך ההוראות הוא מבנה הבקר או המעבד המספק פקודות לבקר להנחות את הבקר לעיבוד נתונים. מערך ההוראות מורכב מהוראות, סוגי נתונים מקוריים, מצבי כתובת, רישומי הפרעה, טיפול יוצא דופן וארכיטקטורת זיכרון. ה 8051מיקרו-בקר יכול לעקוב אחר הוראות CISC עם ארכיטקטורת הרווארד. במקרה של תכנות 8051 סוגים שונים של הוראות CISC כוללים:

  • ערכת הוראות להעברת נתונים
  • ערכת הוראות רציפה
  • סט הוראות הדרכה אריתמטית
  • מסעף אניחינוךמַעֲרֶכֶת
  • סט מכשירי לולאה
  • סט הוראות הוראה מותנית
  • מערך הוראות ללא תנאי
  • מערך הוראות לוגיות
  • סט הדרכה בוליאני

סט הוראות לחשבון:

הוראות החשבון מבצעות את הפעולות הבסיסיות כגון:

  • חיבור
  • כֶּפֶל
  • חִסוּר
  • חֲלוּקָה

חיבור:

ORG 0000h
MOV R0, # 03H // העבר את הערך 3 לרישום R0 //
MOV A, # 05H // העבר את הערך 5 לצבר A //
הוסף A, 00H //הוסףערך עם ערך R0 ומאחסן את התוצאהב//
סוֹף

כֶּפֶל:

ORG 0000h
MOV R0, # 03H // העבר את הערך 3 לרישום R0 //
MOV A, # 05H // העבר את הערך 5 לצבר A //
MUL A, 03H //כָּפוּלהתוצאה נשמרת במצבר A //
סוֹף

חִסוּר:

ORG 0000h
MOV R0, # 03H // העבר את הערך 3 כדי לרשום R0 //
MOV A, # 05H // העבר את הערך 5 לצבר A //
SUBB A, 03H // ערך התוצאה נשמר בצבר A //
סוֹף

חֲלוּקָה:

ORG 0000h
MOV R0, # 03H // העבר את הערך 3 כדי לרשום R0 //
MOV A, # 15H // העבר את הערך 5 לצבר A //
DIV A, 03H // הערך הסופי נשמר בצבר A //
סוֹף

הוראות מותנות

המעבד מבצע את ההוראות על סמך התנאי על ידי בדיקת סטטוס סיביות בודדות או מצב בתים. 8051מיקרו-בקרמורכב מהוראות מותנות שונות כגון:

  • JB -> קפיצה למטה
  • JNB -> קפיצה אם לא למטה
  • JC -> קפיצה אם נשא
  • JNC -> קפיצה אםלֹאקח
  • JZ -> קפיצה אם אפס
  • JNZ -> קפיצה אםלֹאאֶפֶס
הוראות מותנות

הוראות מותנות

1. תחביר:

JB P1.0, תווית
- - - - - - - -
- - - - - - - -
תווית: - - - - - - - -
- - - - - - - -
סוֹף

2. תחביר:

JNB P1.0, תווית
- - - - - - - -
- - - - - - - -
תווית: - - - - - - - -
- - - - - - - -
סוֹף

3. תחביר:

JC, תווית
- - - - - - - -
- - - - - - - -
תווית: - - - - - - - -
- - - - - - - -
סוֹף

4. תחביר:

JNC, תווית
- - - - - - - -
- - - - - - - -
תווית: - - - - - - - -
- - - - - - - -
סוֹף
5. תחביר:

JZ, תווית
- - - - - - - -
- - - - - - - -
תווית: - - - - - - - -
- - - - - - - -
סוֹף

6. תחביר:

JNZ, תווית
- - - - - - - -
- - - - - - - -
תווית: - - - - - - - -
- - - - - - - -
סוֹף

הוראות להתקשר ולקפוץ:

הוראות השיחה והקפיצה משמשות כדי למנוע שכפול קוד של התוכנית. כאשר נעשה שימוש בקוד ספציפי יותר מפעם אחת במקומות שונים בתוכנית, אם נצייןשם ספציפילקוד אזנוכל להשתמש בשם זה בכל מקום בתוכנית מבלי להזין קוד בכל פעם. זה מפחית את מורכבות התוכנית. התכנות 8051 מורכב מהוראות שיחה וקפיצה כגון LCALL, SJMP.

  • LCALL
  • שיחה
  • SJMP
  • LJMP

1. תחביר:

ORG 0000h
- - - - - - - -
- - - - - - - -
ACALL, תווית
- - - - - - - -
- - - - - - - -
עצור SJMP
תווית: - - - - - - - -
- - - - - - - -
- - - - - - - -
ימין
תפסיק:NOP

2. תחביר:

ORG 0000h
- - - - - - - -
- - - - - - - -
LCALL, תווית
- - - - - - - -
- - - - - - - -
עצור SJMP
תווית: - - - - - - - -
- - - - - - - -
- - - - - - - -
ימין
תפסיק:NOP

הוראות להתקשר ולקפוץ

הוראות להתקשר ולקפוץ

הוראות לולאה:

הוראות הלולאה משמשות לחזרה על החסימה בכל פעם תוך ביצוע פעולות הגדלה והקטנה. 8051מיקרו-בקרמורכב משני סוגים של הוראות לולאה:

  • CJNE -> השווה וקפוץ אם לא שווה
  • DJNZ -> ירידה וקפיצה אם לא אפס

1. תחביר:

שֶׁלCJNE
MOV A, # 00H
MOV B, # 10H
תווית: INC A
- - - - - -
- - - - - -
CJNE A, תווית

2. תחביר:

שֶׁלDJNE

MOV R0, # 10H
תווית: - - - - - -
- - - - - -
DJNE R0, תווית
- - - - - -
- - - - - -
סוֹף

ערכת הוראות לוגית:

ערכת ההוראות 8051 למיקרו-בקר מספקת את הוראות ההיגיון של AND, OR, XOR, TEST, NOT והבוליאני ומנקה את הסיביות בהתבסס על הצורך בתוכנית.

ערכת הוראות לוגית

ערכת הוראות לוגית

1. תחביר:

MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
ORL A, R0 // 00100000/00000101 = 00000000 //

2. תחביר:

MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
ANL A, R0

3. תחביר:

MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
XRL A, R0

מפעילי העברה

מפעילי המשמרת משמשים לשליחה וקבלה של הנתונים ביעילות. 8051מיקרו-בקרמורכבים מארבעה מפעילי משמרת:

  • RR -> סובב ימינה
  • RRC -> סובב ימינה דרך העברה
  • RL -> סובב שמאלה
  • RLC -> סובב שמאלה דרך לשאת

סובב ימינה (RR):

בפעולת הסטה זו, ה- MSB הופך ל- LSB וכל הסיביות עוברות לכיוון צד ימין ביט-ביט, סדרתי.

תחביר:

MOV A, # 25h
RR א

סובב שמאלה (RL):

בפעולת הסטה זו, ה- MSB הופך ל- LSB וכל הסיביות עוברות לכיוון הצד השמאלי ביט-ביט, סדרתי.

תחביר:

MOV A, # 25h
RL A

RRC סובב ימינה דרך נשיאה:

בפעולת הסטה זו, ה- LSB עובר לנשיאה והנשיאה הופכת ל- MSB, וכל הסיביות עוברות לכיוון צד ימין מקצה אחר ביט.

תחביר:

MOV A, # 27h
RRC א

RLC סובב שמאלה דרך נשיאה:

בפעולת הסטה זו, ה- MSB עובר לשאת והנשיאה הופכת ל- LSB וכל הסיביות עוברות לכיוון צד שמאל במצב ביט-ביט.

תחביר:

MOV A, # 27h
RLC A.

תוכניות בסיסיות C מוטבעות:

המיקרו-בקרהתכנות שונה עבור כל סוג של מערכת הפעלה. יש מערכות הפעלה רבות כגון לינוקס, חלונות, RTOS וכן הלאה. עם זאת, ל- RTOS יש כמה יתרונות לפיתוח מערכות משובצות. חלק מהדוגמאות לתכנות ברמת האסיפה מובאות להלן.

נורית LED מהבהבת באמצעות עם 8051מיקרו-בקר:

  • מספר המוצג בתצוגה בת 7 קטעים באמצעות מיקרו-בקר 8051
  • טיימר / חישובי מונה ותכנית באמצעות 8051מיקרו-בקר
  • חישובי תקשורת סדרתיים ותכנית באמצעות 8051מיקרו-בקר

תוכניות לד עם 8051 מ 'icrocontrller

1. WAP כדי להחליף את נוריות ה- PORT1

ORG 0000H
TOGLE: MOV P1, # 01 //מהלך לזוז לעבור00000001 לרישום p1 //
עיכוב התקשרות // ביצוע העיכוב //
MOV A, P1 // מהלךערך p1לצבר //
CPL A // משלים ערך //
MOV P1, A // העבר 11111110 לרישום port1 //
עיכוב התקשרות // ביצוע העיכוב //
SJMP TOGLE
עיכוב: MOV R5, # 10H // עומס רישום R5 עם 10 //
שני: MOV R6, # 200 // רושם עומס R6 עם 200 //
ONE: MOV R7, # 200 // עומס רישום R7 עם 200 //
DJNZ R7, $ // ירידה R7 עד שהוא אפס //
DJNZ R6, ONE // ירידה R7 עד שהוא אפס //
DJNZ R5, שני // ירידה R7 עד שהוא אפס //
RET // חזור לתוכנית הראשית //
סוֹף

טיימר / חישובי מונה ותכנית באמצעות 8051 מ 'מיקרו-בקר:

העיכוב הוא אחד הגורמים החשובים בפיתוח תוכנת היישומים. ה טיימרים ודלפקים הם רכיבי חומרה שלמיקרו-בקר, המשמשים ביישומים רבים כדי לספק את עיכוב הזמן המדויק עם פעימות ספירה. באחרת המשימות מיושמות על ידי טכניקת התוכנה.

1. WAP לחישוב עיכוב הזמן של 500us.

MOV TMOD, # 10H // בחר את מצב הטיימר לפי הרישומים //
MOV TH1, # 0FEH // אחסן את זמן העיכוב בסיבית גבוהה יותר //
MOV TL1, # 32H // אחסן את זמן העיכוב בסיבית נמוכה //
JNB TF1, $ // מקטינים את ערך הטיימר עד שהוא אפס //
CLR TF1 // נקה את דגל הטיימרקצת//
CLR TR1 // כבוי הטיימר //

2. WAP להחלפת נוריותעם ה5שניותעיקוב זמן

ORG 0000H
חזרה: MOV PO, # 00H
עיכוב ACALL
MOV P0, # 0FFH
עיכוב ACALL
החזר חזרה
עיכוב: MOV R5, # 50H // עומס רישום R5 עם 50 //
עיכוב 1: MOV R6, # 200 // רישום עומסים R6 עם 200 //
DELAY2: MOV R7, # 229 // עומס רישום R7 עם 200 //
DJNZ R7, $ // ירידה R7 עד שהוא אפס //
DJNZ R6, DELAY2 // ירידה R6 עד שהוא אפס //
DJNZ R5, DELAY1 // ירידה ב- R5 עד שהוא אפס //
RET // חזור לתוכנית הראשית //
סוֹף

3. WAP לספירת 250 הפולסים באמצעות mode0 count0

תחביר:

ORG 0000H
MOV TMOD, # 50H // בחר את הדלפק //
MOV TH0, # 15 // העבר את פעימות הספירה לסיבית גבוהה יותר //
MOV TH1, # 9FH //מהלך לזוז לעבורפעימות הספירה, הסיבית התחתונה //
SET TR0 // ON the timer //
JNB $ // להקטין את ערך הספירה עד אפס //
CLR TF0 // נקה את הדלפק, דגלקצת//
CLR TR0 // עצור את הטיימר //
סוֹף

תכנות תקשורת טורית באמצעות 8051 מ 'מיקרו-בקר:

תקשורת טורית משמש לרוב להעברת וקבלת הנתונים. 8051מיקרו-בקרמורכב מתקשורת סדרתית UART / USART והאותות מועברים ומתקבלים על ידיטקסוסיכות Rx. תקשורת ה- UART מעבירה את הנתונים ביט-ביט-סדרתי. ה- UART הוא פרוטוקול חצי דופלקס שמעביר ומקבל את הנתונים, אך לא בו זמנית.

1. WAP כדי להעביר את הדמויות למסוף ההיפר

MOV SCON, # 50H // הגדר את התקשורת הטורית //
MOV TMOD, # 20H // בחר את מצב הטיימר //
MOV TH1, # -3 // קבע את קצב השידור //
SET TR1 // ON the timer //
MOV SBUF, # ’S’ // מעבירים S לחלון הסדרתי //
JNB TI, ערך // ירידה של הטיימר עד שהוא אפס //
CLR RI // נקה קבלת הפרעה //
CLR TR1 // טיימר ברור //

2. WAP כדי להעביר את הדמות קבל על ידי מסוף ההיפר

MOV SCON, # 50H // הגדר את התקשורת הטורית //
MOV TMOD, # 20H // בחר את מצב הטיימר //
MOV TH1, # -6 // הגדר את קצב השידור //
הגדר TR1 // בטיימר //
MOV SBUF, # ’S’ // מעבירים S לחלון הסדרתי //
JNB RI, ערך // ירידה של הטיימר עד שהוא אפס //
CLR RI // נקה קבלת הפרעה //
MOV P0, SBUF // שלח את ערך הרישום של SBUF אל port0 //
CLR TR1 // טיימר ברור //

כל זה קשור לתכנות 8051 בשפת הרכבה בקצרה עם תוכניות מבוססות דוגמה. אנו מקווים שמידע הולם זה על שפת הרכבה יעזור בהחלט לקוראים ואנו מצפים להערותיהם החשובות בסעיף ההערות שלהלן.