Montážní jazyk je nízkoúrovňový programovací jazyk používaný k psaní programového kódu z hlediska mnemotechniky. I když v současné době existuje mnoho jazyků na vysoké úrovni, v mnoha aplikacích se populárně používá programovací jazyk assembleru, který lze použít k přímé manipulaci s hardwarem. Používá se také k psaní souboru 8051 programovací kód efektivně s menším počtem hodinových cyklů tím, že spotřebuje méně paměti ve srovnání s ostatními jazyky na vysoké úrovni.
8051 Programování
8051 Programování v montážním jazyce
Montážní jazyk je plně programovací jazyk související s hardwarem. Integrovaní návrháři musí mít před napsáním programu dostatečné znalosti o hardwaru konkrétního procesoru nebo řadičů. Jazyk sestavení je vyvíjen mnemotechnickými pomůckami, takže uživatelé mu nemohou snadno rozumět při úpravách programu.
8051 Programování v montážním jazyce
Sestavovací programovací jazyk je vyvíjen různými překladači a „bowling' je nejvhodnější pro mikrokontrolérprogramování rozvoj. Mmikrokontrolérynebo procesory mohou rozumět pouze binárnímu jazyku ve formě „0s nebo 1s“. Assembler převede montážní jazyk na binární jazyk a poté jej uloží domikrokontrolérpaměť k provedení konkrétního úkolu.
8051 Mikrokontrolér Architecuture
8051mikrokontrolérje Harvardská architektura založená na CISC a má periferní zařízení jako 32 I / O, časovače / čítače, sériovou komunikaci a paměti. Themikrokontrolérvyžaduje program pro provádění operací, které vyžadují paměť pro uložení a pro čtení funkcí. 8051mikrokontrolérskládá se z paměti RAM a ROM pro uložení pokynů.
8051 Mikrokontrolér Architecuture
Registr je hlavní součástí zpracovatelé amikrokontroléry který je obsažen v paměti, která poskytuje rychlejší způsob sběru a ukládání dat. Programování montážního jazyka 8051 je založeno na paměťových registrech. Pokud chceme manipulovat s daty do procesoru nebo řadiče odečtením, sčítáním atd., Nemůžeme to udělat přímo v paměti, ale ke zpracování a uložení dat potřebuje registry.Mikrokontroléryobsahují několik typů registrů, které lze klasifikovat podle jejich pokynů nebo obsahu, který v nich funguje.
Programy mikrokontroléru 8051 v montážním jazyce
Sestavovací jazyk je tvořen prvky, které se všechny používají k zápisu programupostupným způsobem. Při psaní programování v montážním jazyce postupujte podle daných pravidel.
Pravidla jazyka shromáždění
- Kód sestavy musí být napsán velkými písmeny
- Za štítky musí následovat dvojtečka (štítek :)
- Všechny symboly a štítky musí začínat písmenem
- Všechny komentáře jsou psány malými písmeny
- Posledním řádkem programu musí být směrnice END
Mnemotechnické pomůcky montážního jazyka jsou ve formě op-kódu, jako je MOV, ADD, JMP atd., Které se používají k provádění operací.
Operační kód: Operační kód je jediná instrukce, kterou může vykonat CPU. Zde je operační kód instrukcí MOV.
Operandy: Operandy jsou jeden údaj, který lze obsluhovat operačním kódem. Příklad operace násobení se provádí operandy, které se vynásobí operandem.
Syntaxe: MUL a,b
Prvky programování montážního jazyka:
- Shromážděte pokyny
- Sada instrukcí
- Režimy adresování
Pokyny pro sestavení:
Směrnice pro sestavení udávají pokyny pro CPU. 8051mikrokontrolérsestává z různých druhů montážních směrnic, které dávají směr řídicí jednotce. Nejužitečnější směrnice jsou programování 8051, například:
- ORG
- DB
- EQU
- KONEC
ORG(původ): Tato směrnice označuje začátek programu. Slouží k nastavení adresy registru během sestavování. Například ORG 0000h řekne kompilátoru veškerý následující kód počínaje adresou 0000h.
Syntax: ORG 0000h
DB(definovat byte): Definovaný bajt se používá k povolení řetězce bajtů. Například vytiskněte „EDGEFX“, přičemž každý znak je převzat z adresy a nakonec vytiskne „řetězec“ DB přímo s uvozovkami.
Syntax:
ORG 0000h
MOV, # 00h
————-
————-
DB „EDGEFX“
EQU (ekvivalent): Ekvivalentní směrnice se používá k vyrovnání adresy proměnné.
Syntax:
reg ekv,09h
—————–
—————–
MOVreg,# 2h
KONEC: Směrnice END se používá k označení konce programu.
Syntax:
reg ekv,09h
—————–
—————–
MOVreg,# 2h
KONEC
Režimy adresování:
Způsob přístupu k datům se nazývá režim adresování. CPU může přistupovat k datům různými způsoby pomocí režimů adresování. 8051mikrokontrolérskládá se z pěti režimů adresování, jako jsou:
- Režim okamžitého adresování
- Zaregistrujte režim adresování
- Režim přímého adresování
- Režim nepřímého adresování
- Režim adresování základního indexu
Režim okamžitého adresování:
V tomto režimu adresování musí být zdrojem hodnota, za kterou může následovat znak „#“ a cíl musí být Registry SFR, registry pro všeobecné účely a adresa. Slouží k okamžitému uložení hodnoty do paměťových registrů.
Syntax:
MOV A, # 20h // A jeanregistr akumulátoru, 20 je uloženo v A //
MOV R0,# 15 // R0 je registr pro obecné účely 15 je uložen v registru R0 //
MOV P0, # 07h // P0 je registr SFR 07 je uložen v P0 //
MOV 20h,# 05h // 20h je adresa registru 05 uloženého ve 20h //
Bývalý:
“co je nic? ”
MOV R0, # 1
MOV R0, # 20 // R0<—R0[15] +20, konečná hodnota je uložena v R0 //
Registrovat režim adresování:
V tomto režimu adresování musí být zdrojem a cílem registr, ale nikoli registry pro obecné účely. Data se tedy v rámci bankovní registry pro všeobecné účely .
Syntax:
MOV A, B // A je registr SFR, B je registr pro obecné účely //
MOV R0, R1 // Neplatná instrukce, GPR na GPR není možné //
BÝVALÝ:
MOV R0, # 02h
MOV A, # 30h
PŘIDAT R0, A // R0<—R0+A, the final value is stored in the R0 register//
Režim přímého adresování
V tomto režimu adresování musí být zdroj nebo cíl (nebo zdroj i cíl) adresa, ale ne hodnota.
Syntax:
MOV A,20h // 20h je adresa A je registr //
MOV 00h, 07h // oba jsou adresovány z registrů GPS //
Bývalý:
MOV 07h,# 01h
MOV A, # 08h
PŘIDAT,07h // A<—A+07h the final value is stored in A//
Režim nepřímého adresování:
V tomto režimu adresování musí být zdroj nebo cíl (nebo cíl nebo zdroj)nanepřímá adresa, ale ne hodnota. Tento režim adresování podporuje koncept ukazatele. Ukazatel je proměnná, která se používá k uložení adresy druhé proměnné. Tento koncept ukazatele se používá pouze pro registry R0 a R1.
Syntax:
Hodnota MOVR0, # 01h // 01 je uložena v registru R0, adresa R0 je 08h //
MOV R1, # 08h // R1 je proměnná ukazateleobchodyadresa (08h) z R0 //
MOV 20h,@ R1 // 01 hodnota je uložena na 20h adrese registru GP //
Režim nepřímého adresování
Režim adresování základního indexu:
Tento režim adresování se používá ke čtení dat z externí paměť nebo paměť ROM . Všechny režimy adresování nemohou číst data z paměti kódu. Kód musí číst registrem DPTR. DPTR se používá k nasměrování dat v kódu nebo externí 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 registru A //
MOV DPTR, # 0500H // DPTR body adresa 0500h v paměti //
MOVC A, @ A + DPTR // odeslat hodnotunaregistr A //
MOV P0, A // datum odeslání A registrátorovi PO //
Sada instrukcí:
Sada instrukcí je struktura řadiče nebo procesoru, který poskytuje řadiči příkazy, které mají řadiči pomoci při zpracování dat. Sada instrukcí se skládá z instrukcí, nativních datových typů, režimů adresování, registrů přerušení, výjimečné manipulace a architektury paměti. The 8051mikrokontrolér může postupovat podle pokynů CISC s architekturou Harvard. V případě programování 8051 zahrnují různé typy instrukcí CISC:
- Sada pokynů pro přenos dat
- Sekvenční instrukční sada
- Sada aritmetických instrukcí
- Větvení Iinstrukcesoubor
- Smyčka Instrcution Set
- Sada podmíněných pokynů
- Sada bezpodmínečných pokynů
- Sada logických instrukcí
- Booleovská instrukční sada
Sada aritmetických instrukcí:
Aritmetické instrukce provádějí základní operace, jako například:
- Přidání
- Násobení
- Odčítání
- Divize
Přidání:
ORG 0000h
MOV R0, # 03H // přesunout hodnotu 3 do registru R0 //
MOV A, # 05H // přesunout hodnotu 5 do akumulátoru A //
Přidat A, 00H //přidathodnotu s hodnotou R0 a uloží výsledekv//
KONEC
Násobení:
ORG 0000h
MOV R0, # 03H // přesunout hodnotu 3 do registru R0 //
MOV A, # 05H // přesunout hodnotu 5 do akumulátoru A //
MUL A, 03H //Znásobenovýsledek je uložen v akumulátoru A //
KONEC
Odčítání:
ORG 0000h
MOV R0, # 03H // přesuňte hodnotu 3 k registraci R0 //
MOV A, # 05H // přesunout hodnotu 5 do akumulátoru A //
SUBB A, 03H // Výsledná hodnota je uložena v akumulátoru A //
KONEC
Divize:
ORG 0000h
MOV R0, # 03H // přesuňte hodnotu 3 k registraci R0 //
MOV A, # 15H // přesunout hodnotu 5 do akumulátoru A //
DIV A, 03H // konečná hodnota je uložena v akumulátoru A //
KONEC
Podmíněné pokyny
CPU provádí instrukce na základě podmínky kontrolou stavu jednoho bitu nebo stavu bajtu. 8051mikrokontrolérsestává z různých podmíněných pokynů, jako například:
- JB -> Skočte níže
- JNB -> Skočit, pokud ne níže
- JC -> Skok, pokud Carry
- JNC -> Přejít, pokudneNést
- JZ -> Přejít, pokud je nula
- JNZ -> Přejít, pokudneNula
Podmíněné pokyny
1. Syntaxe:
JB P1.0, štítek
- - - - - - -
- - - - - - -
Štítek: - - - - - - - -
- - - - - - -
KONEC
2. Syntaxe:
JNB P1.0, štítek
- - - - - - -
- - - - - - -
Štítek: - - - - - - - -
- - - - - - -
KONEC
3. Syntaxe:
JC, štítek
- - - - - - -
- - - - - - -
Štítek: - - - - - - - -
- - - - - - -
KONEC
4. Syntaxe:
JNC, štítek
- - - - - - -
- - - - - - -
Štítek: - - - - - - - -
- - - - - - -
KONEC
5. Syntaxe:
JZ, štítek
- - - - - - -
- - - - - - -
Štítek: - - - - - - - -
- - - - - - -
KONEC
6. Syntaxe:
JNZ, štítek
- - - - - - -
- - - - - - -
Štítek: - - - - - - - -
- - - - - - -
KONEC
Pokyny pro volání a skok:
Pokyny pro volání a skok se používají k zabránění replikace kódu programu. Když se nějaký konkrétní kód použil vícekrát na různých místech v programu, pokud to zmínímekonkrétní názevnapoté kódtento název bychom mohli použít kdekoli v programu, aniž bychom pokaždé zadávali kód. To snižuje složitost programu. Programování 8051 se skládá z pokynů pro volání a skok, jako jsou LCALL, SJMP.
- LCALL
- HOVOR
- SJMP
- LJMP
1. Syntaxe:
ORG 0000h
- - - - - - -
- - - - - - -
ACALL, štítek
- - - - - - -
- - - - - - -
SJMP STOP
Štítek: - - - - - - - -
- - - - - - -
- - - - - - -
že jo
STOP:NOP
2. Syntaxe:
ORG 0000h
- - - - - - -
- - - - - - -
LCALL, štítek
- - - - - - -
- - - - - - -
SJMP STOP
Štítek: - - - - - - - -
- - - - - - -
- - - - - - -
že jo
STOP:NOP
Pokyny pro volání a skok
Pokyny smyčky:
Pokyny smyčky se používají k opakování bloku pokaždé, když se provádí operace přírůstku a snížení. 8051mikrokontrolérskládat se ze dvou typů instrukcí smyčky:
- CJNE -> porovnat a skočit, pokud není stejné
- DJNZ -> snížení a skok, pokud ne nula
1. Syntaxe:
zCJNE
MOV A, # 00H
MOV B, # 10H
Označení: INC A
- - - - - -
- - - - - -
CJNE A, štítek
2. Syntaxe:
zDJNE
MOV R0, # 10H
Označení: - - - - - -
- - - - - -
DJNE R0, štítek
- - - - - -
- - - - - -
KONEC
Sada logických instrukcí:
Sada instrukcí mikrokontroléru 8051 poskytuje logické instrukce AND, OR, XOR, TEST, NOT a Boolean pro sadu a vymaže bity na základě potřeby v programu.
Sada logických instrukcí
1. Syntaxe:
MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
ORL A, R0 // 00100000/00000101 = 00000000 //
2. Syntaxe:
MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
ANL A, R0
3. Syntaxe:
MOV A, # 20H / 00100000 /
MOV R0, # 03H / 00000101 /
XRL A, R0
Řazení operátorů
Operátoři směny se používají k efektivnímu odesílání a přijímání dat. 8051mikrokontrolérskládat se ze čtyř směnných operátorů:
- RR -> Otočit doprava
- RRC -> Otočit doprava skrz nošení
- RL -> Otočit doleva
- RLC -> Otočit doleva přes přenášení
Otočit doprava (RR):
V této operaci řazení se MSB stane LSB a všechny bity se posune po pravé straně bit-by-bit, sériově.
Syntax:
MOV A, # 25h
RR A
Otočit doleva (RL):
V této operaci řazení se MSB stane LSB a všechny bity se posune směrem k levé straně bit-by-bit, sériově.
Syntax:
MOV A, # 25h
RL A
RRC otáčení doprava skrz Carry:
V této operaci řazení se LSB přesune do carry a z carry se stane MSB a všechny bity se posunou směrem k pravé straně bit po bitové pozici.
Syntax:
MOV A, # 27h
RRC A
RLC Rotate Left through Carry:
V této operaci řazení se MSB přesune do carry a z carry se stane LSB a všechny bity se posunou směrem k levé straně v bit-by-bit pozici.
Syntax:
MOV A, # 27h
RLC A
Základní vestavěné programy C:
Themikrokontrolérprogramování se liší pro každý typ operačního systému. Existují mnoho operačních systémů jako Linux, Windows, RTOS a tak dále. RTOS má však pro vývoj vestavěného systému několik výhod. Některé příklady programování na úrovni shromáždění jsou uvedeny níže.
LED bliká při použití s 8051mikrokontrolér:
- Zobrazení čísla na 7segmentovém displeji pomocí mikrokontroléru 8051
- Výpočty časovače / čítače a programování pomocí 8051mikrokontrolér
- Výpočty sériové komunikace a program využívající 8051mikrokontrolér
LED programy s 8051 Mmikrokontrolér
1. WAP přepíná LED diody PORT1
ORG 0000H
TOGLE: MOV P1, # 01 //přestěhovat se00000001 do registru p1 //
CALL DELAY // provést zpoždění //
MOV A, P1 // pohybhodnota p1do akumulátoru //
CPL A // doplnit hodnotu //
MOV P1, A // přesun 11111110 do registru port1 //
CALL DELAY // provést zpoždění //
SJMP TOGLE
ZPOŽDĚNÍ: MOV R5, # 10H // načíst registr R5 s 10 //
DVA: MOV R6, # 200 // načíst registr R6 s 200 //
JEDEN: MOV R7, # 200 // načíst registr R7 s 200 //
DJNZ R7, $ // snižovat R7, dokud nebude nula //
DJNZ R6, JEDEN // snížení R7, dokud není nula //
DJNZ R5, DVA // snižovat R7, dokud nebude nula //
RET // návrat k hlavnímu programu //
KONEC
Výpočty časovače / počítadla a program s využitím 8051 M.mikrokontrolér:
Zpoždění je jedním z důležitých faktorů při vývoji aplikačního softwaru. The časovače a čítače jsou hardwarové komponentymikrokontrolér, které se používají v mnoha aplikacích k zajištění přesného časového zpoždění s počtem impulzů. BÚkoly jsou realizovány softwarovou technikou.
1. WAP pro výpočet časového zpoždění 500us.
MOV TMOD, # 10H // výběr režimu časovače pomocí registrů //
MOV TH1, # 0FEH // uloží dobu zpoždění do vyššího bitu //
MOV TL1, # 32H // uloží dobu zpoždění do nízkého bitu //
JNB TF1, $ // zmenší hodnotu časovače, dokud nebude nula //
CLR TF1 // vymazat příznak časovačebit//
CLR TR1 // VYPNUTÝ časovač //
2. WAP pro přepínání LEDs tím5sekčasová prodleva
ORG 0000H
NÁVRATNOST: MOV PO, # 00H
ACALL DELAY
MOV P0, # 0FFH
ACALL DELAY
NÁVRATNOST SJUMPU
ZPOŽDĚNÍ: MOV R5, # 50H // načíst registr R5 s 50 //
ZPOŽDĚNÍ 1: MOV R6, # 200 // načíst registr R6 s 200 //
ZPOŽDĚNÍ 2: MOV R7, # 229 // načíst registr R7 s 200 //
DJNZ R7, $ // snižovat R7, dokud nebude nula //
DJNZ R6, DELAY2 // snižovat R6, dokud není nula //
DJNZ R5, DELAY1 // snížení R5, dokud není nula //
RET // návrat k hlavnímu programu //
KONEC
3. WAP pro počítání 250 pulzů pomocí mode0 count0
Syntax:
ORG 0000H
MOV TMOD, # 50H // výběr počitadla //
MOV TH0, # 15 // posunout čítací impulsy o vyšší bit //
MOV TH1, # 9FH //přestěhovat sepočet impulzů, spodní bit //
NASTAVTE TR0 // ZAPNUTÍ časovače //
JNB $ // zmenší počet na nulu //
CLR TF0 // vymazat počítadlo, příznakbit//
CLR TR0 // zastavit časovač //
KONEC
Programování sériové komunikace pomocí 8051 M.mikrokontrolér:
Sériová komunikace se běžně používá pro přenos a příjem dat. 8051mikrokontrolérse skládají ze sériové komunikace UART / USART a signály jsou přenášeny a přijímányTxa Rx kolíky. Komunikace UART přenáší data bit-by-bit sériově. UART je poloduplexní protokol, který přenáší a přijímá data, ale ne současně.
1. WAP pro přenos znaků do Hyper Terminalu
MOV SCON, # 50H // nastavení sériové komunikace //
MOV TMOD, # 20H // výběr režimu časovače //
MOV TH1, # -3 // nastavení přenosové rychlosti //
NASTAVTE TR1 // ZAPNUTÍ časovače //
MOV SBUF, # ‘S’ // přenášet S do sériového okna //
JNB TI, $ // snižte hodnotu časovače, dokud nebude nula //
CLR RI // vymazat přerušení příjmu //
CLR TR1 // časovač vymazání //
2. WAP pro přenos Příjmu postavy Hyper Terminálem
MOV SCON, # 50H // nastavení sériové komunikace //
MOV TMOD, # 20H // výběr režimu časovače //
MOV TH1, # -6 // nastavení přenosové rychlosti //
NASTAVTE TR1 // na časovači //
MOV SBUF, # ‘S’ // přenášet S do sériového okna //
JNB RI, $ // snižte hodnotu časovače, dokud není nula //
CLR RI // vymazat přerušení příjmu //
MOV P0, SBUF // odeslání hodnoty registru SBUF na port0 //
CLR TR1 // časovač vymazání //
Jedná se o programování 8051 v jazyce Assembly ve zkratce s ukázkovými programy. Doufáme, že tyto adekvátní informace o montážním jazyce budou pro čtenáře určitě užitečné a těšíme se na jejich cenné komentáře v sekci komentářů níže.