Uvod v programiranje 8051 v zbirnem jeziku

Preizkusite Naš Instrument Za Odpravo Težav





Montažni jezik je programski jezik na nizki ravni, ki se uporablja za pisanje programske kode v smislu mnemotehnike. Čeprav trenutno obstaja povpraševanje po jezikih na visoki ravni, se v mnogih aplikacijah pogosto uporablja programski jezik montaže, ki ga lahko uporabimo za neposredne manipulacije s strojno opremo. Uporablja se tudi za zapisovanje 8051 programska koda učinkovito z manjšim številom taktov, tako da porabi manj pomnilnika v primerjavi z drugimi jeziki na visoki ravni.

8051 Programiranje v zbirnem jeziku

8051 Programiranje



8051 Programiranje v zbirnem jeziku

Montažni jezik je v celoti povezan s strojno opremo programski jezik. Vdelani oblikovalci morajo pred pisanjem programa imeti dovolj znanja o strojni opremi določenega procesorja ali krmilnikov. Montažni jezik razvijajo mnemotehniki, zato ga uporabniki ne morejo zlahka razumeti za spreminjanje programa.


8051 Programiranje v zbirnem jeziku

8051 Programiranje v zbirnem jeziku



Programski jezik montaže razvijajo različni prevajalniki in 'kegljišče' je najbolj primeren za mikrokrmilnikprogramiranje razvoj. Mmikrokrmilnikiali procesorji lahko razumejo samo binarni jezik v obliki '0s ali 1s'. Monter pretvori montažni jezik v binarni jezik in ga shrani vmikrokrmilnikpomnilnika za izvajanje določene naloge.

8051 Arhitektura mikrokrmilnika

8051mikrokrmilnikali je Harvardska arhitektura, ki temelji na CISC in ima zunanje naprave, kot so 32 V / I, časovniki / števci, serijska komunikacija in pomnilniki. Themikrokrmilnikzahteva program za izvajanje operacij, ki zahtevajo pomnilnik za shranjevanje in branje funkcij. 8051mikrokrmilnikje sestavljen iz pomnilnika RAM in ROM za shranjevanje navodil.

8051 Mikrokrmilnik Arctitecuture

8051 Arhitektura mikrokrmilnika

Register je glavni del programa procesorji inmikrokrmilniki ki je v pomnilniku, ki omogoča hitrejši način zbiranja in shranjevanja podatkov. Programiranje zbirnega jezika 8051 temelji na pomnilniških registrih. Če želimo podatke obdelati s procesorjem ali krmilnikom tako, da izvajamo odštevanje, seštevanje itd., Tega ne moremo storiti neposredno v pomnilniku, potrebujejo pa registre za obdelavo in shranjevanje podatkov.Mikrokrmilnikivsebujejo več vrst registrov, ki jih je mogoče razvrstiti glede na njihova navodila ali vsebino, ki v njih deluje.

Programi mikrokrmilnika 8051 v montažnem jeziku

Montažni jezik je sestavljen iz elementov, ki se uporabljajo za pisanje programazaporeden način. Upoštevajte navedena pravila za pisanje programiranja v montažnem jeziku.


Pravila skupščinskega jezika

  • Koda montaže mora biti napisana z velikimi črkami
  • Oznakam mora slediti dvopičje (nalepka :)
  • Vsi simboli in nalepke se morajo začeti s črko
  • Vsi komentarji so vneseni z malimi črkami
  • Zadnja vrstica programa mora biti direktiva END

Мнеmotehnike montažnega jezika so v obliki kode op, kot so MOV, ADD, JMP itd., Ki se uporabljajo za izvajanje operacij.

Op koda: Op-koda je eno navodilo, ki ga lahko izvrši CPU. Tu je op-koda navodilo MOV.

Operandi: Operandi so en sam podatek, ki ga lahko upravlja op-koda. Na primer, operacijo množenja izvajajo operandi, ki se pomnožijo z operandom.

Sintaksa: MUL a,b

Elementi programskega jezika skupščine:

  • Sestavite smernice
  • Set navodil
  • Načini naslavljanja

Navodila za sestavljanje:

Navodila za sestavljanje dajejo navodila CPU. 8051mikrokrmilnikje sestavljen iz različnih vrst direktiv o montaži, ki usmerjajo krmilno enoto. Najbolj uporabne smernice so programiranje 8051, kot so:

  • ORG
  • DB
  • EQU
  • KONEC

ORG(poreklo): Ta direktiva označuje začetek programa. To se uporablja za nastavitev naslova registra med sestavljanjem. Na primer ORG 0000h sporoči prevajalniku vso naslednjo kodo, ki se začne na naslovu 0000h.

Sintaksa: ORG 0000h

DB(definiraj bajt): Bajt define se uporablja za omogočanje niza bajtov. Na primer, natisnite “EDGEFX”, pri čemer vsak znak zavzame naslov, na koncu pa DB izpiše “niz” neposredno z dvojnimi narekovaji.

Sintaksa:

ORG 0000h

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

EQU (enakovredno): Enakovredna direktiva se uporablja za enačenje naslova spremenljivke.

Sintaksa:

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

KONEC: Direktiva END se uporablja za označevanje konca programa.

Sintaksa:

reg enako,09h

—————–
—————–
MOVreg,#2h
KONEC

Načini naslavljanja:

Način dostopa do podatkov se imenuje način naslavljanja. CPU lahko do podatkov dostopa na različne načine z uporabo načinov naslavljanja. 8051mikrokrmilnikje sestavljen iz petih načinov naslavljanja, kot so:

  • Način takojšnjega naslavljanja
  • Registriranje načina naslavljanja
  • Način neposrednega naslavljanja
  • Način posrednega naslavljanja
  • Način naslavljanja osnovnega indeksa

Način takojšnjega naslavljanja:

V tem načinu naslavljanja mora biti vir vrednost, ki ji lahko sledi '#', cilj pa mora biti Registri SFR, registri splošnega namena in naslov. Uporablja se za takojšnje shranjevanje vrednosti v pomnilniške registre.

Sintaksa:

MOV A, # 20h // A jeanregistra akumulatorja, 20 je shranjeno v A //
MOV R0,# 15 // R0 je register splošne namene 15 je shranjen v registru R0 //
MOV P0, # 07h // P0 je SFR register07 je shranjen v P0 //
MOV 20h,# 05h // 20h je naslov registra 05, shranjenega v 20h //

Nekdanji:

MOV R0, # 1
MOV R0, # 20 // R0<—R0[15] +20, končna vrednost je shranjena v R0 //

Način registracije naslova:

V tem načinu naslavljanja morata biti vir in cilj register, ne pa registri splošnega namena. Tako se podatki ne premaknejo znotraj bančni registri za splošne namene .

Sintaksa:

MOV A, B // A je register SFR, B je register splošnega namena //
MOV R0, R1 // Neveljavno navodilo, GPR na GPR ni mogoč //

BIVŠA:

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

Način neposrednega naslavljanja

V tem načinu naslavljanja mora biti vir ali cilj (ali vir in cilj) naslov, ne pa tudi vrednost.

Sintaksa:

MOV A,20h // 20h je naslov A je register //
MOV 00h, 07h // oba sta naslovljena na GPS registre //

Nekdanji:

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

Način posrednega naslavljanja:

V tem načinu naslavljanja mora biti vir ali cilj (ali cilj ali vir)doposredni naslov, vendar ne vrednost. Ta način naslavljanja podpira koncept kazalca. Kazalec je spremenljivka, ki se uporablja za shranjevanje naslova druge spremenljivke. Ta koncept kazalca se uporablja samo za registre R0 in R1.

Sintaksa:

Vrednost MOVR0, # 01h // 01 je shranjena v registru R0, naslov R0 je 08h //
MOV R1, # 08h // R1 je spremenljivka kazalca, kitrgovinenaslov (08h) R0 //
MOV 20h,Vrednost @ R1 // 01 je shranjena v 20-urnem naslovu registra GP //

Način posrednega naslavljanja

Način posrednega naslavljanja

Način naslavljanja osnovnega indeksa:

Ta način naslavljanja se uporablja za branje podatkov iz zunanji pomnilnik ali pomnilnik ROM . Vsi načini naslavljanja ne morejo prebrati podatkov iz pomnilnika kod. Koda se mora prebrati skozi register DPTR. DPTR se uporablja za usmerjanje podatkov v kodo ali zunanji pomnilnik.

Sintaksa:

MOVC A, @ A + DPTR // C označuje pomnilnik kod //
MOCX A, @ A + DPTR // X označuje zunanji pomnilnik //
EX: MOV A, # 00H // 00H je shranjen v registru A //
MOV DPTR, # 0500H // DPTR točke 0500h naslov v pomnilniku //
MOVC A, @ A + DPTR // pošlje vrednostdoregister A //
MOV P0, A // datum pošiljanja registrarju PO //

Set navodil:

Nabor ukazov je struktura krmilnika ali procesorja, ki krmilniku zagotavlja ukaze za usmerjanje krmilnika za obdelavo podatkov. Nabor ukazov sestavljajo navodila, izvorni podatkovni tipi, načini naslavljanja, registri prekinitev, izjemno upravljanje in arhitektura pomnilnika. The 8051mikrokrmilnik lahko sledi navodilom CISC s Harvardsko arhitekturo. V primeru programiranja 8051 različne vrste navodil CISC vključujejo:

  • Set navodil za prenos podatkov
  • Set zaporednih navodil
  • Set aritmetičnih navodil
  • Podružnica Inavodilonastavite
  • Nabor za zanke zanke
  • Nabor pogojnih navodil
  • Brezpogojna navodila
  • Komplet logičnih navodil
  • Logična navodila

Komplet aritmetičnih navodil:

Aritmetična navodila izvajajo osnovne operacije, kot so:

  • Dodatek
  • Množenje
  • Odštevanje
  • Divizija

Dodatek:

ORG 0000h
MOV R0, # 03H // premakni vrednost 3 v register R0 //
MOV A, # 05H // premakni vrednost 5 v akumulator A //
Dodaj A, 00H //addAvrednost z vrednostjo R0 in shrani rezultatv//
KONEC

Množenje:

ORG 0000h
MOV R0, # 03H // premakni vrednost 3 v register R0 //
MOV A, # 05H // premakni vrednost 5 v akumulator A //
MUL A, 03H //Pomnoženorezultat je shranjen v akumulatorju A //
KONEC

Odštevanje:

ORG 0000h
MOV R0, # 03H // premakni vrednost 3, da se registrira R0 //
MOV A, # 05H // premakni vrednost 5 v akumulator A //
SUBB A, 03H // Vrednost rezultata je shranjena v akumulatorju A //
KONEC

Oddelek:

ORG 0000h
MOV R0, # 03H // premakni vrednost 3, da se registrira R0 //
MOV A, # 15H // premakni vrednost 5 v akumulator A //
DIV A, 03H // končna vrednost je shranjena v akumulatorju A //
KONEC

Pogojna navodila

CPU izvede navodila na podlagi pogoja s preverjanjem stanja enega bita ali bajta. 8051mikrokrmilnikje sestavljen iz različnih pogojnih navodil, kot so:

  • JB -> Skoči spodaj
  • JNB -> Skoči, če ne spodaj
  • JC -> Skoči, če nosiš
  • JNC -> Skoči, čeneNositi
  • JZ -> Skoči, če nič
  • JNZ -> Skoči, čeneNič
Pogojna navodila

Pogojna navodila

1. Sintaksa:

JB P1.0, nalepka
- - - - - - - -
- - - - - - - -
Oznaka: - - - - - - - -
- - - - - - - -
KONEC

2. Sintaksa:

JNB P1.0, nalepka
- - - - - - - -
- - - - - - - -
Oznaka: - - - - - - - -
- - - - - - - -
KONEC

3. Sintaksa:

JC, nalepka
- - - - - - - -
- - - - - - - -
Oznaka: - - - - - - - -
- - - - - - - -
KONEC

4. Sintaksa:

JNC, nalepka
- - - - - - - -
- - - - - - - -
Oznaka: - - - - - - - -
- - - - - - - -
KONEC
5. Sintaksa:

JZ, label
- - - - - - - -
- - - - - - - -
Oznaka: - - - - - - - -
- - - - - - - -
KONEC

6. Sintaksa:

JNZ, etiketa
- - - - - - - -
- - - - - - - -
Oznaka: - - - - - - - -
- - - - - - - -
KONEC

Navodila za klic in skok:

Navodila za klic in preskok se uporabljajo za preprečevanje podvajanja kode programa. Ko je neka posebna koda uporabljena večkrat na različnih mestih v programu, če omenimodoločeno imedokoda torejto ime bi lahko uporabili kjer koli v programu, ne da bi vsakič vnesli kodo. To zmanjšuje zahtevnost programa. Programiranje 8051 je sestavljeno iz navodil za klic in preskok, kot sta LCALL, SJMP.

  • LCALL
  • VKLIČNO
  • SJMP
  • LJMP

1. Sintaksa:

ORG 0000h
- - - - - - - -
- - - - - - - -
ACALL, nalepka
- - - - - - - -
- - - - - - - -
SJMP STOP
Oznaka: - - - - - - - -
- - - - - - - -
- - - - - - - -
prav
STOP:NOP

2. Sintaksa:

ORG 0000h
- - - - - - - -
- - - - - - - -
LCALL, nalepka
- - - - - - - -
- - - - - - - -
SJMP STOP
Oznaka: - - - - - - - -
- - - - - - - -
- - - - - - - -
prav
STOP:NOP

Navodila za klic in skok

Navodila za klic in skok

Navodila zanke:

Navodila zanke se uporabljajo za ponavljanje bloka vsakič med izvajanjem postopkov povečevanja in zmanjšanja. 8051mikrokrmilniksestavljata dve vrsti navodil zanke:

  • CJNE -> primerjaj in skoči, če ni enako
  • DJNZ -> zmanjšanje in skok, če ne nič

1. Sintaksa:

odCJNE
MOV A, # 00H
MOV B, # 10H
Oznaka: INC A
- - - - - -
- - - - - -
CJNE A, nalepka

2. Sintaksa:

odDJNE

MOV R0, # 10H
Oznaka: - - - - - -
- - - - - -
DJNE R0, etiketa
- - - - - -
- - - - - -
KONEC

Komplet logičnih navodil:

Nabor navodil za mikrokrmilnik 8051 vsebuje navodila AND, OR, XOR, TEST, NOT in logično logično logiko za nabor in odstrani bitov glede na potrebe v programu.

Komplet logičnih navodil

Komplet logičnih navodil

1. Sintaksa:

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

2. Sintaksa:

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

3. Sintaksa:

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

Preusmeritev operaterjev

Operaterji izmene se uporabljajo za učinkovito pošiljanje in sprejemanje podatkov. 8051mikrokrmilniksestavljeni iz štirih operaterjev izmene:

  • RR -> Zavrti desno
  • RRC -> Zavrtite desno skozi prenos
  • RL -> Zavrti v levo
  • RLC -> Zavrtite levo skozi prenos

Zavrti v desno (RR):

Pri tej operaciji prestavljanja MSB postane LSB in vsi biti se zaporedno serijsko premaknejo v desno.

Sintaksa:

MOV A, # 25h
RR A

Zavrti v levo (RL):

Pri tej operaciji prestavljanja MSB postane LSB in vsi bitji serijsko prestavljajo proti levi strani.

Sintaksa:

MOV A, # 25h
RL A

RRC Zavrtite desno skozi nosilce:

Pri tej operaciji prestavljanja se LSB premakne za prenos in prenos postane MSB, vsi bitni deli pa se premaknejo v desno po položaju.

Sintaksa:

MOV A, # 27h
RRC A

RLC Zavrtite levo skozi Carry:

Pri tej operaciji prestavljanja se MSB premakne za prenos in prenos postane LSB in vsi bitji se premaknejo v levo stran v bitnem položaju.

Sintaksa:

MOV A, # 27h
RLC A

Osnovni vdelani programi C:

Themikrokrmilnikprogramiranje se razlikuje za vsako vrsto operacijskega sistema. Obstajajo veliko operacijskih sistemov kot so Linux, Windows, RTOS in tako naprej. Vendar ima RTOS več prednosti za razvoj vgrajenega sistema. Nekateri primeri programov na ravni skupščine so navedeni spodaj.

LED utripa z uporabo 8051mikrokrmilnik:

  • Prikaz številke na 7-segmentnem zaslonu z mikrokrmilnikom 8051
  • Izračuni časovnika / števca in programiranje z uporabo 8051mikrokrmilnik
  • Izračuni in programi serijske komunikacije z uporabo 8051mikrokrmilnik

LED programi z 8051 Mmikrokrmilnik

1. WAP za preklop luči PORT1

ORG 0000H
SKLOP: MOV P1, # 01 //premakniti00000001 v register p1 //
CALL DELAY // izvedba zakasnitve //
MOV A, P1 // premikvrednost p1do akumulatorja //
CPL A // dopolnitev A vrednosti //
MOV P1, A // premakni 11111110 v register port1 //
CALL DELAY // izvedba zakasnitve //
SJMP TOGLE
DELAY: MOV R5, # 10H // obremenitveni register R5 z 10 //
DVE: MOV R6, # 200 // naloži register R6 z 200 //
ONE: MOV R7, # 200 // naloži register R7 z 200 //
DJNZ R7, $ // znižaj R7, dokler ni nič //
DJNZ R6, ONE // znižaj R7, dokler ni nič //
DJNZ R5, DVE // zmanjšujemo R7, dokler ni nič //
RET // vrnitev na glavni program //
KONEC

Izračuni časovnika / števca in programiranje z uporabo 8051 Mmikrokrmilnik:

Zamuda je eden pomembnih dejavnikov pri razvoju aplikacijske programske opreme. The merilniki časa in števci so strojne komponentemikrokrmilnik, ki se uporabljajo v številnih aplikacijah za zagotavljanje natančne časovne zakasnitve s štetjem impulzov. Bdruge naloge se izvajajo s programsko tehniko.

1. WAP za izračun 500-časovne zamude.

MOV TMOD, # 10H // izberemo način časovnika po registrih //
MOV TH1, # 0FEH // shrani čas zakasnitve v višji bit //
MOV TL1, # 32H // shrani čas zakasnitve v nizki bit //
JNB TF1, $ // znižaj vrednost časovnika, dokler ni nič //
CLR TF1 // počistite zastavico časovnikabit//
CLR TR1 // IZKLOP časovnika //

2. WAP za preklop LEDz njimi5.sekčasovna zamuda

ORG 0000H
VRNITEV: MOV PO, # 00H
POČASNA ZAMUDA
MOV P0, # 0FFH
POČASNA ODLOŽITEV
VRAT SJUMP
DELAY: MOV R5, # 50H // register obremenitve R5 s 50 //
DELAY1: MOV R6, # 200 // nakladalni register R6 z 200 //
DELAY2: MOV R7, # 229 // nakladalni register R7 z 200 //
DJNZ R7, $ // znižaj R7, dokler ni nič //
DJNZ R6, DELAY2 // znižanje R6, dokler ni nič //
DJNZ R5, DELAY1 // znižanje R5, dokler ni nič //
RET // vrnitev na glavni program //
KONEC

3. WAP za štetje 250 impulzov z uporabo načina0 count0

Sintaksa:

ORG 0000H
MOV TMOD, # 50H // izberite števec //
MOV TH0, # 15 // premikanje števnih impulzov v višji bit //
MOV TH1, # 9FH //premaknitištetje impulzov, spodnji bit //
SET TR0 // VKLOP časovnika //
JNB $ // znižaj vrednost štetja na nič //
CLR TF0 // počisti števec, zastavicabit//
CLR TR0 // zaustavitev časovnika //
KONEC

Programiranje serijske komunikacije z uporabo 8051 Mmikrokrmilnik:

Zaporedna komunikacija se pogosto uporablja za prenos in sprejem podatkov. 8051mikrokrmilnikso sestavljeni iz serijske komunikacije UART / USART, signale pa prenaša in sprejemaTxin Rx zatiči. Komunikacija UART prenaša podatke bit-by-bit zaporedno. UART je pol-dupleksni protokol, ki prenaša in sprejema podatke, vendar ne hkrati.

1. WAP za prenos znakov na Hyper Terminal

MOV SCON, # 50H // nastavitev serijske komunikacije //
MOV TMOD, # 20H // izberite način časovnika //
MOV TH1, # -3 // nastavi hitrost prenosa //
NASTAVITE TR1 // VKLOP časovnika //
MOV SBUF, # ’S’ // pošlji S v zaporedno okno //
JNB TI, $ // zmanjšaj vrednost časovnika, dokler ni nič //
CLR RI // počisti prekinitev prejema //
CLR TR1 // izbriši časovnik //

2. WAP za prenos znaka Prejmi znak prek hiper terminala

MOV SCON, # 50H // nastavitev serijske komunikacije //
MOV TMOD, # 20H // izberite način časovnika //
MOV TH1, # -6 // nastavi hitrost prenosa //
NASTAVITE TR1 // na časovniku //
MOV SBUF, # ’S’ // pošlji S v zaporedno okno //
JNB RI, $ // zmanjšaj vrednost časovnika, dokler ni nič //
CLR RI // počisti prekinitev prejema //
MOV P0, SBUF // pošlji vrednost registra SBUF na port0 //
CLR TR1 // izbriši časovnik //

To je vse o 8051 Programiranje v zbirnem jeziku na kratko s programi, ki temeljijo na zgledih. Upamo, da bodo te ustrezne informacije o jeziku zbiranja zagotovo koristne za bralce, in se veselimo njihovih dragocenih komentarjev v spodnjem oddelku za komentarje.