Johdanto kokoonpanokielen 8051-ohjelmointiin

Kokeile Instrumenttia Ongelmien Poistamiseksi





Kokoonpanokieli on matalan tason ohjelmointikieli, jota käytetään ohjelmakoodin kirjoittamiseen muistitiedoissa. Vaikka tällä hetkellä onkin paljon korkean tason kieliä, joilla on tällä hetkellä kysyntää, kokoonpanon ohjelmointikieliä käytetään yleisesti monissa sovelluksissa, ja sitä voidaan käyttää suoriin laitteistomenettelyihin. Sitä käytetään myös kirjoittamaan 8051-ohjelmointikoodi tehokkaasti pienemmällä kellojaksoilla kuluttamalla vähemmän muistia verrattuna muihin korkean tason kieliin.

8051 Ohjelmointi kokoonpanokielellä

8051-ohjelmointi



8051 Ohjelmointi kokoonpanokielellä

Kokoonpanokieli on täysin laitteistoon liittyvä ohjelmointikieli. Sulautetuilla suunnittelijoilla on oltava riittävä tietämys tiettyjen prosessorien tai ohjaimien laitteistoista ennen ohjelman kirjoittamista. Asennuskielen on kehittänyt muistitiedosto, joten käyttäjät eivät voi ymmärtää sitä helposti muokkaamalla ohjelmaa.


8051 Ohjelmointi kokoonpanokielellä

8051 Ohjelmointi kokoonpanokielellä



Kokoonpanon ohjelmointikielen ovat kehittäneet erilaiset kääntäjät ja 'keiluvison' sopii parhaiten mikro-ohjainohjelmointi kehitystä. Mjääohjaimettai prosessorit voivat ymmärtää vain binäärikielen muodossa ”0s tai 1s”. Assembler muuntaa kokoonpanokielen binäärikieleksi ja tallentaa sen sittenmikro-ohjainmuistia tietyn tehtävän suorittamiseksi.

8051 Mikrokontrolleriarkkitehtuuri

8051mikro-ohjainon CISC-pohjainen Harvard-arkkitehtuuri , ja siinä on oheislaitteita, kuten 32 I / O, ajastimet / laskurit, sarjaliikenne ja muistit.mikro-ohjainvaatii ohjelman suorittamaan muistia vaativat toiminnot ja lukemaan toiminnot. 8051mikro-ohjainkoostuu RAM- ja ROM-muistista ohjeiden tallentamiseksi.

8051 Mikrokontrolleri-arktitoiminto

8051 Mikrokontrolleriarkkitehtuuri

Rekisteri on pääosa jalostajat jamikro-ohjaimet joka sisältyy muistiin, joka tarjoaa nopeamman tavan kerätä ja tallentaa tietoja. 8051-kokoonpanokielen ohjelmointi perustuu muistirekistereihin. Jos haluamme käsitellä tietoja prosessorille tai ohjaimelle suorittamalla vähennyslaskun, yhteenlaskun jne., Emme voi tehdä sitä suoraan muistiin, mutta se tarvitsee rekistereitä tietojen käsittelemiseksi ja tallentamiseksi.Mikrokontrolleritsisältää useita rekisteröintityyppejä, jotka voidaan luokitella niiden ohjeiden tai niissä toimivan sisällön mukaan.

8051-mikrokontrolleriohjelmat kokoonpanokielellä

Asennuskieli koostuu elementeistä, joita kaikkia käytetään ohjelman kirjoittamiseenperäkkäisellä tavalla. Noudata annettuja sääntöjä kirjoittaaksesi ohjelmoinnin kokoonpanokielellä.


Kokouskielen säännöt

  • Kokoonpanokoodi on kirjoitettava isoilla kirjaimilla
  • Tarrojen on oltava kaksoispisteen perässä (tarra :)
  • Kaikkien symbolien ja tarrojen on aloitettava kirjaimella
  • Kaikki kommentit kirjoitetaan pienillä kirjaimilla
  • Ohjelman viimeisen rivin on oltava END-direktiivi

Kokoonpanokielen muistitikut ovat op-koodin muodossa, kuten MOV, ADD, JMP ja niin edelleen, joita käytetään toimintojen suorittamiseen.

Op-koodi: Op-koodi on yksi käsky, jonka keskusyksikkö voi suorittaa. Tässä op-koodi on MOV-käsky.

Operandit: Operandit ovat yksittäisiä tietoja, joita voidaan käyttää op-koodilla. Esimerkiksi kertolaskuoperaatio suoritetaan operandeilla, jotka kerrotaan operandilla.

Syntaksi: MUL a,b

Kokoonpanokielen ohjelmoinnin elementit:

  • Kokoa ohjeet
  • Käyttöohjeet
  • Osoitetilat

Kokoamisohjeet:

Kokoonpanodirektiivit antavat ohjeet prosessorille. 8051mikro-ohjainkoostuu erilaisista kokoonpano-direktiiveistä ohjausyksikölle suunnan antamiseksi. Hyödyllisimmät direktiivit ovat 8051-ohjelmointi, kuten:

  • ORG
  • DB
  • EQU
  • LOPPU

ORG(alkuperä): Tämä direktiivi osoittaa ohjelman alkamisen. Tätä käytetään rekisteriosoitteen asettamiseen kokoonpanon aikana. Esimerkiksi ORG 0000h kertoo kääntäjälle kaikki seuraavat koodit alkaen osoitteesta 0000h.

Syntaksi: ORG 0000h

DB(määritä tavu): Määrittelytavua käytetään sallimaan tavujono. Tulosta esimerkiksi ”EDGEFX”, jossa kukin merkki otetaan osoitteen mukaan ja lopuksi tulostaa DB: n ”merkkijonon” suoraan lainausmerkeillä.

Syntaksi:

ORG 0000h

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

EQU (vastaava): Vastaavaa direktiiviä käytetään muuttujan osoitteen tasaamiseen.

Syntaksi:

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

LOPPU: END-direktiiviä käytetään osoittamaan ohjelman loppu.

Syntaksi:

reg ekv,09h

—————–
—————–
MOVreg,# 2t
LOPPU

Osoitetilat:

Tietojen saantitapaa kutsutaan osoitetilaksi. Suoritin voi käyttää tietoja eri tavoin käyttämällä osoitetiloja. 8051mikro-ohjainkoostuu viidestä osoitustilasta, kuten:

  • Välitön osoitetila
  • Rekisteröi osoitetila
  • Suora osoitetila
  • Epäsuora osoitetila
  • Perushakemiston osoitetila

Välitön osoitetila:

Tässä osoitetilassa lähteen on oltava arvo, jota # voi seurata, ja kohteen on oltava SFR-rekisterit, yleiskäyttöiset rekisterit ja osoite. Sitä käytetään arvon välittömään tallentamiseen muistirekistereihin.

Syntaksi:

MOV A, # 20h // A onanakkurekisteri, 20 on tallennettu A //
MOV R0,# 15 // R0 on yleiskäyttöinen rekisteri 15, joka on tallennettu R0-rekisteriin //
MOV P0, # 07h // P0 on SFR-rekisteri, 07 on tallennettu P0 //
MOV 20h,# 05h // 20h on rekisteriin 05 tallennettu osoite 20h //

Entinen:

MOV R0, # 1
MOV R0, # 20 // R0<—R0[15] +20, lopullinen arvo tallennetaan ryhmään R0 //

Rekisteröi osoitetila:

Tässä osoitetilassa lähteen ja kohteen on oltava rekisteri, mutta ei yleiskäyttöisiä rekistereitä. Joten tietoja ei siirretä yleiskäyttöiset pankkirekisterit .

Syntaksi:

MOV A, B // A on SFR-rekisteri, B on yleiskäyttöinen rekisteri //
MOV R0, R1 // Virheellinen käsky, GPR - GPR ei ole mahdollista //

ENTINEN:

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

Suora osoitetila

Tässä osoitetilassa lähteen tai kohteen (tai sekä lähteen että kohteen) on oltava osoite, mutta ei arvo.

Syntaksi:

MOV A,20h // 20h on osoite A on rekisteri //
MOV 00h, 07h // molemmat osoitetaan GPS-rekistereissä //

Entinen:

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

Epäsuora osoitetila:

Tässä osoitetilassa lähteen tai määränpään (tai kohteen tai lähteen) on oltavaettäepäsuora osoite, mutta ei arvo. Tämä osoitetila tukee osoitinkonseptia. Osoitin on muuttuja, jota käytetään toisen muuttujan osoitteen tallentamiseen. Tätä osoitinkonseptia käytetään vain R0- ja R1-rekistereihin.

Syntaksi:

MOVR0, # 01h // 01-arvo on tallennettu R0-rekisteriin, R0-osoite on 08h //
MOV R1, # 08h // R1 on osoitinmuuttuja, jokamyymälöissäR0: n osoite (08h) //
MOV 20h,@ R1 // 01 -arvo tallennetaan yleislääkärirekisterin 20h-osoitteeseen //

Epäsuora osoitetila

Epäsuora osoitetila

Perushakemiston osoitustila:

Tätä osoitetilaa käytetään tietojen lukemiseen ulkoinen muisti tai ROM-muisti . Kaikki osoitetilat eivät voi lukea tietoja koodimuistista. Koodin on luettava DPTR-rekisterin läpi. DPTR: ää käytetään osoittamaan tiedot koodiin tai ulkoiseen muistiin.

Syntaksi:

MOVC A, @ A + DPTR // C tarkoittaa koodimuistia //
MOCX A, @ A + DPTR // X tarkoittaa ulkoista muistia //
EX: MOV A, # 00H // 00H on tallennettu A-rekisteriin //
MOV DPTR, # 0500H // DPTR osoittaa muistiin 0500h-osoitteen //
MOVC A, @ A + DPTR // lähetä arvoettäA-rekisteri //
MOV P0, A // päivämäärä, jolloin lähetys lähetetään PO-rekisteröijälle //

Käyttöohjeet:

Käskyjoukko on ohjaimen tai prosessorin rakenne, joka antaa ohjaimelle komentoja ohjaamaan ohjainta tietojen käsittelyä varten. Ohjesarja koostuu ohjeista, alkuperäisistä tietotyypeistä, osoitetiloista, keskeytysrekistereistä, poikkeuksellisesta käsittelystä ja muistiarkkitehtuurista. 8051mikro-ohjain osaa noudattaa CISC-ohjeita Harvard-arkkitehtuurilla. 8051-ohjelmoinnin yhteydessä erityyppiset CISC-ohjeet sisältävät:

  • Tiedonsiirto-ohjeet
  • Peräkkäiset ohjeet
  • Aritmeettinen ohjeisto
  • Haarautuminen Iohjeetaseta
  • Silmukan käyttöjoukko
  • Ehdollinen ohjeisto
  • Ehdoton ohjejoukko
  • Looginen ohjeisto
  • Boolen ohjeisto

Aritmeettiset ohjeet:

Aritmeettiset ohjeet suorittavat perustoiminnot, kuten:

  • Lisäys
  • Kertolasku
  • Vähennyslasku
  • Divisioona

Lisäys:

ORG 0000h
MOV R0, # 03H // siirrä arvo 3 rekisteriin R0 //
MOV A, # 05H // siirrä arvo 5 varaajaan A //
Lisää A, 00H //lisääarvo R0-arvolla ja tallentaa tuloksenjonkin sisällä//
LOPPU

Kertolasku:

ORG 0000h
MOV R0, # 03H // siirrä arvo 3 rekisteriin R0 //
MOV A, # 05H // siirrä arvo 5 varaajaan A //
MUL A, 03H //Kerrotaantulos tallennetaan akkuun A //
LOPPU

Vähennyslasku:

ORG 0000h
MOV R0, # 03H // siirrä arvo 3 rekisteriin R0 //
MOV A, # 05H // siirrä arvo 5 varaajaan A //
ALALAUKKU A, 03H // Tulosarvo tallennetaan akkuun A //
LOPPU

Divisioona:

ORG 0000h
MOV R0, # 03H // siirrä arvo 3 rekisteriin R0 //
MOV A, # 15H // siirrä arvo 5 varaajaan A //
DIV A, 03H // lopullinen arvo tallennetaan akkuun A //
LOPPU

Ehdolliset ohjeet

CPU suorittaa ohjeet ehdon perusteella tarkistamalla yhden bitin tai tavun tilan. 8051mikro-ohjainkoostuu erilaisista ehdollisista ohjeista, kuten:

  • JB -> Hyppää alapuolelle
  • JNB -> Hyppää, ellei alle
  • JC -> Hyppää kantamaan
  • JNC -> Hyppää joseiKanna
  • JZ -> Hyppää jos nolla
  • JNZ -> Hyppää joseiNolla
Ehdolliset ohjeet

Ehdolliset ohjeet

1. Syntaksi:

JB P1.0, etiketti
- - - - - - - -
- - - - - - - -
Tarra: - - - - - - - -
- - - - - - - -
LOPPU

2. Syntaksi:

JNB P1.0, etiketti
- - - - - - - -
- - - - - - - -
Tarra: - - - - - - - -
- - - - - - - -
LOPPU

3. Syntaksi:

JC, etiketti
- - - - - - - -
- - - - - - - -
Tarra: - - - - - - - -
- - - - - - - -
LOPPU

4. Syntaksi:

JNC, etiketti
- - - - - - - -
- - - - - - - -
Tarra: - - - - - - - -
- - - - - - - -
LOPPU
5. Syntaksi:

JZ, etiketti
- - - - - - - -
- - - - - - - -
Tarra: - - - - - - - -
- - - - - - - -
LOPPU

6. Syntaksi:

JNZ, etiketti
- - - - - - - -
- - - - - - - -
Tarra: - - - - - - - -
- - - - - - - -
LOPPU

Puhelu- ja hyppyohjeet:

Kutsu- ja hyppyohjeita käytetään ohjelman koodireplikaation välttämiseksi. Kun jokin tietty koodi käytettiin useammin kuin kerran ohjelman eri paikoissa, jos mainitsemmetietty nimiettäkoodi sittenvoisimme käyttää tätä nimeä missä tahansa ohjelmassa kirjoittamatta koodia joka kerta. Tämä vähentää ohjelman monimutkaisuutta. 8051-ohjelmointi koostuu puhelu- ja hyppyohjeista, kuten LCALL, SJMP.

  • LCALL
  • SOITTO
  • SJMP
  • LJMP

1. Syntaksi:

ORG 0000h
- - - - - - - -
- - - - - - - -
Soita, etiketti
- - - - - - - -
- - - - - - - -
SJMP STOP
Tarra: - - - - - - - -
- - - - - - - -
- - - - - - - -
oikein
LOPETTAA:NOP

2. Syntaksi:

ORG 0000h
- - - - - - - -
- - - - - - - -
LCALL, etiketti
- - - - - - - -
- - - - - - - -
SJMP STOP
Tarra: - - - - - - - -
- - - - - - - -
- - - - - - - -
oikein
LOPETTAA:NOP

Puhelu- ja hyppyohjeet

Puhelu- ja hyppyohjeet

Silmukkaohjeet:

Silmukkaohjeita käytetään lauseen toistamiseen joka kerta, kun suoritetaan lisäys- ja vähennystoimintoja. 8051mikro-ohjainkoostuvat kahden tyyppisistä silmukkaohjeista:

  • CJNE -> vertaa ja hyppää, jos ei ole yhtä suuri
  • DJNZ -> vähennys ja hyppy ellei nolla

1. Syntaksi:

/CJNE
MOV A, # 00H
MOV B, # 10H
Tarra: INC
- - - - - -
- - - - - -
CJNE A, etiketti

2. Syntaksi:

/DJNE

MOV R0, # 10H
Tarra: - - - - - -
- - - - - -
DJNE R0, etiketti
- - - - - -
- - - - - -
LOPPU

Looginen ohjeisto:

8051-mikrokontrolleri-käskysarja antaa AND-, OR-, XOR-, TEST-, NOT- ja Boolen-logiikkaohjeet asetuksille ja tyhjentää bitit ohjelman tarpeen mukaan.

Looginen ohjeisto

Looginen ohjeisto

1. Syntaksi:

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

2. Syntaksi:

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

3. Syntaksi:

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

Vaihto-operaattorit

Vaihto-operaattoreita käytetään datan lähettämiseen ja vastaanottamiseen tehokkaasti. 8051mikro-ohjainkoostuu neljästä vuoro-operaattorista:

  • RR -> Kierrä oikealle
  • RRC -> Kierrä oikealle kantamisen kautta
  • RL -> Kierrä vasemmalle
  • RLC -> Kierrä vasemmalle kantamisen kautta

Kierrä oikealle (RR):

Tässä siirtotoiminnossa MSB: stä tulee LSB ja kaikki bitit siirtyvät kohti oikeaa puolta bittiä kohti, sarjaan.

Syntaksi:

MOV A, # 25h
RR A

Kierrä vasemmalle (RL):

Tässä siirtotoiminnossa MSB: stä tulee LSB ja kaikki bitit siirtyvät kohti vasenta sivua bitti kerrallaan, sarjaan.

Syntaksi:

MOV A, # 25h
RL A

RRC Kierrä oikealle kantokotelon läpi:

Tässä siirtotoiminnossa LSB siirtyy kantamaan ja kantamisesta tulee MSB, ja kaikki bitit siirtyvät kohti oikeaa puolta bitti kerrallaan.

Syntaksi:

MOV A, # 27h
RRC A

RLC Kierrä vasemmalta kantokotelon läpi:

Tässä siirtotoiminnossa MSB siirtyy kantamaan ja kantamisesta tulee LSB ja kaikki bitit siirtyvät kohti vasenta puolta bitti bitiltä.

Syntaksi:

MOV A, # 27h
RLC A

Sulautetut C-perusohjelmat:

mikro-ohjainohjelmointi vaihtelee käyttöjärjestelmän tyypin mukaan. On monet käyttöjärjestelmät kuten Linux, Windows, RTOS ja niin edelleen. RTOS: lla on kuitenkin useita etuja sulautettujen järjestelmien kehittämisessä. Joitakin kokoonpanotason ohjelmointiesimerkkejä on annettu alla.

LED vilkkuu 8051: n kanssamikro-ohjain:

  • Numero Näytetään 7-segmenttinäytössä 8051-mikrokontrollerilla
  • Ajastimen / laskurin laskelmat ja ohjelmointi 8051: llämikro-ohjain
  • Sarjaviestinnän laskelmat ja ohjelma 8051: n avullamikro-ohjain

LED-ohjelmat 8051 M: lläicrocontrller

1. WAP vaihtaaksesi PORT1-merkkivalot

ORG 0000H
KOKO: MOV P1, # 01 //liikkua00000001 p1-rekisteriin //
CALL DELAY // suorita viive //
MOV A, P1 // liikkuap1-arvoakkuun //
CPL A // täydentää A-arvoa //
MOV P1, A // siirrä 11111110 portti1-rekisteriin //
CALL DELAY // suorita viive //
SJMP TOGLE
VIIVE: MOV R5, # 10H // kuormarekisteri R5 10: llä //
KAKSI: MOV R6, # 200 // kuormitusrekisteri R6 200: lla //
YKSI: MOV R7, # 200 // kuormarekisteri R7 200: lla //
DJNZ R7, $ // vähennä R7, kunnes se on nolla //
DJNZ R6, ONE // vähennä R7, kunnes se on nolla //
DJNZ R5, KAKSI // vähennä R7, kunnes se on nolla //
RET // palaa pääohjelmaan //
LOPPU

Ajastin- / laskurilaskelmat ja ohjelmointi 8051 M: lläjääohjain:

Viive on yksi tärkeistä tekijöistä sovellusohjelmistojen kehittämisessä. ajastimet ja laskurit ovat laitteiston komponenttejamikro-ohjain, joita käytetään monissa sovelluksissa tarkan aikaviiveen aikaansaamiseksi laskupulsseilla. Bmuut tehtävät toteutetaan ohjelmistotekniikalla.

1. WAP 500us-aikaviiveen laskemiseksi.

MOV TMOD, # 10H // valitse ajastintila rekisterien avulla //
MOV TH1, # 0FEH // viiveaika tallennetaan ylempään bittiin //
MOV TL1, # 32H // viiveajan tallentaminen matalaan bittiin //
JNB TF1, $ // vähentää ajastimen arvoa, kunnes se on nolla //
CLR TF1 // tyhjennä ajastimen lippubitti//
CLR TR1 // Ajastimen sammutus //

2. Vaihda LED-valot WAP-toiminnollakanssa5sekaikaviive

ORG 0000H
PALUU: MOV PO, # 00H
SALLITTAVA VIIVETYS
MOV P0, # 0FFH
SALLITTAVA VIIVETYS
PALAUTA TAKAISIN
VIIVE: MOV R5, # 50H // kuormarekisteri R5 50 //: lla
VIIVE1: MOV R6, # 200 // kuormarekisteri R6 200: lla //
VIIVE 2: MOV R7, # 229 // kuormarekisteri R7 200: lla //
DJNZ R7, $ // vähennä R7, kunnes se on nolla //
DJNZ R6, DELAY2 // vähennetään R6, kunnes se on nolla //
DJNZ R5, DELAY1 // vähennetään R5 nollaksi //
RET // palaa pääohjelmaan //
LOPPU

3. WAP laskee 250 pulssia käyttämällä moodia0 count0

Syntaksi:

ORG 0000H
MOV TMOD, # 50H // valitse laskuri //
MOV TH0, # 15 // siirrä laskupulsseja korkeammaksi bitiksi //
MOV TH1, # 9FH //liikkualaskupulssit, alempi bitti //
ASETA TR0 // ajastimeen //
JNB $ // pienentää laskenta-arvoa nollaan asti //
CLR TF0 // tyhjennä laskuri, lippubitti//
CLR TR0 // ajastimen pysäytys //
LOPPU

Sarjaliikenteen ohjelmointi 8051 M: lläjääohjain:

Sarjaviestintä käytetään yleisesti tietojen lähettämiseen ja vastaanottamiseen. 8051mikro-ohjainkoostuvat UART / USART-sarjaliikenteestä ja signaalit välitetään ja vastaanotetaanTxja Rx-nastat. UART-tiedonsiirto siirtää dataa bitti bitiltä sarjaan. UART on puoliduplex-protokolla, joka siirtää ja vastaanottaa tietoja, mutta ei samanaikaisesti.

1. WAP lähettää merkit hyperterminaaliin

MOV SCON, # 50H // aseta sarjaliikenne //
MOV TMOD, # 20H // valitse ajastintila //
MOV TH1, # -3 // aseta siirtonopeus //
ASETA TR1 // AJASTIMESSA //
MOV SBUF, # ’S’ // lähettää S sarjaikkunaan //
JNB TI, $ // ajastimen vähennysarvo, kunnes se on nolla //
CLR RI // tyhjennä vastaanoton keskeytys //
CLR TR1 // tyhjennä ajastin //

2. WAP lähettää vastaanottomerkin hyperterminaalilla

MOV SCON, # 50H // aseta sarjaliikenne //
MOV TMOD, # 20H // valitse ajastintila //
MOV TH1, # -6 // aseta siirtonopeus //
ASETA TR1 // ajastimessa //
MOV SBUF, # ’S’ // lähettää S sarjaikkunaan //
JNB RI, $ // ajastimen vähennysarvo, kunnes se on nolla //
CLR RI // tyhjennä vastaanoton keskeytys //
MOV P0, SBUF // lähetä SBUF-rekisteriarvo portille0 //
CLR TR1 // tyhjennä ajastin //

Kyse on 8051-ohjelmoinnista Assembly-kielellä lyhyesti esimerkkipohjaisilla ohjelmilla. Toivomme, että nämä riittävät tiedot kokoonpanokielestä ovat varmasti hyödyllisiä lukijoille, ja odotamme heidän arvokkaita kommenttejaan alla olevassa kommenttiosassa.