Sissejuhatus 8051 programmeerimisse assamblee keeles

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Assamblee keel on madala taseme programmeerimiskeel, mida kasutatakse programmikoodi kirjutamiseks mnemotehnika mõttes. Ehkki praegu on nõudlusel palju kõrgtasemelisi keeli, kasutatakse paljudes rakendustes populaarse montaaži programmeerimiskeelt. Seda saab kasutada riistvara otseseks manipuleerimiseks. Seda kasutatakse ka 8051 programmeerimiskood tõhusamalt vähemate kellatsüklite arvuga, tarbides vähem mälu võrreldes teiste kõrgetasemeliste keeltega.

8051 Programmeerimine assamblee keeles

8051 Programmeerimine



8051 Programmeerimine assamblee keeles

Assamblee keel on täielikult riistvaraga seotud programmeerimiskeel. Manustatud disaineritel peavad enne programmi kirjutamist olema piisavalt teadmisi konkreetse protsessori või kontrollerite riistvara kohta. Koostekeele on välja töötanud mnemotehnika, seetõttu ei saa kasutajad programmi muutmiseks seda hõlpsasti mõista.


8051 Programmeerimine assamblee keeles

8051 Programmeerimine assamblee keeles



Assamblee programmeerimiskeelt arendavad erinevad kompilaatorid ja 'keeglirada' sobib kõige paremini mikrokontrollerprogrammeerimine arengut. Mjääkontrolleridvõi protsessorid saavad aru ainult binaarsest keelest kujul „0s või 1s“. Assambleja teisendab assamblee keele binaarkeeleks ja salvestab selle seejärelmikrokontrollermälu konkreetse ülesande täitmiseks.

8051 mikrokontrolleri arhitektuur

8051mikrokontrolleron CISC-põhine Harvardi arhitektuur ja sellel on välisseadmeid nagu 32 sisend / väljund, taimerid / loendurid, jadaside ja mälud. Themikrokontrollernõuab programmi salvestamiseks mälu vajavate toimingute sooritamiseks ja funktsioonide lugemiseks. 8051mikrokontrollerkoosneb RAM- ja ROM-mäludest juhiste salvestamiseks.

8051 mikrokontrolleri arctitecuture

8051 mikrokontrolleri arhitektuur

Registris on põhiosa töötlejad jamikrokontrollerid mis sisaldub mälus, mis võimaldab andmete kogumist ja salvestamist kiiremini. 8051 koostekeele programmeerimine põhineb mäluregistritel. Kui tahame andmetega töötleja või kontrolleriga manipuleerida, tehes lahutamist, liitmist jne, ei saa me seda otse mällu teha, kuid see vajab andmete töötlemiseks ja salvestamiseks registreid.Mikrokontrolleridsisaldavad mitut tüüpi registreid, mida saab klassifitseerida vastavalt nende juhistele või neis toimivale sisule.

8051 mikrokontrolleri programmid assamblee keeles

Assamblee keel koosneb elementidest, mida kõiki kasutatakse programmi kirjutamiseksjärjestikusel viisil. Järgige antud reegleid, et kirjutada programmeerimiskeeles.


Assamblee keele reeglid

  • Koostekood tuleb kirjutada suurtähtedega
  • Siltidele peab järgnema koolon (silt :)
  • Kõik sümbolid ja sildid peavad algama tähega
  • Kõik kommentaarid on kirjutatud väiketähtedega
  • Programmi viimane rida peab olema END direktiiv

Assamblee keele mnemotehnika on op-koodi kujul, näiteks MOV, ADD, JMP ja nii edasi, mida kasutatakse toimingute sooritamiseks.

Op-kood: Op-kood on üks käsk, mida protsessor saab käivitada. Siin on op-kood MOV-käsk.

Operandid: Operandid on üks osa andmetest, mida saab op-koodiga hallata. Näiteks korrutamistoimingu teostavad operandid, mis korrutatakse operandiga.

Süntaks: MUL a,b

Assamblee keele programmeerimise elemendid:

  • Koguge juhiseid
  • Juhiste komplekt
  • Adresseerimisrežiimid

Kogumisjuhised:

Monteerimisjuhised annavad juhised protsessorile. 8051mikrokontrollerkoosneb erinevat tüüpi monteerimisjuhistest, et anda juhtseadmele suund. Kõige kasulikumad direktiivid on 8051 programmeerimine, näiteks:

  • ORG
  • DB
  • EQU
  • LÕPP

ORG(päritolu): See direktiiv näitab programmi algust. Seda kasutatakse registriaadressi määramiseks kokkupaneku ajal. Näiteks ütleb ORG 0000h kompilaatorile kõik järgnevad koodid alates aadressist 0000h.

Süntaks: ORG 0000h

DB(defineerige bait): Defineerimisbaiti kasutatakse baitide stringi lubamiseks. Näiteks printige “EDGEFX”, kus iga märk võetakse aadressi järgi ja lõpuks trükitakse DB-ga “string” otse jutumärkidega.

Süntaks:

ORG 0000h

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

EQU (ekvivalent): Muutuja aadressi võrdsustamiseks kasutatakse samaväärset direktiivi.

Süntaks:

reg võrdne,09h
—————–
—————–
MOVreg,# 2h

LÕPP: END-direktiivi kasutatakse programmi lõpu tähistamiseks.

Süntaks:

reg võrdne,09h

—————–
—————–
MOVreg,# 2h
LÕPP

Adresseerimisrežiimid:

Andmetele juurdepääsu viisi nimetatakse adresseerimisrežiimiks. Protsessor pääseb andmetele juurde erineval viisil, kasutades aadressirežiime. 8051mikrokontrollerkoosneb viiest adresseerimisrežiimist, näiteks:

  • Kohene adresseerimisrežiim
  • Registreeri adresseerimisrežiim
  • Otseaadressi režiim
  • Kaudse adresseerimise režiim
  • Baasindeksi adresseerimisrežiim

Kohene adresseerimisrežiim:

Selles adresseerimisrežiimis peab allikaks olema väärtus, millele võib järgneda tähis „#”, ja sihtkoht peab olema SFR registrid, üldotstarbelised registrid ja aadress. Seda kasutatakse väärtuse koheseks salvestamiseks mäluregistritesse.

Süntaks:

MOV A, # 20h // A onanakude register, 20 on salvestatud A //
MOV R0,# 15 // R0 on üldotstarbeline register 15, mis on salvestatud registrisse R0 //
MOV P0, # 07h // P0 on SFR register07 on salvestatud P0 //
MOV 20h,# 05h // 20h on 20h-sse salvestatud registri 05 aadress //

Endine:

MOV R0, # 1
MOV R0, # 20 // R0<—R0[15] +20, lõplik väärtus salvestatakse R0 //

Registreerimisrežiim:

Selles adresseerimisrežiimis peavad allikaks ja sihtkohaks olema register, kuid mitte üldotstarbelised registrid. Seega andmeid ei teisaldata üldotstarbelised pangaregistrid .

Süntaks:

MOV A, B // A on SFR register, B on üldotstarbeline register //
MOV R0, R1 // kehtetu käsk, GPR-GPR pole võimalik //

ENNE:

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

Otseaadressi režiim

Selles adresseerimisrežiimis peab allikas või sihtkoht (või nii allikas kui ka sihtkoht) olema aadress, kuid mitte väärtus.

Süntaks:

MOV A,20h // 20h on aadress A on register //
MOV 00h, 07h // mõlemad on GPS-registrite aadressid //

Endine:

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

Kaudse adresseerimise režiim:

Selles adresseerimisrežiimis peab allikas või sihtkoht (või sihtkoht või allikas) olemakunikaudne aadress, kuid mitte väärtus. See adresseerimisrežiim toetab kursori kontseptsiooni. Kursor on muutuja, mida kasutatakse teise muutuja aadressi salvestamiseks. Seda osuti kontseptsiooni kasutatakse ainult R0 ja R1 registrite jaoks.

Süntaks:

MOVR0, # 01h // 01 väärtus on salvestatud registrisse R0, R0 aadress on 08h //
MOV R1, # 08h // R1 on kursori muutuja, miskauplustesR0 aadress (08h) //
MOV 20h,@ R1 // 01 väärtus salvestatakse perearstide registri 20h aadressile //

Kaudse adresseerimise režiim

Kaudse adresseerimise režiim

Baasindeksi adresseerimisrežiim:

Seda adresseerimisrežiimi kasutatakse andmete lugemiseks välismälu või ROM-mälu . Kõik adresseerimisrežiimid ei suuda koodimälust andmeid lugeda. Kood peab läbi lugema DPTR-i registri. DPTR-i kasutatakse andmete suunamiseks koodis või välismälus.

Süntaks:

MOVC A, @ A + DPTR // C tähistab koodimälu //
MOCX A, @ A + DPTR // X tähistab välist mälu //
NÄIDE: MOV A, # 00H // 00H on salvestatud A registrisse //
MOV DPTR, # 0500H // DPTR osutab mälus 0500h aadressi //
MOVC A, @ A + DPTR // saadab väärtusekuniA register //
MOV P0, A // kuupäev, millal A saadeti PO registripidajale //

Juhiste komplekt:

Käsukomplekt on kontrolleri või protsessori struktuur, mis annab kontrollerile käsud, et suunata kontrollerit andmete töötlemiseks. Käsukomplekt koosneb käskudest, algandmetüüpidest, adresseerimisrežiimidest, katkestusregistritest, erakordsest käsitsemisest ja mäluarhitektuurist. The 8051mikrokontroller saab Harvardi arhitektuuriga järgida CISC juhiseid. 8051 programmeerimise korral sisaldavad erinevad CISC-käskude tüübid:

  • Andmeedastusjuhiste komplekt
  • Järjestikuste juhiste komplekt
  • Aritmeetiliste juhiste komplekt
  • Hargnemine Ijuhendseatud
  • Loopi instruktsioonikomplekt
  • Tingimuslike juhiste komplekt
  • Tingimusteta juhiste komplekt
  • Loogiliste juhiste komplekt
  • Boole'i ​​juhiste komplekt

Aritmeetiliste juhiste komplekt:

Aritmeetilised juhised täidavad järgmisi põhitoiminguid:

  • Lisamine
  • Korrutamine
  • Lahutamine
  • Jaoskond

Lisaks:

ORG 0000h
MOV R0, # 03H // teisaldage väärtus 3 registrisse R0 //
MOV A, # 05H // teisaldage väärtus 5 akumulaatorisse A //
Lisage A, 00H //Lisaväärtus R0 väärtusega ja salvestab tulemusesees//
LÕPP

Korrutamine:

ORG 0000h
MOV R0, # 03H // teisaldage väärtus 3 registrisse R0 //
MOV A, # 05H // teisaldage väärtus 5 akumulaatorisse A //
MUL A, 03H //Korrutatudtulemus salvestatakse akumulaatorisse A //
LÕPP

Lahutamine:

ORG 0000h
MOV R0, # 03H // teisaldage väärtus 3 registrisse R0 //
MOV A, # 05H // teisaldage väärtus 5 akumulaatorisse A //
ALAB A, 03H // Tulemuse väärtus salvestatakse akumulaatorisse A //
LÕPP

Jaotus:

ORG 0000h
MOV R0, # 03H // teisaldage väärtus 3 registrisse R0 //
MOV A, # 15H // teisaldage väärtus 5 akumulaatorisse A //
DIV A, 03H // lõplik väärtus salvestatakse akumulaatorisse A //
LÕPP

Tingimuslikud juhised

Protsessor täidab juhised tingimuse põhjal, kontrollides ühe biti olekut või baidi olekut. 8051mikrokontrollerkoosneb erinevatest tingimuslikest juhistest, näiteks:

  • JB -> Hüppa alla
  • JNB -> Hüppa, kui mitte allpool
  • JC -> Hüppa kui kannad
  • JNC -> Hüppa kuimitteKandke
  • JZ -> Hüppa kui null
  • JNZ -> Hüppa kuimitteNull
Tingimuslikud juhised

Tingimuslikud juhised

1. Süntaks:

JB P1.0, silt
- - - - - - - -
- - - - - - - -
Silt: - - - - - - - -
- - - - - - - -
LÕPP

2. Süntaks:

JNB P1.0, silt
- - - - - - - -
- - - - - - - -
Silt: - - - - - - - -
- - - - - - - -
LÕPP

3. Süntaks:

JC, silt
- - - - - - - -
- - - - - - - -
Silt: - - - - - - - -
- - - - - - - -
LÕPP

4. Süntaks:

JNC, silt
- - - - - - - -
- - - - - - - -
Silt: - - - - - - - -
- - - - - - - -
LÕPP
5. Süntaks:

JZ, silt
- - - - - - - -
- - - - - - - -
Silt: - - - - - - - -
- - - - - - - -
LÕPP

6. Süntaks:

JNZ, silt
- - - - - - - -
- - - - - - - -
Silt: - - - - - - - -
- - - - - - - -
LÕPP

Kõne- ja hüppejuhised:

Kõne- ja hüppejuhiseid kasutatakse programmi koodireplikatsiooni vältimiseks. Kui mõnda konkreetset koodi kasutati programmi erinevates kohtades mitu korda, kui mainimekonkreetne nimikunikood siisme võiksime kasutada seda nime kõikjal programmis ilma igaks korraks koodi sisestamata. See vähendab programmi keerukust. 8051 programmeerimine koosneb kõne- ja hüppejuhistest nagu LCALL, SJMP.

  • LCALL
  • KÕNE
  • SJMP
  • LJMP

1. Süntaks:

ORG 0000h
- - - - - - - -
- - - - - - - -
KUTSUMINE, silt
- - - - - - - -
- - - - - - - -
SJMP STOP
Silt: - - - - - - - -
- - - - - - - -
- - - - - - - -
eks
STOP:NOP

2. Süntaks:

ORG 0000h
- - - - - - - -
- - - - - - - -
LCALL, silt
- - - - - - - -
- - - - - - - -
SJMP STOP
Silt: - - - - - - - -
- - - - - - - -
- - - - - - - -
eks
STOP:NOP

Kõne- ja hüppejuhised

Kõne- ja hüppejuhised

Silmusjuhised:

Silmusjuhiseid kasutatakse ploki kordamiseks iga kord, kui sooritatakse juurdekasvu ja vähendamise toiminguid. 8051mikrokontrollerkoosnevad kahte tüüpi silmusjuhistest:

  • CJNE -> võrdle ja hüppa, kui pole võrdne
  • DJNZ -> kahanda ja hüppa kui mitte null

1. Süntaks:

kohtaCJNE
MOV A, # 00H
MOV B, # 10H
Silt: INC
- - - - - -
- - - - - -
CJNE A, silt

2. Süntaks:

kohtaDJNE

MOV R0, # 10H
Silt: - - - - - -
- - - - - -
DJNE R0, silt
- - - - - -
- - - - - -
LÕPP

Loogiliste juhiste komplekt:

Mikrokontrolleri käsukomplekt 8051 annab komplekti jaoks AND, OR, XOR, TEST, NOT ja Boole'i ​​loogikajuhised ning puhastab bitid vastavalt programmi vajadusele.

Loogiliste juhiste komplekt

Loogiliste juhiste komplekt

1. Süntaks:

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

2. Süntaks:

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

3. Süntaks:

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

Vahetusoperaatorid

Vahetusoperaatoreid kasutatakse andmete tõhusaks saatmiseks ja vastuvõtmiseks. 8051mikrokontrollerkoosneb neljast vahetuseoperaatorist:

  • RR -> Pööra paremale
  • RRC -> Pöörake kandes paremale
  • RL -> Pööra vasakule
  • RLC -> Pöörake kandes vasakule

Pööra paremale (RR):

Selles nihutamisoperatsioonis muutub MSB LSB-ks ja kõik bitid nihkuvad järjestikku parempoolse poole.

Süntaks:

MOV A, # 25h
RR A

Pööra vasakule (RL):

Selles nihutamisoperatsioonis saab MSB-st LSB ja kõik bitid nihkuvad järjestikku vasakpoolse poole.

Süntaks:

MOV A, # 25h
RL A

RRC pöörake kandes paremale:

Selles nihutamisoperatsioonis liigub LSB kandmiseks ja kandest saab MSB ning kõik bitid nihkuvad parema külje kaupa bititi bitti.

Süntaks:

MOV A, # 27h
RRC A

RLC pööramine vasakule läbi kandmise:

Selles nihutamisoperatsioonis liigub MSB kandmiseks ja kandest saab LSB ning kõik bitid nihkuvad bitipidi bitide asendis vasaku poole poole.

Süntaks:

MOV A, # 27h
RLC A

Manustatud C põhiprogrammid:

Themikrokontrollerprogrammeerimine on iga operatsioonisüsteemi tüübi puhul erinev. Seal on paljud opsüsteemid nagu Linux, Windows, RTOS ja nii edasi. RTOS-il on aga varjatud süsteemide arendamisel mitmeid eeliseid. Mõned assamblee taseme programmeerimisnäited on toodud allpool.

LED vilgub, kasutades seadet 8051mikrokontroller:

  • Number Kuvatakse 7-segmendilisel ekraanil mikrokontrolleri 8051 abil
  • Taimeri / loenduri arvutused ja programm, kasutades 8051mikrokontroller
  • Seeriaarvutused ja programm 8051 abilmikrokontroller

LED-programmid 8051 M-gaicrocontrller

1. WAP PORT1 LED-de vahetamiseks

ORG 0000H
ÜHENDUS: MOV P1, # 01 //liikuma00000001 p1 registrisse //
CALL DELAY // käivitage viivitus //
MOV A, P1 // liikudap1 väärtusaku juurde //
CPL A // komplekti A väärtus //
MOV P1, A // teisaldage 11111110 porti1 registrisse //
CALL DELAY // käivitage viivitus //
SJMP ÜMBER
VIIVITUS: MOV R5, # 10H // koormusregister R5 koos 10 //
KAKS: MOV R6, # 200 // koormusregister R6 koos 200 //
ÜKS: MOV R7, # 200 // koormusregister R7 koos 200-ga //
DJNZ R7, $ // vähendab R7, kuni see on null //
DJNZ R6, ONE // vähendab R7, kuni see on null //
DJNZ R5, TWO // vähendab R7, kuni see on null //
RET // mine tagasi põhiprogrammi juurde //
LÕPP

Taimeri / loenduri arvutused ja programmeerimine 8051 M abiljääkontroller:

Viivitus on üks olulisi tegureid rakendustarkvara arendamisel. The taimerid ja loendurid on riistvara komponendidmikrokontroller, mida kasutatakse paljudes rakendustes täpse viivituse tagamiseks loendimpulssidega. Bmuud ülesanded viiakse läbi tarkvaratehnikaga.

1. WAP 500use viivituse arvutamiseks.

MOV TMOD, # 10H // valige taimeri režiim registrite järgi //
MOV TH1, # 0FEH // viivitusaeg salvestatakse suuremasse bitti //
MOV TL1, # 32H // viivitusaeg salvestatakse madalasse bitti //
JNB TF1, $ // vähendab taimeri väärtust, kuni see on null //
CLR TF1 // kustutage taimeri lippnatuke//
CLR TR1 // taimeri väljalülitamine //

2. WAP LED-de vahetamisekskoos5saja viivitus

ORG 0000H
TAGASI: MOV PO, # 00H
HELISTA VIIVITUS
MOV P0, # 0FFH
HELISTA VIIVITUS
HÜPPE TAGASI
VIIVITUS: MOV R5, # 50H // laadimisregister R5 koos 50 //
VIIVITUS1: MOV R6, # 200 // koormusregister R6 koos 200-ga //
VIIVITUS2: MOV R7, # 229 // laadige register R7 koos 200-ga //
DJNZ R7, $ // vähendab R7, kuni see on null //
DJNZ R6, DELAY2 // vähendab R6, kuni see on null //
DJNZ R5, DELAY1 // vähendab R5, kuni see on null //
RET // mine tagasi põhiprogrammi juurde //
LÕPP

3. WAP 250 impulssi loendamiseks, kasutades mode0 count0

Süntaks:

ORG 0000H
MOV TMOD, # 50H // vali loendur //
MOV TH0, # 15 // loendamisimpulsside nihutamine kõrgemale bitile //
MOV TH1, # 9FH //liikumaloendusimpulsid, madalam bit //
SEADISE TR0 // taimerile //
JNB $ // vähendab loendusväärtust nullini //
CLR TF0 // tühjendage loendur, lippnatuke//
CLR TR0 // taimeri peatamine //
LÕPP

Juhtkommunikatsiooni programmeerimine 8051 M abiljääkontroller:

Järjestikune suhtlus kasutatakse tavaliselt andmete edastamiseks ja vastuvõtmiseks. 8051mikrokontrollerkoosnevad UART / USART jadaliidest ning signaale edastab ja võtab vastuTxja Rx tihvtid. UART-side edastab andmeid bit-bitti järjestikku. UART on pooldupleksne protokoll, mis edastab ja võtab vastu andmeid, kuid mitte samal ajal.

1. WAP märkide edastamiseks hüperterminalile

MOV SCON, # 50H // jadakommunikatsiooni määramine //
MOV TMOD, # 20H // valige taimeri režiim //
MOV TH1, # -3 // määra andmeedastuskiirus //
SEADE TR1 // taimerile //
MOV SBUF, # ’S’ // edastab S jadaaknasse //
JNB TI, $ // taimeri kahanev väärtus, kuni see on null //
CLR RI // tühista vastuvõtu katkestus //
CLR TR1 // taimer tühjendamine //

2. WAP märgi 'Vastuvõtmine' edastamiseks hüperterminali abil

MOV SCON, # 50H // jadakommunikatsiooni määramine //
MOV TMOD, # 20H // valige taimeri režiim //
MOV TH1, # -6 // määra andmeedastuskiirus //
SET TR1 // taimeril //
MOV SBUF, # ’S’ // edastab S jadaaknasse //
JNB RI, $ // taimeri kahanev väärtus, kuni see on null //
CLR RI // tühista vastuvõtu katkestus //
MOV P0, SBUF // saatke SBUF-i registri väärtus porti0 //
CLR TR1 // taimer tühjendamine //

See kõik puudutab 8051 programmeerimist assamblee keeles koos näitepõhiste programmidega. Loodame, et see piisav teave assamblee keele kohta on lugejatele kindlasti kasulik ja ootame nende väärtuslikke kommentaare allpool olevas kommentaaride jaotises.