Úvod do programovania 8051 v montážnom jazyku

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





Montážny jazyk je programovací jazyk na nízkej úrovni, ktorý sa používa na písanie programového kódu z hľadiska mnemotechniky. Aj keď v súčasnosti existuje veľa jazykov na vysokej úrovni, programovací jazyk montáže sa populárne používa v mnohých aplikáciách. Môže sa použiť na priamu manipuláciu s hardvérom. Používa sa tiež na napísanie súboru 8051 programovací kód efektívne s menším počtom hodín tak, že spotrebuje menej pamäte v porovnaní s ostatnými jazykmi na vysokej úrovni.

8051 Programovanie v montážnom jazyku

8051 programovanie



8051 Programovanie v montážnom jazyku

Montážny jazyk je plne programovateľný jazyk súvisiaci s hardvérom. Zabudovaní dizajnéri musia mať pred napísaním programu dostatočné znalosti o hardvéri konkrétneho procesora alebo radičov. Montážny jazyk je vyvíjaný mnemotechnikou, preto mu používatelia nemôžu ľahko modifikovať program.


8051 Programovanie v montážnom jazyku

8051 Programovanie v montážnom jazyku



Montážny programovací jazyk je vyvíjaný rôznymi prekladačmi a bowlingová dráha je najvhodnejšie pre mikrokontrolérprogramovanie rozvoja. Mmikrokontroléryalebo procesory rozumejú iba binárnemu jazyku vo forme „0s alebo 1s“. Assembler prevádza montážny jazyk na binárny jazyk a potom ho uloží domikrokontrolérpamäť na vykonanie konkrétnej úlohy.

8051 Mikrokontrolér Architecuture

8051mikrokontrolérje Harvardská architektúra založená na CISC , a má periférie ako 32 I / O, časovače / čítače, sériovú komunikáciu a pamäte. Themikrokontrolérvyžaduje program na vykonávanie operácií, ktoré si vyžadujú pamäť na uloženie, a na čítanie funkcií. 8051mikrokontrolérpozostáva z pamätí RAM a ROM na ukladanie pokynov.

8051 mikrokontrolér Arctitecuture

8051 Mikrokontrolér Architecuture

Register je hlavnou súčasťou spracovatelia amikrokontroléry ktorá je obsiahnutá v pamäti a poskytuje rýchlejší spôsob zhromažďovania a ukladania údajov. Programovanie montážneho jazyka 8051 je založené na pamäťových registroch. Ak chceme manipulovať s údajmi do procesora alebo radiča vykonaním odčítania, sčítania atď., Nemôžeme to urobiť priamo v pamäti, ale na ich spracovanie a uloženie je potrebné registre.Mikrokontroléryobsahujú niekoľko typov registrov, ktoré je možné klasifikovať podľa ich pokynov alebo obsahu, ktorý v nich funguje.

Programy mikrokontroléra 8051 v montážnom jazyku

Montážny jazyk je tvorený prvkami, ktoré sa všetky používajú na zápis programupostupným spôsobom. Pri písaní programovania v montážnom jazyku sa držte uvedených pravidiel.


Pravidlá jazyka zhromaždenia

  • Montážny kód musí byť napísaný veľkými písmenami
  • Za štítkami musí nasledovať dvojbodka (štítok :)
  • Všetky symboly a štítky musia začínať písmenom
  • Všetky komentáre sú písané malými písmenami
  • Posledným riadkom programu musí byť smernica END

Mnemotechnické pomôcky montážneho jazyka sú vo forme operačného kódu, ako sú MOV, ADD, JMP atď., Ktoré sa používajú na vykonávanie operácií.

Operačný kód: Operačný kód je jediná inštrukcia, ktorú môže vykonať CPU. Tu je operačný kód inštrukciou MOV.

Operandy: Operandy sú jeden údaj, ktorý je možné prevádzkovať pomocou operačného kódu. Napríklad operáciu násobenia vykonávajú operandy, ktoré sa vynásobia operandom.

Syntax: MUL a,b

Prvky programovania montážneho jazyka:

  • Zhromaždite pokyny
  • Inštruktážna sada
  • Režimy adresovania

Pokyny na zostavenie:

Pokyny na zostavenie udávajú pokyny pre CPU. 8051mikrokontrolérSkladá sa z rôznych druhov montážnych smerníc, ktoré udávajú smer riadiacej jednotke. Najužitočnejšie smernice sú programovanie 8051, napríklad:

  • ORG
  • DB
  • EQU
  • KONIEC

ORG(pôvod): Táto smernica označuje začiatok programu. Používa sa na nastavenie adresy registra počas montáže. Napríklad ORG 0000h oznámi kompilátoru všetok nasledujúci kód začínajúci na adrese 0000h.

Syntax: ORG 0000h

DB(definovať bajt): Definovaný bajt sa používa na povolenie reťazca bajtov. Napríklad vytlačte „EDGEFX“, pričom každý znak je prevzatý adresou a nakoniec vytlačí „reťazec“ databázou DB priamo s dvojitými úvodzovkami.

Syntax:

ORG 0000h

MOV a, # 00 h
————-
————-
DB „EDGEFX“

EQU (ekvivalent): Ekvivalentná smernica sa používa na vyrovnanie adresy premennej.

Syntax:

reg ekv,09h
—————–
—————–
MOVreg,# 2h

KONIEC: Smernica END sa používa na označenie konca programu.

Syntax:

reg ekv,09h

—————–
—————–
MOVreg,# 2h
KONIEC

Režimy adresovania:

Spôsob prístupu k údajom sa nazýva režim adresovania. CPU môže pristupovať k údajom rôznymi spôsobmi pomocou režimov adresovania. 8051mikrokontrolérpozostáva z piatich režimov adresovania, ako napríklad:

  • Režim okamžitého adresovania
  • Registrovať režim adresovania
  • Režim priameho adresovania
  • Režim nepriameho adresovania
  • Režim adresovania základného indexu

Režim okamžitého adresovania:

V tomto režime adresovania musí byť zdrojom hodnota, za ktorou môže byť znak „#“ a cieľ Registre SFR, registre na všeobecné účely a adresa. Slúži na okamžité uloženie hodnoty do pamäťových registrov.

Syntax:

MOV A, # 20h // A jeanregister akumulátora, 20 je uložených v A //
MOV R0,# 15 // R0 je register na všeobecné účely 15 je uložený v registri R0 //
MOV P0, # 07h // P0 je register SFR, 07 je uložený v P0 //
MOV 20 hodín,# 05h // 20h je adresa registra 05 uloženého v 20h //

Bývalý:

MOV R0, # 1
MOV R0, # 20 // R0<—R0[15] +20, konečná hodnota je uložená v R0 //

Režim registrácie adresy:

V tomto režime adresovania musí byť zdrojom a cieľom register, nie však registre na všeobecné účely. Dáta sa teda v rámci súboru nepresúvajú univerzálne bankové registre .

Syntax:

MOV A, B // A je register SFR, B je register na všeobecné účely //
MOV R0, R1 // Neplatná inštrukcia, GPR na GPR nie je možné //

BÝVALÝ:

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

Režim priameho adresovania

V tomto režime adresovania musí byť zdroj alebo cieľ (alebo zdroj aj cieľ) adresa, ale nie hodnota.

Syntax:

MOV A,20h // 20h je adresa A je register //
MOV 00h, 07h // oba sú adresované z registrov GPS //

Bývalý:

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

Režim nepriameho adresovania:

V tomto režime adresovania musí byť zdroj alebo cieľ (alebo cieľ alebo zdroj)donepriama adresa, ale nie hodnota. Tento režim adresovania podporuje koncept ukazovateľa. Ukazovateľ je premenná, ktorá sa používa na uloženie adresy druhej premennej. Tento koncept ukazovateľa sa používa iba pre registre R0 a R1.

Syntax:

Hodnota MOVR0, # 01h // 01 je uložená v registri R0, adresa R0 je 08h //
MOV R1, # 08h // R1 je ukazovateľová premenná, ktoráobchodochadresa (08h) z R0 //
MOV 20 hodín,@ R1 // 01 hodnota je uložená na 20-hodinovej adrese registra GP //

Režim nepriameho adresovania

Režim nepriameho adresovania

Režim adresovania základného indexu:

Tento režim adresovania sa používa na načítanie údajov z externá pamäť alebo pamäť ROM . Všetky režimy adresovania nemôžu načítať údaje z pamäte kódu. Kód musí byť načítaný cez register DPTR. DPTR sa používa na zameranie údajov v kóde alebo externej pamäti.

Syntax:

MOVC A, @ A + DPTR // C označuje pamäť kódu //
MOCX A, @ A + DPTR // X označuje externú pamäť //
EX: MOV A, # 00H // 00H je uložený v registri A //
MOV DPTR, # 0500H // DPTR body adresa 0500h v pamäti //
MOVC A, @ A + DPTR // odoslať hodnotudoregister A //
MOV P0, A // dátum odoslania A registrátorovi PO //

Inštruktážna sada:

Sada inštrukcií je štruktúra riadiacej jednotky alebo procesora, ktorá poskytuje riadiacej jednotke príkazy na vedenie riadiacej jednotky pri spracovaní údajov. Sada inštrukcií pozostáva z inštrukcií, natívnych dátových typov, režimov adresovania, registrov prerušenia, výnimočnej manipulácie a architektúry pamäte. The 8051mikrokontrolér môže postupovať podľa pokynov CISC s architektúrou Harvard. V prípade programovania 8051 rôzne typy inštrukcií CISC zahŕňajú:

  • Sada pokynov na prenos údajov
  • Sada postupných pokynov
  • Sada aritmetických pokynov
  • Vetvenie Ipokynnastaviť
  • Smyčka Instrcution Set
  • Sada podmienených pokynov
  • Sada nepodmienených pokynov
  • Sada logických pokynov
  • Booleovská inštrukčná sada

Sada aritmetických pokynov:

Aritmetické pokyny vykonávajú základné operácie, ako napríklad:

  • Dodatok
  • Násobenie
  • Odčítanie
  • Divízia

Doplnenie:

ORG 0000h
MOV R0, # 03H // presunie hodnotu 3 do registra R0 //
MOV A, # 05H // presunie hodnotu 5 do akumulátora A //
Pridať A, 00H //pridajhodnota s hodnotou R0 a výsledok sa uložív//
KONIEC

Násobenie:

ORG 0000h
MOV R0, # 03H // presunie hodnotu 3 do registra R0 //
MOV A, # 05H // presunie hodnotu 5 do akumulátora A //
MUL A, 03H //Znásobenévýsledok je uložený v akumulátore A //
KONIEC

Odčítanie:

ORG 0000h
MOV R0, # 03H // posuňte hodnotu 3 do registra R0 //
MOV A, # 05H // presunie hodnotu 5 do akumulátora A //
SUBB A, 03H // Výsledná hodnota je uložená v akumulátore A //
KONIEC

Divízia:

ORG 0000h
MOV R0, # 03H // posuňte hodnotu 3 do registra R0 //
MOV A, # 15H // presunie hodnotu 5 do akumulátora A //
DIV A, 03H // konečná hodnota je uložená v akumulátore A //
KONIEC

Podmienené pokyny

CPU vykonáva pokyny na základe stavu kontrolou stavu jednobitového alebo bajtového stavu. 8051mikrokontrolérpozostáva z rôznych podmienečných pokynov, ako napríklad:

  • JB -> Skočte nižšie
  • JNB -> Skočte, ak nie nižšie
  • JC -> Skok, ak má prenos
  • JNC -> Skočiť, aknieNiesť
  • JZ -> Skok, ak je nula
  • JNZ -> Skočiť, aknieNula
Podmienené pokyny

Podmienené pokyny

1. Syntax:

JB P1.0, štítok
- - - - - - - -
- - - - - - - -
Štítok: - - - - - - - -
- - - - - - - -
KONIEC

2. Syntax:

JNB P1.0, štítok
- - - - - - - -
- - - - - - - -
Štítok: - - - - - - - -
- - - - - - - -
KONIEC

3. Syntax:

JC, štítok
- - - - - - - -
- - - - - - - -
Štítok: - - - - - - - -
- - - - - - - -
KONIEC

4. Syntax:

JNC, label
- - - - - - - -
- - - - - - - -
Štítok: - - - - - - - -
- - - - - - - -
KONIEC
5. Syntax:

JZ, štítok
- - - - - - - -
- - - - - - - -
Štítok: - - - - - - - -
- - - - - - - -
KONIEC

6. Syntax:

JNZ, label
- - - - - - - -
- - - - - - - -
Štítok: - - - - - - - -
- - - - - - - -
KONIEC

Pokyny na volanie a skok:

Pokyny na volanie a skok sa používajú na zabránenie replikácii kódu programu. Keď sa nejaký konkrétny kód použil viackrát na rôznych miestach v programe, ak už spomeniemekonkrétny názovdokód potomtento názov sme mohli použiť kdekoľvek v programe bez toho, aby sme zakaždým museli zadávať kód. To znižuje zložitosť programu. Programovanie 8051 pozostáva z volacích a preskakovacích pokynov, ako sú LCALL, SJMP.

  • LCALL
  • HOVOR
  • SJMP
  • LJMP

1. Syntax:

ORG 0000h
- - - - - - - -
- - - - - - - -
ACALL, štítok
- - - - - - - -
- - - - - - - -
SJMP STOP
Štítok: - - - - - - - -
- - - - - - - -
- - - - - - - -
správny
STOP:NOP

2. Syntax:

ORG 0000h
- - - - - - - -
- - - - - - - -
LCALL, label
- - - - - - - -
- - - - - - - -
SJMP STOP
Štítok: - - - - - - - -
- - - - - - - -
- - - - - - - -
správny
STOP:NOP

Pokyny na volanie a skok

Pokyny na volanie a skok

Pokyny slučky:

Pokyny slučky sa používajú na opakovanie bloku zakaždým, keď sa vykonávajú operácie prírastku a zníženia. 8051mikrokontrolérpozostávajú z dvoch typov inštrukcií slučky:

  • CJNE -> porovnaj a skoč, ak nie je rovnaké
  • DJNZ -> zníženie a skok, ak nie nula

1. Syntax:

zCJNE
MOV A, # 00H
MOV B, # 10H
Štítok: INC A
- - - - - -
- - - - - -
CJNE A, štítok

2. Syntax:

zDJNE

MOV R0, # 10H
Štítok: - - - - - -
- - - - - -
DJNE R0, štítok
- - - - - -
- - - - - -
KONIEC

Sada logických pokynov:

Sada inštrukcií mikrokontroléra 8051 poskytuje logické pokyny AND, OR, XOR, TEST, NOT a Boolean pre sadu a vymaže bity na základe potreby v programe.

Sada logických pokynov

Sada logických pokynov

1. Syntax:

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

2. Syntax:

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

3. Syntax:

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

Prevádzkovatelia radenia

Na efektívne a efektívne odosielanie a príjem údajov sa používajú operátory na zmeny. 8051mikrokontrolérpozostávajú zo štyroch zmenných operátorov:

  • RR -> Otočiť doprava
  • RRC -> Otočiť doprava cez prenášanie
  • RL -> Otočiť doľava
  • RLC -> Otočiť doľava cez nosenie

Otočiť doprava (RR):

V tejto operácii radenia sa MSB stáva LSB a všetky bity sa posúvajú postupne po pravej strane po bitoch.

Syntax:

MOV A, # 25 h
RR A

Otočiť doľava (RL):

V tejto operácii radenia sa MSB stáva LSB a všetky bity sa posúvajú smerom k ľavej strane sériovo.

Syntax:

MOV A, # 25 h
RL A

RRC sa otáča doprava pri prenášaní:

V tejto operácii radenia sa LSB pohybuje, aby niesol a z carry sa stane MSB, a všetky bity sa posúvajú smerom k pravej strane po bitoch.

Syntax:

MOV A, # 27 h
RRC A

RLC rotácia doľava cez nosenie:

V tejto operácii radenia sa MSB pohybuje na prenášanie a prenášanie sa stáva LSB a všetky bity sa posúvajú smerom k ľavej strane v bitovej polohe.

Syntax:

MOV A, # 27 h
RLC A

Základné vstavané programy C:

Themikrokontrolérprogramovanie sa líši pre každý typ operačného systému. Existujú veľa operačných systémov ako Linux, Windows, RTOS a pod. RTOS má však pre vývoj zabudovaného systému niekoľko výhod. Niektoré príklady programovania na úrovni zhromaždenia sú uvedené nižšie.

LED bliká pri použití s ​​8051mikrokontrolér:

  • Zobrazenie čísla na 7-segmentovom displeji pomocou mikrokontroléra 8051
  • Výpočty časovača / počítadla a programovanie pomocou 8051mikrokontrolér
  • Výpočty sériovej komunikácie a program pomocou 8051mikrokontrolér

LED programy s 8051 Mmikrokontrolér

1. WAP na prepínanie LED diód PORT1

ORG 0000H
TOGLE: MOV P1, # 01 //pohnúť sa00000001 do registra p1 //
CALL DELAY // vykonať oneskorenie //
MOV A, P1 // presunhodnota p1do akumulátora //
CPL A // doplniť hodnotu A //
MOV P1, A // presun 11111110 do registra port1 //
CALL DELAY // vykonať oneskorenie //
SJMP TOGLE
ZPOŽDENIE: MOV R5, # 10H // načítanie registra R5 s 10 //
DVA: MOV R6, # 200 // načítanie registra R6 s 200 //
JEDEN: MOV R7, # 200 // načítanie registra R7 s 200 //
DJNZ R7, $ // pokles R7, kým nebude nula //
DJNZ R6, JEDEN // pokles R7, kým nebude nula //
DJNZ R5, DVA // pokles R7, kým nebude nula //
RET // vrátiť sa k hlavnému programu //
KONIEC

Výpočty časovača / počítadla a program s využitím 8051 M.mikrokontrolér:

Oneskorenie je jedným z dôležitých faktorov pri vývoji aplikačného softvéru. The časovače a počítadlá sú hardvérové ​​komponentymikrokontrolér, ktoré sa používajú v mnohých aplikáciách na zabezpečenie presného časového oneskorenia s počtom impulzov. Búlohy sú implementované softvérovou technikou.

1. WAP na výpočet časového oneskorenia 500us.

MOV TMOD, # 10H // výber režimu časovača podľa registrov //
MOV TH1, # 0FEH // uloží čas oneskorenia do vyššieho bitu //
MOV TL1, # 32H // ukladá čas oneskorenia do nízkych bitov //
JNB TF1, $ // zníži hodnotu časovača až na nulu //
CLR TF1 // vymaže príznak časovačatrocha//
CLR TR1 // VYPNUTÝ časovač //

2. WAP na prepínanie LED dióds tým5sekčasové oneskorenie

ORG 0000H
NÁVRAT: MOV PO, # 00H
ACALL DELAY
MOV P0, # 0FFH
ACALL DELAY
NÁVRAT SJUMPU
ZPOŽDENIE: MOV R5, # 50H // načítanie registra R5 s 50 //
DELAY1: MOV R6, # 200 // načítanie registra R6 s 200 //
DELAY2: MOV R7, # 229 // načítanie registra R7 s 200 //
DJNZ R7, $ // pokles R7, kým nebude nula //
DJNZ R6, DELAY2 // pokles R6, kým nebude nula //
DJNZ R5, DELAY1 // pokles R5 až na nulu //
RET // vrátiť sa k hlavnému programu //
KONIEC

3. WAP na počítanie 250 impulzov pomocou mode0 count0

Syntax:

ORG 0000H
MOV TMOD, # 50H // vyberte počítadlo //
MOV TH0, # 15 // posúva počítacie impulzy o vyšší bit //
MOV TH1, # 9FH //pohnúť sapočítacie impulzy, spodný bit //
NASTAVIŤ TR0 // ZAPNUTÝ časovač //
JNB $ // zníži hodnotu počítania na nulu //
CLR TF0 // vymaže počítadlo, príznaktrocha//
CLR TR0 // zastavenie časovača //
KONIEC

Programovanie sériovej komunikácie pomocou 8051 M.mikrokontrolér:

Sériová komunikácia sa bežne používa na prenos a príjem dát. 8051mikrokontrolérpozostávajú zo sériovej komunikácie UART / USART a signály sú vysielané a prijímané prostredníctvomTxa Rx kolíky. Komunikácia UART prenáša dáta po bitoch sériovo. UART je protokol s polovičným duplexom, ktorý prenáša a prijíma údaje, ale nie súčasne.

1. WAP na prenos znakov do Hyper Terminalu

MOV SCON, # 50H // nastavenie sériovej komunikácie //
MOV TMOD, # 20H // výber režimu časovača //
MOV TH1, # -3 // nastavenie prenosovej rýchlosti //
NASTAVIŤ TR1 // ZAPNUTÝ časovač //
MOV SBUF, # ‘S’ // prenos S do sériového okna //
JNB TI, $ // zníži hodnotu časovača až na nulu //
CLR RI // vymazať prerušenie príjmu //
CLR TR1 // časovač vymazania //

2. WAP na prenos prijatia znaku Hyper Terminalom

MOV SCON, # 50H // nastavenie sériovej komunikácie //
MOV TMOD, # 20H // výber režimu časovača //
MOV TH1, # -6 // nastavenie prenosovej rýchlosti //
NASTAVTE TR1 // na časovači //
MOV SBUF, # ‘S’ // prenos S do sériového okna //
JNB RI, $ // zníži hodnotu časovača, kým nebude nula //
CLR RI // vymazať prerušenie príjmu //
MOV P0, SBUF // poslať hodnotu registra SBUF na port0 //
CLR TR1 // časovač vymazania //

Toto je všetko o programovaní 8051 v jazyku Assembly v skratke s príkladmi založenými programami. Dúfame, že tieto adekvátne informácie o jazyku zhromaždenia budú čitateľom určite užitočné a tešíme sa na ich cenné komentáre v sekcii komentárov nižšie.