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
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
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 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
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
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
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
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.