תוכנה

 

תוכנה:

הוראות חשבוניות

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

העברת נתונים

אלגברה בוליאנית

הוראות הסתעפות

דגלים

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

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

את התוכנה בד"כ צורבים לזיכרון ROM ומציבים אותו בכתובת מוגדרת כך שהמיקרו לאחר איתחול ניגש לכתובת זו ומריץ את הישום יש לזכור שלא ניתן לשנות את התוכנה הצרובה ONLINE.

 

 

ארכיטקטורה

חומרה

ניהול זכרון

פסיקות

טיימרים/מונים

סוגי מיעון

UART

WATCHDOG

תוכנה

הוראות חשבוניות

תיאור

CYCLES

BYTES

MNEMONIC

חבר ל - A נתון מיידי

1

2

ADD A,#DATA

חבר ל A בית ישיר

1

2

ADD A,DIRECT

חבר ל A בית עקיף

1

1

ADD A,@R0

 

1

1

ADD A,@R1

חבר ל A תוכן אוגר

1

1

ADD A,Rn

חבר ל A נשא ונתון מיידי

1

2

ADDC A,#DATA

חבר ל A נשא ובית ישיר

1

2

ADDC A,DIRECT

חבר ל A נשא ובית עקיף

1

1

ADDC A,@R0

 

1

1

ADDC A,@R1

חבר ל - A נשא ותוכן אוגר

1

1

ADDC A,Rn

חסר מ - A נשא ונתון מיידי

1

2

SUBB A,#DATA

חסר מ - A נשא ובית ישיר

1

2

SUBB A,DIRECT

חסר מ - A נשא ובית עקיף

1

1

SUBB A,@R0

 

1

1

SUBB A,@R1

חסר מ - A נשא ותוכן אוגר

1

1

SUBB A,Rn

הכפל A ב - B ; MSD ל - B ; LSD ל - A

4

1

MUL AB

חלק A ב - B; מנה ל - A ; שארית ל - B

4

1

DIV AB

הגדל A ב - 1

1

1

INC A

הגדל בית ישיר ב - 1

1

2

INC DIRECT

הגדל בית עקיף ב - 1

1

1

INC @R0

 

1

1

INC @R1

הגדל תוכן אוגר ב - 1

1

1

INC Rn

הגדל DPTR ב - 1

2

1

INC DPTR

הקטן A ב - 1

1

1

DEC A

הקטן בית ישיר ב - 1

1

2

DEC DIRECT

הקטן בית עקיף ב - 1

1

1

DEC @R0

 

1

1

DEC @R1

הקטן תוכן אוגר ב - 1

1

1

DEC Rn

המר תוכן A לצופן BCD

1

1

DA A

 

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

תאור

CYCLES

BYTES

MNEMONIC

חבר ל -A בית מיידי

1

2

ADD A,#DATA

חבר ל - A בית ישיר

1

2

ADD A,DIRECT

חבר ל - A בית עקיף

1

1

ADD A,@R0

 

1

1

ADD A,@R1

חבר ל - A תוכן אוגר

1

1

ADD A,Rn

חבר ל - A נשא ונתון מיידי

1

2

ADDC A,#DATA

חבר ל - A נשא ובית ישיר

1

2

ADDC A,DIRECT

חבר ל - A נשא ובית עקיף

1

1

ADDC A,@R0

 

1

1

ADDC A,@R1

חבר ל - A נשא ותוכן אוגר

1

1

ADDC A,Rn

חסר מ - A נשא ונתון מיידי

1

2

SUBB A,#DATA

חסר מ - A נשא ובית ישיר

1

2

SUBB A,DIRECT

חסר מ - A נשא ובית עקיף

1

1

SUBB A,@R0

 

1

1

SUBB A,@R1

חסר מ - A נשא ותוכן אוגר

1

1

SUBB A,Rn

הכפל A ב - B ; MSD ל - B ; LSD ל - A

4

1

MUL AB

חלק A ב - B; מנה ל - A ; שארית ל - B

4

1

DIV AB

הגדל A ב - 1

1

1

INC A

הגדל בית ישיר ב - 1

1

2

INC DIRECT

הגדל בית עקיף ב - 1

1

1

INC @R0

 

1

1

INC @R1

הגדל תוכן אוגר ב - 1

1

1

INC Rn

הגדל DPTR ב - 1

2

1

INC DPTR

 

העברת נתונים

בית עקיף הוא בית ב - RAM פנימי במיעון עקיף . בית ש - R0 או R1 מצביעים עליו .

תיאור

CYCLES

BYTES

MNEMONIC

העבר נתון מיידי ל - A

1

2

MOV A,#DATA

העבר בית ישיר ל - A

1

2

MOV A,DIRECT

העבר בית עקיף ל - A

1

1

MOV A,@R0

 

1

1

MOV A,@R1

העבר תוכן אוגר ל - A

1

1

MOV A, Rn

העבר תוכן A לאוגר

1

1

MOV Rn,A

העבר תוכן מיידי לאוגר

1

2

MOV Rn,#DATA

העבר בית ישיר ל - Rn

2

2

MOV Rn,DIRECT

העבר תוכן A לבית ישיר

1

2

MOV DIRECT,A

העבר נתון מיידי לבית ישיר

2

3

MOV DIRECT,@DATA

העבר בית ישיר לבית ישיר

2

3

MOV DIRECT,DIRECT

העבר בית עקיף לבית ישיר

2

2

MOV DIRECT,@R0

 

2

2

MOV DIRECT,R1

העבר תוכן האוגר לבית ישיר

2

2

MOV DIRECT,Rn

העבר תוכן A לבית עקיף

1

1

MOV @R0,A

 

1

1

MOV @R1,A

העבר נתון מיידי לבית עקיף

1

2

MOV @R0,#DATA

 

1

2

MOV @R1,#DATA

העבר בית ישיר לבית עקיף

2

2

MOV @R0,DIRECT

 

2

2

MOV @R1,DIRECT

העבר נתון מיידי בן 16 סיביות ל - DPTR

2

3

MOV DPTR,#DATA16

העבר בית ל - A מאזור PROGRAM

מהכתובת A+DPTR

2

1

MOVC A,@A+DPTR

העבר בית ל - A מאזור PROGRAM

מהכתובת A+PC

2

1

MOVC A,@A+PC

העבר בית ל - A מ - RAM חיצוני

מהכתובת DPTR

2

1

MOVX A,@DPTR

העבר בית ל - A מ - RAM חיצוני מהכתובת 0R

2

1

MOVX A,@R0

העבר בית ל - A מ - RAM חיצוני מהכתובת R1

2

1

MOVX A,@R1

העבר תוכןA לבית ב - RAM החיצוני

בכתובת DPTR

2

1

MOVX @DPTR,A

העבר תוכןA לבית ב - RAM החיצוני בכתובת R0

2

1

MOVX @R0,A

העבר תוכןA לבית ב - RAM החיצוני בכתובת R1

2

1

MOVX @R1,A

החלף תוכן A עם בית ישיר

1

2

XCH A,DIRECT

החלף תוכן A עם בית עקיף

1

1

XCH A,@R0

 

1

1

XCH A,@R1

החלף תוכן A עם תוכן האוגר

1

1

XCH A,Rn

החלף 4 סיביות LSB בבית עקיף

1

1

XCHD A,@R0

עם 4 סיביות LSB ב - A

1

1

XCHD A,@R1

דחוף בית ישיר למחסנית

2

2

PUSH DIRECT

משוך בית ישיר מהמחסנית

2

2

POP DIRECT

 

אלגברה בוליאנית

אפס נשא

2

1

CLR C

אפס סיבית ישירה

1

2

CLR BIT

קבע 1 בנשא

1

1

SETB C

קבע 1 בסיבית ישירה

1

2

SETB BIT

בצע משלים לנשא

1

1

CPL C

בצע משלים לסיבית ישירה

1

2

CPL BIT

AND בין סיבית ישירה

2

2

ANL C,BIT

AND בין משלים לסיבית ישירה

2

2

ANL C,/BIT

OR בין סיבית ישירה לנשא

2

2

ORL C,BIT

OR בין משלים לסיבית ישירה לנשא

2

2

ORL C,/BIT

העבר סיבית ישירה לנושא

1

2

MOV C,BIT

העבר נשא לסיבית ישירה

2

2

MOV BIT,C

דלג אם סיבית ישירה ב - 1 ואפס אותה

2

3

JBC BIT,REL

דלג אם סיבית ישירה ב - 1

2

3

JB BIT,REL

דלג אם סיבית ישירה ב - 0

2

3

JNB BIT,REL

דלג אם נשא ב - 1

2

2

JC REL

דלג אם נשא ב - 0

2

2

JNL REL

 

הוראות הסתעפות

קרא לתוכנית משנה עם כתובת חלקית

2

2

ACALL ADDR11

קרא לתוכנית משנה רחוקה

2

3

LCALL ADDR16

חזור מתוכנית משנה

2

1

RET

חזור מפסיקה

2

1

RETI

דלג עם כתובת חלקית

2

2

AJMP ADDR11

דלג רחוק

2

3

LJMP ADDR16

דלג קרוב בהסט

2

2

SJMP REL

דלג לכתובת ( DPTR +A )

2

1

JMP @A+DPTR

דלג אם 0 = A

2

2

JZ REL

דלג אם 0 = A

2

2

JNZ REL

השווה בין A לנתון מיידי ודלג אם אינם שווים

2

3

CJNE A,#DATA,REL

השווה בין A לבית ישיר ודלג אם אינם שווים

2

3

CJNE A,DIRECT,REL

השווה בין A לבית עקיף ודלג אם אינם שווים

2

3

CJNE @R0,#DATA,REL

 

2

3

CJNE @R1,#DATA,REL

השווה בין A לאוגר ודלג אם אינם שווים

2

3

CJNE Rn,#DATA,REL

חסר 1 מבית ישיר ודלג אם שונה מ - 0

2

3

DJNZ DIRECT,REL

חסר 1 מאוגר ודלג אם שונה מ - 0

2

3

DJNZ Rn,REL

אין פעולה

1

1

NOP

דגלים

רק חלק קטן מההוראות משפיע על דגלים . בטבלה הבאה רשומות הוראות המשפיעות על

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

יתאפס עם ביצוע ההוראה . 1 מציין שהדגל יונף עם ביצוע ההוראה .

 

הוראות

CY

OV

AC

ADD

x

x

x

ADDC

x

x

x

SUBB

x

x

x

MUL

0

x

 

DIV

0

x

 

DA

x

   

RRC

x

   

RLC

x

   

SETB C

1

   

CLR C

0

   

CPL C

x

   

ANL C,BIT

x

   

ANL C,/BIT

x

   

ORL C,BIT

x

   

ORL C,/BIT

x

   

MOV C,BIT

x

   

CJNE

x

   

 

Valid HTML 4.01!