Bevezetés a 8051 programozásba az Assembly nyelvben

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Az összeállítási nyelv egy alacsony szintű programozási nyelv, amelyet a programkód mnemonika szempontjából írnak. Annak ellenére, hogy jelenleg sok magas szintű nyelv van, ezekre a keresletre van szükség, a szerelési programozási nyelvet sok alkalmazásban népszerűen használják. Közvetlen hardveres manipulációkhoz használható. A. Írásához is használják 8051 programozási kód hatékonyan kevesebb óraciklusszámmal kevesebb memória fogyasztásával, mint a többi magas szintű nyelv.

8051 Programozás összeszerelési nyelven

8051 Programozás



8051 Programozás összeszerelési nyelven

Az összeállítási nyelv egy teljesen hardverrel kapcsolatos programozási nyelv. A beágyazott tervezőknek a program megírása előtt elegendő ismerettel kell rendelkezniük bizonyos processzorok vagy vezérlők hardveréről. Az összeállítási nyelvet mnememonikák fejlesztették ki, ezért a felhasználók nem tudják könnyen megérteni a program módosítását.


8051 Programozás összeszerelési nyelven

8051 Programozás összeszerelési nyelven



Az összeállítási programozási nyelvet különféle fordítók és a 'tekepálya' legalkalmasabb arra mikrovezérlőprogramozás fejlődés. Mjégvezérlőkvagy a processzorok csak a bináris nyelvet tudják megérteni „0s vagy 1s” formában. Az assembler átalakítja az összeállítási nyelvet bináris nyelvvé, majd eltárolja azt amikrovezérlőmemória az adott feladat elvégzéséhez.

8051 mikrokontroller architektúra

A 8051mikrovezérlőaz a CISC alapú Harvard architektúra , és rendelkezik olyan perifériákkal, mint a 32 I / O, az időzítők / számlálók, a soros kommunikáció és a memóriák. Azmikrovezérlőprogramot igényel a memóriát igénylő műveletek végrehajtásához és a funkciók elolvasásához. A 8051mikrovezérlőRAM és ROM memóriákból áll az utasítások tárolására.

8051 mikrokontroller arctitecuture

8051 mikrokontroller architektúra

A nyilvántartás a fő része a a feldolgozók ésmikrovezérlők amelyet az adatgyűjtés és -tárolás gyorsabb módját biztosító memória tartalmaz. A 8051 összeállítási nyelv programozása a memória regisztereken alapul. Ha kivonás, összeadás stb. Végrehajtásával manipulálni akarjuk az adatokat egy processzorral vagy vezérlővel, akkor ezt nem tehetjük meg közvetlenül a memóriában, de regiszterekre van szüksége az adatok feldolgozásához és tárolásához.Mikrovezérlőktöbbféle nyilvántartást tartalmaz, amelyeket utasításaik vagy a bennük működő tartalom szerint osztályozhatunk.

8051 mikrokontroller program az összeállítási nyelven

Az összeállítási nyelv olyan elemekből áll, amelyek mindegyike a program írására szolgálszekvenciális módon. Kövesse a megadott szabályokat a programozás összeállítási nyelven történő írásához.


A közgyűlés nyelvének szabályai

  • Az összeszerelési kódot nagybetűvel kell írni
  • A címkéket kettőspontnak kell követni (címke :)
  • Minden szimbólumnak és címkének betűvel kell kezdődnie
  • Az összes megjegyzés kisbetűvel van begépelve
  • A program utolsó sorának az END irányelvnek kell lennie

Az összeállítási nyelv mnememonikája op-kód formájában van, például MOV, ADD, JMP és így tovább, amelyek a műveletek végrehajtására szolgálnak.

Op kód: Az op-kód egyetlen utasítás, amelyet a CPU végrehajthat. Itt az op-kód egy MOV utasítás.

Operandusok: Az operandusok egyetlen adat, amelyet az op-kód működtethet. Például a szorzási műveletet az operandusokkal megszorzott operandusok hajtják végre.

Szintaxis: MUL a,b

A közgyűlés nyelvi programozásának elemei:

  • Állítsa össze az irányelveket
  • Utasításkészlet
  • Címzési módok

Összeszerelési utasítások:

Az összeszerelési irányelvek megadják az utasításokat a CPU-nak. A 8051mikrovezérlőkülönféle szerelési irányelvekből áll, hogy irányt adjanak a vezérlőegységnek. A leghasznosabb irányelvek a 8051 programozás, például:

  • ORG
  • DB
  • EQU
  • VÉGE

ORG(eredet): Ez az irányelv jelzi a program kezdetét. Ez a regisztráció címének beállítására szolgál az összeszerelés során. Például az ORG 0000h megmondja a fordítónak az összes következő kódot, a 0000h címmel kezdődően.

Szintaxis: ORG 0000h

DB(bájt meghatározása): A definiált bájt a bájtsorozat engedélyezésére szolgál. Például nyomtassa ki az „EDGEFX” szót, ahol minden karaktert a cím vesz fel, és végül dupla idézőjelekkel nyomtatja ki a DB „stringjét”.

Szintaxis:

ORG 0000h

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

EQU (egyenértékű): Az egyenértékű irányelv a változó címének egyenlőségére szolgál.

Szintaxis:

reg egyenlő,09h
—————–
—————–
MOVreg,# 2h

VÉGE: Az END irányelv a program végének jelzésére szolgál.

Szintaxis:

reg egyenlő,09h

—————–
—————–
MOVreg,# 2h
VÉGE

Címzési módok:

Az adatokhoz való hozzáférés módját címzési módnak nevezzük. A CPU különböző módon érheti el az adatokat címzési módok használatával. A 8051mikrovezérlőöt címzési módból áll, mint például:

  • Azonnali címzési mód
  • Regisztrálja a címzési módot
  • Közvetlen címzési mód
  • Közvetett címzési mód
  • Alap Index címzési mód

Azonnali címzési mód:

Ebben a címzési módban a forrásnak olyan értéknek kell lennie, amelyet a „#” követhet, és a célnak meg kell lennie SFR nyilvántartások, általános célú nyilvántartások és címet. Arra szolgál, hogy azonnal tárolja az értéket a memória regiszterekben.

Szintaxis:

MOV A, # 20h // A isanakkumulátor regiszter, 20 az A // tárolásra kerül
MOV R0,# 15 // R0 általános célú regiszter 15 a R0 regiszterben van tárolva //
MOV P0, # 07h // P0 egy SFR regiszter, 07 pedig a P0 //
MOV 20h,# 05h // 20h a 20h-ban tárolt 05 regiszter címe //

Korábbi:

MOV R0, # 1
MOV R0, # 20 // R0<—R0[15] +20, a végső érték R0-ban tárolódik //

Címzési mód regisztrálása:

Ebben a címzési módban a forrásnak és a célnak nyilvántartásnak kell lennie, de nem általános célú regisztereknek. Tehát az adatok nem kerülnek áthelyezésre a általános célú banknyilvántartások .

Szintaxis:

MOV A, B // A SFR regiszter, B általános célú regiszter //
MOV R0, R1 // Érvénytelen utasítás, GPR-GPR nem lehetséges //

KORÁBBI:

MOV R0, # 02h
MOV A, # 30h
ADD R0, A // R0<—R0+A, the final value is stored in the R0 register//

Közvetlen címzési mód

Ebben a címzési módban a forrásnak vagy a célnak (vagy a forrásnak és a célnak egyaránt) címnek kell lennie, de nem értéknek.

Szintaxis:

MOV A,20h // 20h egy cím A egy regiszter //
MOV 00h, 07h // mindkettőt a GPS regiszterek címzik //

Korábbi:

MOV 07h,# 01h
MOV A, # 08h
ADD A,07h // A<—A+07h the final value is stored in A//

Közvetett címzési mód:

Ebben a címzési módban a forrásnak vagy a célnak (vagy a célnak vagy a forrásnak) kell lennienak nekközvetett cím, de nem érték. Ez a címzési mód támogatja a mutató fogalmát. A mutató egy olyan változó, amelyet a másik változó címének tárolására használnak. Ezt a mutatókoncepciót csak az R0 és R1 regiszterekhez használják.

Szintaxis:

MOVR0, # 01h // 01 érték az R0 regiszterben van tárolva, az R0 cím 08h //
MOV R1, # 08h // R1 az a mutató változóüzletekR0 címe (08h) //
MOV 20h,@ R1 // 01 értéket a háziorvosi nyilvántartás 20 órás címe tárolja //

Közvetett címzési mód

Közvetett címzési mód

Alap index címzési mód:

Ezt a címzési módot használják az adatok olvasására a külső memória vagy ROM memória . Az összes címzési mód nem tudja kiolvasni az adatokat a kódmemóriából. A kódnak át kell olvasnia a DPTR regisztert. A DPTR-t a kód vagy a külső memória adatainak pontozására használják.

Szintaxis:

MOVC A, @ A + DPTR // C kódmemóriát jelöl //
MOCX A, @ A + DPTR // X a külső memóriát jelzi //
EX: MOV A, # 00H // 00H az A regiszterben van tárolva //
MOV DPTR, # 0500H // DPTR 0500h cím a memóriában //
MOVC A, @ A + DPTR // elküldi az értéketnak nekaz A regiszter //
MOV P0, A // A küldés dátuma a PO nyilvántartójának //

Utasításkészlet:

Az utasításkészlet a vezérlő vagy processzor felépítése, amely parancsokat ad a vezérlőnek, hogy irányítsa a vezérlőt az adatok feldolgozásához. Az utasításkészlet utasításokból, natív adattípusokból, címzési módokból, megszakítási regiszterekből, kivételes kezelésből és memória architektúrából áll. Az 8051mikrovezérlő követni tudja a CISC utasításait a Harvard architektúrájával. A 8051 programozás esetén a CISC utasítások különféle típusai a következők:

  • Adatátviteli utasításkészlet
  • Szekvenciális utasításkészlet
  • Számtani utasításkészlet
  • Elágazás I.utasításkészlet
  • Hurok használati szett
  • Feltételes utasításkészlet
  • Feltétel nélküli utasításkészlet
  • Logikai utasításkészlet
  • Logikai utasításkészlet

Számtani utasításkészlet:

A számtani utasítások elvégzik az alapvető műveleteket, például:

  • Kiegészítés
  • Szorzás
  • Kivonás
  • Osztály

Kiegészítés:

ORG 0000h
MOV R0, # 03H // mozgassa a 3 értéket az R0 regiszterbe //
MOV A, # 05H // mozgassa az 5 értéket az A akkumulátorba //
Add A, 00H //addAérték R0 értékkel és tárolja az eredménytinA//
VÉGE

Szorzás:

ORG 0000h
MOV R0, # 03H // mozgassa a 3 értéket az R0 regiszterbe //
MOV A, # 05H // mozgassa az 5 értéket az A akkumulátorba //
MUL A, 03H //Megsokszorozvaaz eredmény az A akkumulátorban van tárolva //
VÉGE

Kivonás:

ORG 0000h
MOV R0, # 03H // mozgassa a 3 értéket az R0 regisztrációhoz //
MOV A, # 05H // mozgassa az 5 értéket az A akkumulátorba //
AUBB, 03H // Az eredmény értéke az A akkumulátorban van tárolva //
VÉGE

Osztály:

ORG 0000h
MOV R0, # 03H // mozgassa a 3 értéket az R0 regisztrációhoz //
MOV A, # 15H // mozgassa az 5 értéket az A akkumulátorba //
DIV A, 03H // a végső érték az A akkumulátorban van tárolva //
VÉGE

Feltételes utasítások

A CPU a feltétel alapján hajtja végre az utasításokat az egybites állapot vagy a bájt állapotának ellenőrzésével. A 8051mikrovezérlőkülönféle feltételes utasításokból áll, mint például:

  • JB -> Ugrás alatt
  • JNB -> Ugrás, ha nem alul
  • JC -> Ugrás, ha hordoz
  • JNC -> Ugrás, hanemVisz
  • JZ -> Ugrás, ha nulla
  • JNZ -> Ugrás, hanemNulla
Feltételes utasítások

Feltételes utasítások

1. Szintaxis:

JB P1.0, címke
- - - - - - - -
- - - - - - - -
Címke: - - - - - - - -
- - - - - - - -
VÉGE

2. Szintaxis:

JNB P1.0, címke
- - - - - - - -
- - - - - - - -
Címke: - - - - - - - -
- - - - - - - -
VÉGE

3. Szintaxis:

JC, címke
- - - - - - - -
- - - - - - - -
Címke: - - - - - - - -
- - - - - - - -
VÉGE

4. Szintaxis:

JNC, címke
- - - - - - - -
- - - - - - - -
Címke: - - - - - - - -
- - - - - - - -
VÉGE
5. Szintaxis:

JZ, címke
- - - - - - - -
- - - - - - - -
Címke: - - - - - - - -
- - - - - - - -
VÉGE

6. Szintaxis:

JNZ, címke
- - - - - - - -
- - - - - - - -
Címke: - - - - - - - -
- - - - - - - -
VÉGE

Hívás és ugrás utasítások:

A hívás és ugrás utasításokat használják a program kódreplikációjának elkerülésére. Amikor egy adott kód többször is használt a program különböző helyein, ha megemlítjükkonkrét névnak nekkódot akkorhasználhatnánk ezt a nevet bárhol a programban anélkül, hogy minden alkalommal kódot írnánk be. Ez csökkenti a program összetettségét. A 8051 programozás hívás és ugrás utasításokból áll, mint például LCALL, SJMP.

  • LCALL
  • HÍVÁS
  • SJMP
  • LJMP

1. Szintaxis:

ORG 0000h
- - - - - - - -
- - - - - - - -
HÍVJ, címke
- - - - - - - -
- - - - - - - -
SJMP STOP
Címke: - - - - - - - -
- - - - - - - -
- - - - - - - -
jobb
ÁLLJON MEG:NOP

2. Szintaxis:

ORG 0000h
- - - - - - - -
- - - - - - - -
LCALL, címke
- - - - - - - -
- - - - - - - -
SJMP STOP
Címke: - - - - - - - -
- - - - - - - -
- - - - - - - -
jobb
ÁLLJON MEG:NOP

Hívás és ugrás utasítások

Hívás és ugrás utasítások

Hurok utasítások:

A ciklus utasításokkal a blokkot minden alkalommal megismételhetjük, miközben a növekmény és a csökkentés műveleteket hajtjuk végre. A 8051mikrovezérlőkétféle hurok utasításból áll:

  • CJNE -> összehasonlítás és ugrás, ha nem egyenlő
  • DJNZ -> csökkentés és ugrás, ha nem nulla

1. Szintaxis:

nak,-nekCJNE
MOV A, # 00H
MOV B, # 10H
Címke: INC A
- - - - - -
- - - - - -
CJNE A, címke

2. Szintaxis:

nak,-nekDJNE

MOV R0, # 10H
Címke: - - - - - -
- - - - - -
DJNE R0, kiadó
- - - - - -
- - - - - -
VÉGE

Logikai utasításkészlet:

A 8051 mikrokontroller utasításkészlet biztosítja az AND, OR, XOR, TEST, NOT és a logikai utasításokat a készlethez, és törli a biteket a program szükségessége alapján.

Logikai utasításkészlet

Logikai utasításkészlet

1. Szintaxis:

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

2. Szintaxis:

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

3. Szintaxis:

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

Műszakvezetők

A műszak operátorokat hatékonyan küldik és fogadják az adatokat. A 8051mikrovezérlőnégy műszakvezetőből áll:

  • RR -> Forgatás jobbra
  • RRC -> Forgatás jobbra a hordozáson keresztül
  • RL -> Balra forgatás
  • RLC -> Balra forgatás a hordozáson keresztül

Forgatás jobbra (RR):

Ebben a váltási műveletben az MSB LSB-vé válik, és minden bit bitenként, sorozatosan a jobb oldal felé mozdul el.

Szintaxis:

MOV A, # 25h
RR A

Balra forgatás (RL):

Ebben a váltási műveletben az MSB LSB-vé válik, és az összes bit bitenként, sorozatosan a bal oldal felé tolódik.

Szintaxis:

MOV A, # 25h
RL A

RRC jobbra forgatás a hordozáson keresztül:

Ebben a váltási műveletben az LSB hordozhatóvá válik, és a hordozás MSB -vé válik, és az összes bit elmozdul a jobb oldal felé, apránként.

Szintaxis:

MOV A, # 27h
RRC A

RLC balra forgatás a hordozáson keresztül:

Ebben a váltási műveletben az MSB hordozhatóvá válik, és a hordozás LSB lesz, és az összes bit eltolódik a bal oldal felé bitenként.

Szintaxis:

MOV A, # 27h
RLC A

Alapvető beágyazott C programok:

Azmikrovezérlőa programozás az operációs rendszerek mindegyik típusától függ. Vannak sok operációs rendszer például Linux, Windows, RTOS és így tovább. Az RTOS-nak azonban számos előnye van a beágyazott rendszerek fejlesztésében. Az alábbiakban bemutatunk néhány Assembly szintű programozási példát.

A LED villog a 8051 készülékkelmikrovezérlő:

  • Szám Megjelenítés 7 szegmenses kijelzőn 8051 mikrokontroller használatával
  • Időzítő / számláló számítások és programozás a 8051 használatávalmikrovezérlő
  • Soros kommunikációs számítások és program a 8051 használatávalmikrovezérlő

LED programok 8051 M-melicrocontrller

1. WAP kapcsolja be a PORT1 LED-eket

ORG 0000H
TOGLE: MOV P1, # 01 //mozog00000001 a p1 regisztrációhoz //
CALL DELAY // végrehajtja a késleltetést //
MOV A, P1 // mozogp1 értékaz akkumulátorhoz //
CPL A // A kiegészítés értéke //
MOV P1, A // az 11111110 áthelyezése a port1 regiszterbe //
CALL DELAY // végrehajtja a késleltetést //
SJMP TOGLE
KÉSLELTETÉS: MOV R5, # 10H // R5 regiszter betöltése 10-el //
KÉT: MOV R6, # 200 // R6 terhelési regiszter 200-val //
EGY: MOV R7, # 200 // R7 terhelési regiszter 200-val //
DJNZ R7, $ // csökkenti az R7 értéket nullaig //
DJNZ R6, ONE // dekrementálja az R7-et nullaig //
DJNZ R5, TWO // az R7 csökkentése nullaig //
RET // visszatér a fő programhoz //
VÉGE

Időzítő / számláló számítások és programozás a 8051 M használatávaljégvezérlő:

A késés az egyik fontos tényező az alkalmazásszoftver fejlesztésében. Az időzítők és számlálók a hardver alkatrészeimikrovezérlő, amelyeket számos alkalmazásban használnak a pontos késleltetés biztosítására a számláló impulzusokkal. Ba feladatokat a szoftveres technika valósítja meg.

1. WAP az 500-as késleltetés kiszámításához.

MOV TMOD, # 10H // válassza ki az időzítő módot a regiszterek alapján //
MOV TH1, # 0FEH // a késleltetési idő tárolása a magasabb bitben //
MOV TL1, # 32H // a késleltetési idő tárolása alacsony bitben //
JNB TF1, $ // az időzítő értékét nullára nullázza //
CLR TF1 // törölje az időzítő jelzőjétbit//
CLR TR1 // az időzítő kikapcsolása //

2. WAP a LED-ek váltásáhoza ... val5.mpkésleltetés

ORG 0000H
VISSZATÉRÉS: MOV PO, # 00H
HÍVÁS KÉSLELTETÉS
MOV P0, # 0FFH
HÍVÁS KÉSLELTETÉS
UTASZTÁS VISSZA
KÉSLELTETÉS: MOV R5, # 50H // R5 regiszter betöltése 50-el //
1. KÉSLELTETÉS: MOV R6, # 200 // R6 regiszter betöltése 200-val //
2. KÉSLELTETÉS: MOV R7, # 229 // betölti az R7 regisztert 200-mal //
DJNZ R7, $ // csökkenti az R7 értéket nullaig //
DJNZ R6, DELAY2 // az R6 csökkenése nullaig //
DJNZ R5, KÉSLELTETÉS // csökken az R5, amíg nulla lesz //
RET // visszatér a fő programhoz //
VÉGE

3. WAP a 250 impulzus számlálásához a0 számlálás0 módot használja

Szintaxis:

ORG 0000H
MOV TMOD, # 50H // válassza ki a számlálót //
MOV TH0, # 15 // a számláló impulzusokat magasabb bitekkel mozgatja //
MOV TH1, # 9FH //mozoga számláló impulzusok, alsó bit //
TR0 // BEÁLLÍTÁSA az időzítőn //
JNB $ // nullára csökkenti a számlálási értéket //
CLR TF0 // törölje a számlálót, a zászlótbit//
CLR TR0 // az időzítő leállítása //
VÉGE

Soros kommunikáció programozása a 8051 M használatávaljégvezérlő:

Soros kommunikáció általában az adatok továbbítására és fogadására használják. A 8051mikrovezérlőUART / USART soros kommunikációból áll, és a jeleket továbbítja és fogadjaTxés Rx csapok. Az UART kommunikáció bitről bitre sorosan továbbítja az adatokat. Az UART egy fél-duplex protokoll, amely továbbítja és fogadja az adatokat, de nem egyszerre.

1. WAP a karakterek továbbításához a Hyper Terminalhoz

MOV SCON, # 50H // soros kommunikáció beállítása //
MOV TMOD, # 20H // az időzítő mód kiválasztása //
MOV TH1, # -3 // az átviteli sebesség beállítása //
TR1 // BEÁLLÍTÁSA az időzítőn //
MOV SBUF, # ’S’ // továbbítja az S-t a soros ablakba //
JNB TI, $ // az időzítő csökkentési értéke, amíg nulla lesz //
CLR RI // vételi megszakítás törlése //
CLR TR1 // időzítő törlése //

2. WAP a fogadás karakter továbbítására a Hyper Terminal segítségével

MOV SCON, # 50H // soros kommunikáció beállítása //
MOV TMOD, # 20H // az időzítő mód kiválasztása //
MOV TH1, # -6 // az átviteli sebesség beállítása //
SET TR1 // az időzítőn //
MOV SBUF, # ’S’ // továbbítja az S-t a soros ablakba //
JNB RI, $ // az időzítő csökkentési értéke, amíg nulla lesz //
CLR RI // vételi megszakítás törlése //
MOV P0, SBUF // az SBUF regiszter értékének elküldése a port0 // portra
CLR TR1 // időzítő törlése //

Ez a 8051 programozása a Assembly nyelvén röviden, a példaalapú programokkal foglalkozik. Reméljük, hogy ez a megfelelő információ az összeállítási nyelvről minden bizonnyal hasznos lesz az olvasók számára, és várjuk értékes észrevételeiket az alábbi megjegyzés részben.