Uvod u programiranje 8051 na skupštinskom jeziku

Isprobajte Naš Instrument Za Uklanjanje Problema





Asemblerski jezik je programski jezik niske razine koji se koristi za pisanje programskog koda u smislu mnemotehnike. Iako trenutno postoji mnogo jezika visoke razine, programski jezik montaže popularno se koristi u mnogim aplikacijama. Može se koristiti za izravne hardverske manipulacije. Također se koristi za pisanje 8051 programski kod učinkovito s manjim brojem taktova trošeći manje memorije u usporedbi s ostalim jezicima visoke razine.

8051 Programiranje na skupštinskom jeziku

8051 Programiranje



8051 Programiranje na skupštinskom jeziku

Montažni jezik potpuno je povezan s hardverom programski jezik. Ugrađeni dizajneri moraju imati dovoljno znanja o hardveru određenog procesora ili kontrolera prije pisanja programa. Sklopni jezik razvijaju mnemotehnika, stoga ga korisnici ne mogu lako razumjeti kako bi izmijenili program.


8051 Programiranje na skupštinskom jeziku

8051 Programiranje na skupštinskom jeziku



Programski jezik asemblera razvijaju razni prevoditelji i 'kuglana' je najprikladniji za mikrokontrolerprogramiranje razvoj. Mmikrokontroleriili procesori mogu razumjeti samo binarni jezik u obliku '0s ili 1s' Asembler pretvara montažni jezik u binarni jezik, a zatim ga pohranjuje umikrokontrolermemorija za obavljanje određenog zadatka.

8051 Arhitektura mikrokontrolera

8051mikrokontrolerje Harvardska arhitektura utemeljena na CISC-u , a ima periferne uređaje poput 32 I / O, tajmere / brojače, serijsku komunikaciju i memorije. Themikrokontrolerzahtijeva program za izvođenje operacija kojima je potrebna memorija za spremanje i čitanje funkcija. 8051mikrokontrolersastoji se od RAM-a i ROM memorija za pohranu uputa.

8051 Arctitecuture mikrokontrolera

8051 Arhitektura mikrokontrolera

Registar je glavni dio programa procesori imikrokontroleri koja se nalazi u memoriji koja omogućuje brži način prikupljanja i pohrane podataka. Programiranje 8051 asemblerskog jezika temelji se na memorijskim registrima. Ako želimo manipulirati podacima s procesorom ili kontrolerom izvođenjem oduzimanja, zbrajanja itd., To ne možemo učiniti izravno u memoriji, već su mu potrebni registri za obradu i pohranu podataka.Mikrokontrolerisadrže nekoliko vrsta registara koji se mogu razvrstati prema njihovim uputama ili sadržaju koji u njima djeluje.

Programi mikrokontrolera 8051 na skupštinskom jeziku

Asemblerski jezik sastoji se od elemenata u koje se svi koriste za pisanje programasekvencijalni način. Slijedite dana pravila za pisanje programiranja na asemblerskom jeziku.


Pravila o skupštinskom jeziku

  • Kôd sklopa mora biti napisan velikim slovima
  • Oznake mora slijediti dvotačka (oznaka :)
  • Svi simboli i naljepnice moraju počinjati slovom
  • Svi se komentari upisuju malim slovima
  • Posljednji redak programa mora biti naredba END

Мнеmotehnike skupnog jezika u obliku su op-koda, poput MOV, ADD, JMP itd., Koji se koriste za izvođenje operacija.

Op kod: Op-kod je jedna uputa koju CPU može izvršiti. Ovdje je op-kod MOV uputa.

Operandi: Operandi su jedan dio podataka kojim se može upravljati pomoću op-koda. Primjerice, operaciju množenja izvode operandi koji se množe operandom.

Sintaksa: MUL a,b

Elementi programiranja skupštinskog jezika:

  • Sastavite smjernice
  • Set uputa
  • Adresiranje načina

Upute za sastavljanje:

Smjernice za sastavljanje daju upute za CPU. 8051mikrokontrolersastoji se od različitih vrsta direktiva o montaži kako bi se dao smjer upravljačkoj jedinici. Najkorisnije su smjernice programiranje 8051, kao što su:

  • ORG
  • DB
  • EQU
  • KRAJ

ORG(podrijetlo): Ova direktiva označava početak programa. To se koristi za postavljanje adrese registra tijekom montaže. Na primjer, ORG 0000h kompajleru govori sav sljedeći kod koji počinje na adresi 0000h.

Sintaksa: ORG 0000h

DB(definiraj bajt): Definirani bajt koristi se za dopuštanje niza bajtova. Na primjer, ispišite 'EDGEFX', pri čemu svaki znak uzima adresa, a na kraju DB ispisuje 'niz' izravno dvostrukim navodnicima.

Sintaksa:

ORG 0000h

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

EQU (ekvivalent): Ekvivalentna direktiva koristi se za izjednačavanje adrese varijable.

Sintaksa:

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

KRAJ: Direktiva END koristi se za označavanje završetka programa.

Sintaksa:

reg jednako,09h

—————–
—————–
MOVreg,# 2h
KRAJ

Načini adresiranja:

Način pristupa podacima naziva se način adresiranja. CPU može pristupiti podacima na različite načine pomoću načina adresiranja. 8051mikrokontrolersastoji se od pet načina adresiranja kao što su:

  • Način neposrednog adresiranja
  • Registrirajte način adresiranja
  • Način izravnog adresiranja
  • Način neizravnog adresiranja
  • Način adresiranja osnovnog indeksa

Način neposrednog adresiranja:

U ovom načinu adresiranja izvor mora biti vrijednost koju može slijediti znak '#' i mora biti odredište SFR registri, registri opće namjene i adresa. Koristi se za trenutno spremanje vrijednosti u memorijske registre.

Sintaksa:

MOV A, # 20h // A jeanregistar akumulatora, 20 je pohranjen u A //
MOV R0,# 15 // R0 je registar opće namjene 15 je pohranjen u R0 registar //
MOV P0, # 07h // P0 je SFR registar07 pohranjen u P0 //
MOV 20h,# 05h // 20h je adresa registra 05 pohranjenog u 20h //

Prijašnji:

MOV R0, # 1
MOV R0, # 20 // R0<—R0[15] +20, konačna vrijednost pohranjena je u R0 //

Način registracije adresiranja:

U ovom načinu adresiranja izvor i odredište moraju biti registar, ali ne i registri opće namjene. Dakle, podaci se ne premještaju unutar datoteke bankarski registri opće namjene .

Sintaksa:

MOV A, B // A je SFR registar, B je registar opće namjene //
MOV R0, R1 // Neispravna uputa, GPR na GPR nije moguć //

PRIJAŠNJI:

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

Način izravnog adresiranja

U ovom načinu adresiranja izvor ili odredište (ili i izvor i odredište) moraju biti adresa, ali ne i vrijednost.

Sintaksa:

MOV A,20h // 20h je adresa A je registar //
MOV 00h, 07h // oba su adresirana od GPS registara //

Prijašnji:

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

Način neizravnog adresiranja:

U ovom načinu adresiranja mora biti izvor ili odredište (ili odredište ili izvor)doneizravna adresa, ali ne i vrijednost. Ovaj način adresiranja podržava koncept pokazivača. Pokazivač je varijabla koja se koristi za pohranu adrese druge varijable. Ovaj koncept pokazivača koristi se samo za registre R0 i R1.

Sintaksa:

MOVR0, # 01h // 01 vrijednost je pohranjena u R0 registar, R0 adresa je 08h //
MOV R1, # 08h // R1 je pokazivačka varijabla kojatrgovinamaadresa (08h) od R0 //
MOV 20h,Vrijednost @ R1 // 01 pohranjena je u 20-satnoj adresi GP registra //

Način neizravnog adresiranja

Način neizravnog adresiranja

Način adresiranja osnovnog indeksa:

Ovaj način adresiranja koristi se za čitanje podataka s vanjska memorija ili ROM memorija . Svi načini adresiranja ne mogu čitati podatke iz memorije koda. Kôd se mora pročitati kroz DPTR registar. DPTR se koristi za usmjeravanje podataka u kod ili vanjsku memoriju.

Sintaksa:

MOVC A, @ A + DPTR // C označava memoriju koda //
MOCX A, @ A + DPTR // X označava vanjsku memoriju //
PRIMJER: MOV A, # 00H // 00H pohranjen je u A registar //
MOV DPTR, # 0500H // DPTR točke 0500h adresa u memoriji //
MOVC A, @ A + DPTR // pošalju vrijednostdoregistar A //
MOV P0, A // datum slanja registratoru narudžbe //

Set uputa:

Skup uputa je struktura kontrolera ili procesora koja daje naredbe kontroloru za usmjeravanje kontrolera za obradu podataka. Skup uputa sastoji se od uputa, izvornih vrsta podataka, načina adresiranja, registara prekida, iznimnog rukovanja i arhitekture memorije. The 8051mikrokontroler mogu slijediti upute CISC-a s arhitekturom Harvarda. U slučaju programiranja 8051, različite vrste CISC uputa uključuju:

  • Set uputa za prijenos podataka
  • Set sekvencijalnih uputa
  • Set aritmetičkih uputa
  • Podružnica Instrukcijapostaviti
  • Set za navođenje petlje
  • Set uvjetnih uputa
  • Bezuvjetne upute postavljene
  • Set logičkih uputa
  • Set logičkih uputa

Set aritmetičkih uputa:

Aritmetičke upute izvode osnovne operacije kao što su:

  • Dodatak
  • Množenje
  • Oduzimanje
  • Podjela

Dodatak:

ORG 0000h
MOV R0, # 03H // premještanje vrijednosti 3 u registar R0 //
MOV A, # 05H // premještanje vrijednosti 5 u akumulator A //
Dodajte A, 00H //dodativrijednost s vrijednošću R0 i pohranjuje rezultatu//
KRAJ

Množenje:

ORG 0000h
MOV R0, # 03H // premještanje vrijednosti 3 u registar R0 //
MOV A, # 05H // premještanje vrijednosti 5 u akumulator A //
MUL A, 03H //Pomnoženorezultat se pohranjuje u akumulator A //
KRAJ

Oduzimanje:

ORG 0000h
MOV R0, # 03H // premještanje vrijednosti 3 u registar R0 //
MOV A, # 05H // premještanje vrijednosti 5 u akumulator A //
SUBB A, 03H // Vrijednost rezultata pohranjena je u akumulatoru A //
KRAJ

Podjela:

ORG 0000h
MOV R0, # 03H // premještanje vrijednosti 3 u registar R0 //
MOV A, # 15H // premještanje vrijednosti 5 u akumulator A //
DIV A, 03H // konačna vrijednost pohranjena je u akumulatoru A //
KRAJ

Uvjetne upute

CPU izvršava upute na temelju stanja provjerom statusa pojedinačnog bita ili bajta. 8051mikrokontrolersastoji se od različitih uvjetnih uputa kao što su:

  • JB -> Skoči dolje
  • JNB -> Skoči ako nije ispod
  • JC -> Skoči ako nosiš
  • JNC -> Skoči akoneNosi
  • JZ -> Skoči ako je nula
  • JNZ -> Skoči akoneNula
Uvjetne upute

Uvjetne upute

1. Sintaksa:

JB P1.0, naljepnica
- - - - - - - - -
- - - - - - - - -
Oznaka: - - - - - - - - -
- - - - - - - - -
KRAJ

2. Sintaksa:

JNB P1.0, naljepnica
- - - - - - - - -
- - - - - - - - -
Oznaka: - - - - - - - - -
- - - - - - - - -
KRAJ

3. Sintaksa:

JC, oznaka
- - - - - - - - -
- - - - - - - - -
Oznaka: - - - - - - - - -
- - - - - - - - -
KRAJ

4. Sintaksa:

JNC, oznaka
- - - - - - - - -
- - - - - - - - -
Oznaka: - - - - - - - - -
- - - - - - - - -
KRAJ
5. Sintaksa:

JZ, oznaka
- - - - - - - - -
- - - - - - - - -
Oznaka: - - - - - - - - -
- - - - - - - - -
KRAJ

6. Sintaksa:

JNZ, oznaka
- - - - - - - - -
- - - - - - - - -
Oznaka: - - - - - - - - -
- - - - - - - - -
KRAJ

Upute za poziv i skok:

Upute za poziv i preskakanje koriste se kako bi se izbjegla replikacija koda programa. Kada se neki specifični kod koristi više puta na različitim mjestima u programu, ako spomenemoodređeno imedokod ondato bismo ime mogli koristiti bilo gdje u programu bez unošenja koda za svaki put. To smanjuje složenost programa. Programiranje 8051 sastoji se od uputa za poziv i preskakanje poput LCALL, SJMP.

  • POZIV
  • POZIV
  • SJMP
  • LJMP

1. Sintaksa:

ORG 0000h
- - - - - - - - -
- - - - - - - - -
POZIV, oznaka
- - - - - - - - -
- - - - - - - - -
SJMP STOP
Oznaka: - - - - - - - - -
- - - - - - - - -
- - - - - - - - -
pravo
STOP:NOP

2. Sintaksa:

ORG 0000h
- - - - - - - - -
- - - - - - - - -
LCALL, oznaka
- - - - - - - - -
- - - - - - - - -
SJMP STOP
Oznaka: - - - - - - - - -
- - - - - - - - -
- - - - - - - - -
pravo
STOP:NOP

Upute za poziv i skok

Upute za poziv i skok

Upute petlje:

Upute petlje koriste se za ponavljanje bloka svaki put tijekom izvođenja operacija povećavanja i smanjivanja. 8051mikrokontrolersastoje se od dvije vrste uputa petlje:

  • CJNE -> usporedi i skoči ako nije jednako
  • DJNZ -> umanji i skoči ako nije nula

1. Sintaksa:

odCJNE
MOV A, # 00H
MOV B, # 10H
Označiti: INC A
- - - - - -
- - - - - -
CJNE A, etiketa

2. Sintaksa:

odDJNE

MOV R0, # 10H
Označiti: - - - - - -
- - - - - -
DJNE R0, etiketa
- - - - - -
- - - - - -
KRAJ

Set logičkih uputa:

Skup instrukcija mikrokontrolera 8051 pruža upute AND, OR, XOR, TEST, NOT i logičku logičku logiku za postavljanje i briše bitove na temelju potreba u programu.

Set logičkih uputa

Set logičkih uputa

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

Promjena operatora

Operatori smjene koriste se za učinkovito slanje i primanje podataka. 8051mikrokontrolersastoje se od četiri operatora smjene:

  • RR -> Rotiraj udesno
  • RRC -> Rotiraj udesno kroz nošenje
  • RL -> Rotiraj ulijevo
  • RLC -> Rotiraj lijevo kroz prijenos

Rotiraj udesno (RR):

U ovoj operaciji prebacivanja, MSB postaje LSB i svi se bitovi serijski pomiču prema desnoj strani.

Sintaksa:

MOV A, # 25h
RR A

Rotiraj ulijevo (RL):

U ovoj operaciji prebacivanja, MSB postaje LSB i svi se bitovi serijski pomiču prema lijevoj strani.

Sintaksa:

MOV A, # 25h
RL A

RRC rotiraj desno kroz nošenje:

U ovoj operaciji prebacivanja, LSB se pomiče za prijenos i nošenje postaje MSB, a svi se bitovi pomiču prema položaju malo po malo.

Sintaksa:

MOV A, # 27h
RRC A

RLC rotiraj lijevo kroz nošenje:

U ovoj operaciji prebacivanja, MSB se pomiče za prijenos i nošenje postaje LSB, a svi se bitovi pomiču prema lijevoj strani u položaju po bit.

Sintaksa:

MOV A, # 27h
RLC A

Osnovni ugrađeni C programi:

Themikrokontrolerprogramiranje se razlikuje za svaku vrstu operativnog sustava. Tamo su mnogi operativni sustavi kao što su Linux, Windows, RTOS i tako dalje. Međutim, RTOS ima nekoliko prednosti za razvoj ugrađenog sustava. Neki od primjera programiranja na razini Skupštine dati su u nastavku.

LED treperi pomoću 8051mikrokontroler:

  • Prikaz broja na 7-segmentnom zaslonu pomoću 8051 mikrokontrolera
  • Izračunavanje vremena i brojača i programiranje pomoću 8051mikrokontroler
  • Izračuni i programi serijske komunikacije pomoću 8051mikrokontroler

LED programi s 8051 Mmikrokontroler

1. WAP za prebacivanje LED dioda PORT1

ORG 0000H
TOGLE: MOV P1, # 01 //potez00000001 u registar p1 //
ODLAGANJE POZIVA // izvršiti odgodu //
MOV A, P1 // pomicanjevrijednost p1do akumulatora //
CPL A // dopuna vrijednosti A //
MOV P1, A // premjesti 11111110 u port1 registar //
ODLAGANJE POZIVA // izvršiti odgodu //
SJMP TOGLE
ODLOŽENJE: MOV R5, # 10H // registar opterećenja R5 sa 10 //
DVA: MOV R6, # 200 // registar opterećenja R6 sa 200 //
JEDAN: MOV R7, # 200 // registar učitavanja R7 sa 200 //
DJNZ R7, $ // smanjuje R7 dok ne postane nula //
DJNZ R6, JEDAN // smanjuje R7 dok ne postane nula //
DJNZ R5, DVA // smanjuje R7 dok ne postane nula //
RET // povratak na glavni program //
KRAJ

Izračun i programiranje brojača / brojača i programiranje pomoću 8051 Mmikrokontroler:

Kašnjenje je jedan od važnih čimbenika u razvoju aplikacijskog softvera. The mjerači vremena i brojači su hardverske komponentemikrokontroler, koji se koriste u mnogim aplikacijama za pružanje točnog vremenskog kašnjenja s brojanjem impulsa. Bostali se zadaci provode softverskom tehnikom.

1. WAP za izračunavanje kašnjenja od 500us.

MOV TMOD, # 10H // odabir načina odbrojavanja pomoću registara //
MOV TH1, # 0FEH // pohranjuje vrijeme kašnjenja u veći bit //
MOV TL1, # 32H // pohranjivanje vremena odgode u mali bit //
JNB TF1, $ // smanjuje vrijednost timera dok ne bude nula //
CLR TF1 // obrišite oznaku timeramalo//
CLR TR1 // ISKLJUČI timer //

2. WAP za prebacivanje LED diodasa sobom5sekvremensko kašnjenje

ORG 0000H
POVRATAK: MOV PO, # 00H
POZIVNO ODLAGANJE
MOV P0, # 0FFH
POZIVNO ODLAGANJE
SJUMP POVRATAK
ODLOŽENJE: MOV R5, # 50H // registar opterećenja R5 sa 50 //
ODGODA1: MOV R6, # 200 // registar opterećenja R6 sa 200 //
KAŠNJENJE2: MOV R7, # 229 // registar opterećenja R7 sa 200 //
DJNZ R7, $ // smanjuje R7 dok ne postane nula //
DJNZ R6, DELAY2 // smanjuje R6 dok ne postane nula //
DJNZ R5, DELAY1 // smanjuje R5 dok ne postane nula //
RET // povratak na glavni program //
KRAJ

3. WAP za brojanje 250 impulsa pomoću načina0 count0

Sintaksa:

ORG 0000H
MOV TMOD, # 50H // odabir brojača //
MOV TH0, # 15 // pomicanje impulsa za brojanje u viši bit //
MOV TH1, # 9FH //potezimpulsi za brojanje, donji bit //
SET TR0 // Uključi tajmer //
JNB $ // smanji vrijednost brojanja na nulu //
CLR TF0 // očistite brojač, zastavicumalo//
CLR TR0 // zaustavljanje odbrojavanja //
KRAJ

Programiranje serijske komunikacije pomoću 8051 Mmikrokontroler:

Serijska komunikacija se obično koristi za prijenos i primanje podataka. 8051mikrokontrolersastoje se od serijske komunikacije UART / USART, a signali se prenose i primajuTxi Rx igle. UART komunikacija prenosi podatke bit-by-bit serijski. UART je poludupleksni protokol koji prenosi i prima podatke, ali ne istodobno.

1. WAP za prijenos znakova na hiper terminal

MOV SCON, # 50H // postavljanje serijske komunikacije //
MOV TMOD, # 20H // odabir načina odbrojavanja //
MOV TH1, # -3 // postavljanje brzine prijenosa //
POSTAVITE TR1 // Uključi tajmer //
MOV SBUF, # ’S’ // prenosi S u serijski prozor //
JNB TI, $ // umanji vrijednost timera dok ne postane nula //
CLR RI // brisanje prekida prijema //
CLR TR1 // odbrojavanje vremena //

2. WAP za prijenos znaka Primanje putem hiper terminala

MOV SCON, # 50H // postavljanje serijske komunikacije //
MOV TMOD, # 20H // odabir načina odbrojavanja //
MOV TH1, # -6 // postavljanje brzine prijenosa //
SET TR1 // na tajmeru //
MOV SBUF, # ’S’ // prenosi S u serijski prozor //
JNB RI, $ // umanji vrijednost timera dok ne postane nula //
CLR RI // brisanje prekida prijema //
MOV P0, SBUF // pošalji vrijednost registra SBUF na port0 //
CLR TR1 // odbrojavanje vremena //

Ovo je sve o 8051 Programiranju na skupštinskom jeziku ukratko s primjerima temeljenim programima. Nadamo se da će ove odgovarajuće informacije o skupštinskom jeziku zasigurno biti korisne čitateljima i radujemo se njihovim vrijednim komentarima u odjeljku za komentare u nastavku.