Kako narediti vrata za sprejem mcs 51. Mikrokontrolerji MCS-51

UDK 681.5, 681.325.5 (075.8)

BBK 32.973.202-018.2 i 73

Ščerbina A.N.Računalniški stroji, sistemi in omrežja. Mikrokontrolerji in mikroprocesorji v krmilnih sistemih: Cheb. dodatek / A.N. Ščerbina, P.A. Nechaev-SPb.: Iz Politehnike. un-ta, 2012.-226 str.

Ustreza vsebini državnega izobraževalnega standarda za področja usposabljanja in specialnosti na področju upravljanja tehničnih sistemov, električne energije in elektrotehnike ter vsebini vzorčnega učnega načrta discipline "Računalniki, sistemi in omrežja".

Temeljna vprašanja logične organizacije mikroprocesorskih sistemov so obravnavana na primeru osnovne arhitekture družine mikrokrmilnikov MCS-51 podjetja Intel. Opisana je tehnologija programiranja mikrokontrolerjev v jezikih Assembler in SI.

Uporaben je lahko za študente in učitelje višjih tehničnih ustanov, strokovnjake za avtomatizacijo tehnoloških procesov in proizvodne opreme, pa tudi za načrtovalce mikroprocesorskih sistemov.

Prav tako ustreza vsebini državnega izobraževalnega standarda disciplin "Mikrokrmilniki in mikroprocesorji v krmilnih sistemih" in "Elektronske naprave za avtomatizacijo" diplomskega, inženirskega in magistrskega usposabljanja v smeri 140400 "Električna energija in elektrotehnika".

Izdano po sklepu uredniškega in založniškega sveta

Državna politehnična univerza v Sankt Peterburgu.

© Shcherbina A. N., Nechaev P. A., 2012

© Država Sankt Peterburg

politehnika, 2012

ISBN 978-5-7422-3553-8


Uvod.. 7

Poglavje 1. Arhitektura družine MCS51. 10

1.1 Splošne značilnosti 10

1.2 Blok diagram 11



1.3 8051 razporeditev pinov mikrokrmilnika 15

1.4 Organizacija spomina 17

1.4.1 Programski pomnilnik (ROM) 18

1.4.2 Podatkovni pomnilnik (RAM) 19

1.4.3 Registri posebnih funkcij. 20

1.4.4 Register zastavic (PSW) 23

1.5 Krmilna in sinhronizacijska naprava 26

1.6 Organiziranje V/I vrat 27

1.6.1 Splošne informacije. 27

1.6.2 Alternativne funkcije. 27

1.7. Časovniki / števci mikrokrmilnikov družine 8051. 28

1.7.1. Struktura časovnikov-števcev. 28

1.7.2 Načini delovanja časovnikov-števcev. trideset

1.8. Serijska vrata 32

1.8.1. Struktura serijskih vrat. 32

1.8.2. Nadzorni/statusni register oddajnika SCON.. 34

1.8.3. Register krmiljenja moči PCON.. 36

1.9. Sistem prekinitev 37

1.9.1. Struktura prekinitvenega sistema. 37

1.9.2 Izvajanje prekinitvene rutine. 40

Poglavje 2 Značilnosti mikrokrmilnika 80C51GB.. 42

2.1 Lastnosti 42

2.2 V/I vrata P0-P5 43

2.2.1 Delovanje V/I vrat. 43

2.2.2 Pisanje v vrata.. 46

2.3 Lastnosti prekinitvenega sistema 8XC51GB.. 49

Omogoči/onemogoči prekinitve. 50

Prekinite upravljanje prioritet. 51

zunanje prekinitve. 54

2.3. ADC vozlišče 56

2.4. Varuh strojne opreme 61

2.5. Zaznavanje okvare ure 63

2.6. Matrica programabilnih števcev RSA 64

2.6.1. Struktura PCA.. 64

2.6.2. PCA Counter Mode Register (CMOD) 66

2.6.3. Nadzorni register števca PCA (CON) 67

2.6.4. Primerjaj/popravi module. 68

2.7. Izboljšana serijska vrata 76

2.8. Časovniki/števci 79

Razporeditev pinov mikrokontrolerjev skupine 8XC51GB.. 86

Poglavje 3 Programiranje MK 8051GB.. 89

3.1. Model programske opreme 89

3.2 Tipi podatkov 93

3.3 Načini naslavljanja podatkov 93

3.4 Komandni sistem 95

3.4.1 Splošne značilnosti. 95

3.4.2 Vrste ukazov. 96

3.4.3 Vrste operandov. 97

3.4.4 Ukazi za prenos podatkov mikrokrmilnika. 98

3.4.5 Aritmetična navodila 8051.101

3.4.6 Logični ukazi MCU 8051. 104

3.4.7 8051 Bitni operacijski ukazi 106

3.5 Programi za odpravljanje napak 111

Poglavje 4. Programski jezik ASM-51. 112

4.2 Pisanje programskega besedila 113

4.3 Jezikovna abeceda. 114

4.4 Identifikatorji. 115

4.5 Številke 117

4.6 Direktive 118

4.7 Implementacija podprogramov v ASM51 122

4.7.1 Struktura podprograma-postopka v jeziku ASM51. 122

4.7.2 Posredovanje spremenljivk parametrov v podprogram. 123

4.7.3 Implementacija podprogramov-funkcij v jeziku ASM51. 123

4.7.4 Implementacija rutin za obravnavo prekinitev v jeziku ASM51. 124

4.8 Strukturirano programiranje v zbirnem jeziku. 125

4.9 Posebnosti prevajanja večmodulnih programov.. 126

4.10 Uporaba segmentov 128

4.10.1 Razdelitev pomnilnika MK na segmente .. 128

4.10.2 Absolutni spominski segmenti. 129

4.10.2 Premenljivi pomnilniški segmenti. 131

Poglavje 5. Programski jezik C-51. 134

5.1 Splošne značilnosti jezika 134

5.3 Struktura programov C-51 136

5.3. Elementi programskega jezika C-51 138

5.3.1. Simboli.. 138

5.3.2. Leksikalne enote, ločila in raba presledkov. 141

5.3.3 Identifikatorji 142

5.3.4 Ključne besede. 143

5.3.5 Konstante.. 143

5.4. Izrazi v jezikovnih izjavah 146

programiranje C-51 146

5.5. Prednostne naloge delovanja 148

5.6. Stavki programskega jezika C-51 149

5.6.1. operaterji deklaracije. 150

5.6.2 Izvršljivi stavki.. 150

5.6.3 Operator dodelitve. 151

5.6.4 Pogojni stavek. 151

5.6.5 Strukturni operator (). 152

5.6.6 Stavek zanke for. 152

5.6.7 Stavek zanke s preverjanjem pogojev do telesa zanke while. 153

5.6.8 Stavek zanke s preverjanjem pogoja za telesom zanke do while. 154

5.6.9 Stavek prekinitev. 155

5.6.10 Stavek za nadaljevanje. 155

5.6.11 Izjava o izbiri stikala. 155

5.6.12 Operator goto. 157

5.6.13 Operatorski izraz. 158

5.6.14 Vrni stavek iz podprograma return. 158

5.6.15 Prazen stavek. 158

5.7. Deklariranje spremenljivk v programskem jeziku C-51. 159

5.7.1. Deklaracija spremenljivke. 159

5.7.3 Celoštevilski podatkovni tipi. 161

5.7.4 Številke s plavajočo vejico. 162

5.7.5 Spremenljivke oštevilčenega tipa. 162

5.7.6. Deklariranje nizov v programskem jeziku C-51. 164

5.7.7. Strukture.. 165

5.7.8. Asociacije (mešanice) 166

5.8. Uporaba kazalcev v C-51 167

5.8.1. Deklariranje kazalcev. 167

5.8.2. Netipizirani kazalci. 168

5.8.3. Kazalci, odvisni od pomnilnika. 169

5.9. Deklaracija novih tipov spremenljivk 169

5.10. Inicializacija podatkov 170

5.11. Uporaba podprogramov v programskem jeziku C-51. 170

5.11.1. Definicija podprogramov.. 171

5.11.2. Parametri podprograma .. 173

5.11.3. Vnaprejšnja izjava o podprogramih.. 174

5.11.4 Klicanje podprogramov 176

5.11.5 Rekurzivni klic podprograma.. 176

5.11.6 Prekinitvene rutine. 177

5.11.7 Obseg spremenljivk in podprogramov 178

5.12. Večmodulni programi 179

Poglavje 6. Priprava programov v integriranem razvojnem okolju Keil μVision2. 182

6.1 Ustvarjanje projekta ASM-51 182

6.2 Primer ustvarjanja projekta C za vadbeni krmilnik v Keil μVision2 IDE 188

Poglavje 7 Opis učnega krmilnika .. 199

7.1. Struktura krmilnika 199

7.2. Naslovni prostor 200

7.2.1. Dodelitev pomnilnika. 200

7.2.2 Zunanji pomnilnik. 201

7.2.3. Notranji podatkovni pomnilnik. 202

7.3. Dodelitev V/I vrat 202

7.4. Serijska vrata………………………………...203

7.5. Delo z LCD 205

7.6. Krmilne plošče…………………………………………………213

PRILOGA P2 STRUKTURA POROČILA O LABORATORIJSKEM DELU……..217

Dodatek P3 Kode strojnih ukazov. 217

Reference ... 224


Uvod

Pri razvoju specialnosti, povezanih z avtomatizacijo tehnoloških procesov in proizvodnje, je študij mikrokrmilnikov eden od pomembnih delov.

V svetu se nenehno razvija in pojavlja vedno več 16- in 32-bitnih mikrokontrolerjev in mikroprocesorjev, vendar največji delež svetovnega trga mikroprocesorjev še vedno pripada 8-bitnim napravam. Po vseh napovedih analitičnih podjetij za bližnjo prihodnost se bo vodilni položaj 8-bitnih mikrokontrolerjev na svetovnem trgu nadaljeval.

Trenutno je med vsemi 8-bitnimi mikrokrmilniki družina MCS-51 nesporni vodja po številu sort in številu podjetij, ki proizvajajo njegove modifikacije. Ime je dobil po prvem predstavniku te družine - mikrokontrolerju 8051. Uspešen nabor perifernih naprav, prilagodljiva izbira zunanjega ali notranjega programskega pomnilnika in dostopna cena so zagotovili temu mikrokrmilniku uspeh na trgu.

Prednosti družine MCS-51:

arhitektura, ki je de facto standard;

Izjemna širina družine in pestrost priložnosti;

Razpoložljivost visoko zmogljivih in razširjenih različic procesorjev;

veliko število prosto dostopnih razvojnih programov in strojne opreme;

enostavnost programiranja strojne opreme, vključno s programiranjem v vezju;

nizki stroški in razpoložljivost osnovnih čipov;

Razpoložljivost specializiranih različic krmilnikov za posebne pogoje uporabe

Razpoložljivost različic krmilnikov z zmanjšano stopnjo elektromagnetnih motenj;

· široka priljubljenost med razvijalci starejše generacije, tako v svetu kot v državah CIS;

Podpora arhitekturi s strani vodilnih izobraževalnih ustanov sveta.

In končno, glavna prednost: ko obvladate osnovni čip družine, je enostavno začeti delati s takšnimi računalniškimi "pošastmi", kot so mikrokontrolerji Cygnal, Dallas Semiconductor, Analog Devices, Texas Instruments.

Družina MCS-51 vključuje celo vrsto mikrovezij od najpreprostejših mikrokontrolerjev do precej zapletenih. Do danes je več kot 200 modifikacij mikrokontrolerjev družine 8051, ki jih proizvaja skoraj 20 podjetij. Vsako leto je vedno več variant predstavnikov te družine.

Glavna področja razvoja so:

povečanje hitrosti (povečanje frekvence ure in preoblikovanje arhitekture);

zmanjšanje napajalne napetosti in porabe energije;

· povečanje količine pomnilnika RAM in FLASH na čipu z možnostjo programiranja v vezju;

· vpeljava kompleksnih naprav, kot so sistemi za krmiljenje pogonov, vmesniki CAN in USB ipd., v periferijo mikrokrmilnikov.

Mikrokrmilniki družine MCS-51 vam omogočajo opravljanje tako nalog krmiljenja različnih naprav kot izvajanja posameznih vozlišč analognega vezja. Vsa mikrovezja te družine delujejo z istim ukaznim sistemom. Večina jih je izvedena v istih primerih z enakim pinoutom (oštevilčenje nog za ohišje). To omogoča uporabo mikrovezij različnih proizvajalcev za razvito napravo brez spreminjanja sheme vezja naprave in programa.

Glavni proizvajalci sort 51. družine na svetu so Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems in številni drugi.

Značilnosti analogov mikrokontrolerjev družine MCS-51 (Intel 8XC51FA, 8XC51GB, 80C152) z naprednimi funkcijami so podane v tabeli. V 1.

Tabela B.1

Oven ROM SAR ADC WDT T/C Po porodu. Kanali Posebnosti
Atmel: AT89C2051
- - - - UART Flash 2 Kb
AT89C4051 - - - - UART Flash 4 Kb
AT89S4D12 128K - - - UART, SPI Flash 4 Kb
DALLAS Semiconductor: DS5000FP
- - - + UART zagonski nalagalnik
DS5001FP - - - + UART zagonski nalagalnik
DS8xC520 16K - - + 2xUART 2DPTR
SIEMENS: C505C
16K - + + UART, CAN 8DPTR
C515C 64K - + + UART+SSC+CAN 4 PWM, 8 DPTR
Philips: *89C51RA+
- + - + UART 2 DPTR, 4. nivo prekinitev, izklop, Flash 8K
P51XAG1x 8K - - + 2 UART-ja
Intel: 8xC51RA
8K - + + UART 4 ravni IRQ, izhodna ura
8XC196KC 64K 16K - + - UART 3 PWM
80C196KB 64K 8K - + - UART PWM

Poglavje 1 Družinska arhitektura MCS51

8-bitni mikrokontrolerji z enim čipom družine MCS-51 so zaradi svoje dobro zasnovane arhitekture pridobili veliko popularnost med razvijalci mikroprocesorskih krmilnih sistemov. Arhitektura mikrokrmilnika je niz notranjih in zunanjih programsko dostopnih strojnih virov in sistem ukazov. Arhitekturo družine MCS-51 v veliki meri določa njen namen - izdelava kompaktnih in poceni digitalnih naprav. Mikrokrmilniki, ki opravljajo vse funkcije mikroračunalnika z enim samim mikrovezjem, se imenujejo računalniki z enim čipom (OEVM).

Intel je izdal približno 50 modelov, ki temeljijo na operacijskem jedru mikrokontrolerja Intel 8051. Hkrati so mnoga druga podjetja, kot sta Atmel, Philips, začela s proizvodnjo svojih mikrokrmilnikov, razvitih v standardu MCS-51.

Splošne značilnosti

Glavne značilnosti družine:

· 8-bitna centralna procesna enota (CPU), osredotočena na nadzor izvršnih naprav;

· CPE ima vgrajeno vezje 8-bitnega strojnega množenja in deljenja števil;

Prisotnost v nizu navodil velikega števila operacij za delo z neposredno naslovljivimi biti omogoča govoriti o procesorju za delo z bitnimi podatki (Boolean procesor);

notranji (na čipu) programski pomnilnik maske ali reprogramabilnega tipa, ki ima prostornino od 4 do 32 Kb za različne kristale, v nekaterih različicah ga ni;

· vsaj 128 bajtov podatkovnega rezidenčnega RAM-a, ki se uporablja za organizacijo, banke registrov, sklad in shranjevanje uporabniških podatkov;

· najmanj 32 dvosmernih vmesniških linij (portov), ​​individualno konfiguriranih za vnos ali izhod informacij;

· dva 16-bitna večnačinovna števca/časovnika, ki se uporabljata za štetje zunanjih dogodkov, organiziranje časovnih zakasnitev in ura komunikacijskih vrat;

· Dvosmerni dupleksni asinhroni oddajnik-sprejemnik (UART), zasnovan za organizacijo komunikacijskih kanalov med mikrokrmilnikom in zunanjimi napravami s širokim razponom hitrosti prenosa informacij. Obstajajo sredstva za strojno-programsko integracijo mikrokontrolerjev v povezan sistem;

· dvonivojski prednostni prekinitveni sistem, ki podpira najmanj 5 prekinitvenih vektorjev iz 4 notranjih in 2 zunanjih virov dogodkov;

vgrajen taktni generator.

Strukturna shema

Blokovni diagram krmilnika je prikazan na sliki 1.1 in je sestavljen iz naslednjih glavnih funkcijskih enot: krmilne enote, aritmetično logične enote, enote časovnika/števca, serijskega vmesnika in prekinitvene enote, programskega števca, podatkovnega pomnilnika in programski pomnilnik. Dvostranska izmenjava poteka po interni 8-bitni podatkovni magistrali. Skoraj vsi predstavniki družine MCS-51 so zgrajeni po tej shemi. Različna mikrovezja te družine se razlikujejo le po registrih za posebne namene (vključno s številom vrat).

Krmilna in sinhronizacijska enota (časovno krmiljenje)- zasnovan za ustvarjanje sinhronizacijskih in krmilnih signalov, ki zagotavljajo koordinacijo skupnega delovanja enot OEVM v vseh dovoljenih načinih njegovega delovanja. Krmilna enota vključuje:

naprava za oblikovanje časovnih intervalov;

vhodno-izhodna logika;

register navodil;

register vodenja porabe električne energije;

ukazni dekoder, računalniška krmilna logika.

riž. 1.1. Strukturni diagram krmilnika I8051.

Naprava za razporejanje časa je namenjen generiranju in oddajanju notranjih sinhronizacijskih signalov faz, ciklov in ciklov. Število strojnih ciklov določa trajanje izvajanja navodil. Skoraj vsi ukazi OEVM se izvedejo v enem ali dveh strojnih ciklih, razen navodil za množenje in deljenje, katerih trajanje je štiri strojne cikle. Frekvenco nadrejenega oscilatorja označimo s F g. Trajanje strojnega cikla je 12/F g ali 12 obdobij signala nadrejenega oscilatorja. Vhodno-izhodna logika je zasnovana za sprejemanje in oddajanje signalov, ki zagotavljajo izmenjavo informacij z zunanjimi napravami preko vhodno/izhodnih vrat P0-P3.

Register ukazov je zasnovan za snemanje in shranjevanje 8-bitne operacijske kode ukaza, ki se izvaja. Operacijska koda se s pomočjo ukaznega dekoderja in računalniške krmilne logike pretvori v mikroprogram za izvajanje ukaza.

Register nadzora povpraševanja (PCON) omogoča zaustavitev delovanja mikrokrmilnika, da zmanjšate porabo energije in zmanjšate stopnjo motenj mikrokrmilnika. Še večje zmanjšanje porabe energije in zmanjšanje šuma lahko dosežemo z zaustavitvijo glavnega oscilatorja mikrokontrolerja. To lahko dosežete s preklapljanjem bitov v registru nadzora zahtev PCON. Za možnost izdelave nMOS (serija 1816 ali tuji čipi, ki nimajo črke "c" na sredini imena) vsebuje register za nadzor moči PCON samo en bit, ki nadzoruje hitrost prenosa serijskih vrat SMOD, in tam ni bitov za nadzor porabe energije.

Aritmetično logična enota (ALU) je vzporedna osembitna naprava, ki omogoča aritmetične in logične operacije. ALU sestavljajo:

zbiralni registri, hranilni registri TMP1 in TMP2;

konstante ROM;

seštevalnik;

dodatni register (register B);

baterija (ACC);

register statusa programa (PSW).

Registrirajte se zbiralni in hranilni registri- osembitni registri, namenjeni sprejemanju in shranjevanju operandov za čas trajanja operacij na njih. Ti registri niso programsko dostopni.

ROM konstante zagotavlja razvoj popravljalne kode za binarno-decimalno predstavitev podatkov, kode maske za bitne operacije in konstantne kode.

Vzporedni 8-bitni seštevalnik je kombinacijsko vezje s sekvenčnim prenosom, zasnovano za izvajanje aritmetičnih operacij seštevanja, odštevanja in logičnih operacij seštevanja, množenja, neekvivalence in istovetnosti.

Registracija B- osembitni register, ki se uporablja med operacijami množenja in deljenja. Za druga navodila se lahko obravnava kot dodaten register beležke.

Baterija- osembitni register, namenjen sprejemanju in shranjevanju rezultata, dobljenega pri izvajanju aritmetično-logičnih operacij ali operacij premikanja

Serijski vmesnik in prekinitveni blok (SIP) zasnovan za organizacijo vhoda - izhoda zaporednih informacijskih tokov in organizacijo sistema programskih prekinitev. Blok vključuje:

medpomnilnik PIP;

krmilna logika;

kontrolni register;

medpomnilnik oddajnika;

medpomnilnik sprejemnika;

oddajnik-sprejemnik serijskih vrat;

register prednostnih prekinitev;

register omogoči prekinitev;

logiko obdelave prekinitvene zastavice in shemo generiranja vektorjev.

Programski števec je zasnovan za oblikovanje trenutnega 16-bitnega naslova notranjega programskega pomnilnika in 8/16-bitnega naslova zunanjega programskega pomnilnika. Programski števec je sestavljen iz 16-bitnega PC medpomnilnika, PC registra in inkrementnega vezja (inkrementiranje vsebine za 1).

Podatkovni pomnilnik (RAM) je namenjen za začasno shranjevanje informacij, ki se uporabljajo med izvajanjem programa.

Vrata P0, P1, P2, P3 so kvazi dvosmerna vhodno-izhodna vrata in so zasnovana tako, da zagotavljajo izmenjavo informacij med OEVM in zunanjimi napravami, ki tvorijo 32 vhodno-izhodnih linij.

Register statusa programa (PSW) je namenjen shranjevanju informacij o stanju ALU med izvajanjem programa.

Programski pomnilnik (EPROM) zasnovan za shranjevanje programov in je pomnilnik samo za branje (ROM). Različna mikrovezja uporabljajo maskirane, UV-izbrisljive ali FLASH ROM-e.

Register podatkovnega kazalca (DPTR) zasnovan za shranjevanje 16-bitnega naslova zunanjega podatkovnega pomnilnika.

Kazalec sklada (SP) je osembitni register, namenjen organizaciji posebnega podatkovnega pomnilniškega območja (sklada), v katerega lahko začasno shranite katero koli pomnilniško celico.

1.3 8051 razporeditev pinov mikrokrmilnika(slika 1.2)

· U ss - potencial skupne žice ("zemlja");

U cc - glavna napajalna napetost +5 V;

· X1,X2 - zaključki za priključitev kvarčnega resonatorja;

· RST - vhod splošne ponastavitve mikrokrmilnika;

PSEN - dovoljenje za zunanji programski pomnilnik, izdano samo pri dostopu do zunanjega ROM-a;

· ALE - strob naslova zunanjega pomnilnika;

· EA - onemogoči notranji programski pomnilnik; raven 0 na tem vhodu povzroči, da mikrokrmilnik izvaja program samo iz zunanjega ROM-a; ignoriranje notranjega (če slednje obstaja);

riž. 1.2. Pin dodelitev 8051.

P1 - osembitna kvazi-dvosmerna vhodno/izhodna vrata, vsak bit vrat je mogoče programirati tako za vhod kot za izhod informacij, ne glede na status drugih bitov;

· P2 - osembitna kvazi-dvosmerna vrata, podobna P1, pini teh vrat se uporabljajo za izdajo informacij o naslovu pri dostopu do zunanjega programskega ali podatkovnega pomnilnika (če se uporablja 16-bitno naslavljanje slednjega). Poleg tega se zatiči vrat uporabljajo pri programiranju za vnos višjih bitov naslova v mikrokrmilnik;

· РЗ - osembitna kvazi-dvosmerna vrata, podobna R1, zatiči teh vrat lahko opravljajo številne alternativne funkcije, ki se uporabljajo pri delovanju časovnikov, serijskih V/I vrat, krmilnika prekinitev in zunanjih programski in podatkovni pomnilnik;

· P0 - multipleksirana osembitna dvosmerna vrata vhodno-izhodnih informacij, skozi ta vrata se v različnih časovnih točkah oddajo nizki bajt naslova in podatkov.

Organizacija spomina

Celotna serija MCS-51 ima harvardsko arhitekturo, torej ločena naslovna prostora za program in podatkovni pomnilnik. Struktura pomnilnika je prikazana na sl. 1.3.

Količina notranjega (rezidenčnega) programskega pomnilnika (ROM, EPROM ali OTP ROM), ki se nahaja na čipu, je odvisno od vrste mikrovezja lahko 0 (brez ROM-a), 4K (osnovni čip), 8K, 16K ali 32K. Po potrebi lahko uporabnik razširi programski pomnilnik z namestitvijo zunanjega ROM-a. Dostop do notranjega ali zunanjega ROM-a je določen z vrednostjo signala na pinu EA (zunanji dostop):

EA=V cc (napajalna napetost) - dostop do notranjega ROM-a;

EA=V ss (ozemljitveni potencial) - dostop do zunanjega ROM-a.

Pri čipih brez ROM-a mora biti pin EA trajno povezan z V ss.

riž. 1.3. Organizacija pomnilnika družine MCS-51

External ROM read strobe - (Program Store Enable) se ustvari pri dostopu do zunanjega programskega pomnilnika in je neaktiven med dostopom do ROM-a, ki se nahaja na čipu. Nizko naslovno območje programskega pomnilnika uporablja prekinitveni sistem. Arhitektura osnovnega čipa 8051 podpira pet virov prekinitev:

dve zunanji prekinitvi;

dve prekinitvi časovnikov;

prekinitve iz serijskih vrat.

Na sl. 1.4 prikazuje zemljevid spodnjega območja programskega pomnilnika.

riž. 1.4. Zemljevid spodnjega območja programskega pomnilnika

Programski pomnilnik (ROM)

Pri mikrokrmilnikih družine 8051 sta programski pomnilnik in podatkovni pomnilnik samostojni in neodvisni napravi, ki ju naslavljajo različni ukazi in krmilni signali.

Količina vgrajenega programskega pomnilnika, ki se nahaja na mikrokontrolerskem čipu 8051, je 4 KB (v družini do 32). Pri dostopu do zunanjega programskega pomnilnika vsi mikrokontrolerji 8051 vedno uporabljajo 16-bitni naslov, ki jim omogoča dostop do 64 KB ROM-a. Mikrokrmilnik dostopa do programskega pomnilnika, ko bere operacijsko kodo in operande (s programskim števcem osebnega računalnika), kot tudi pri izvajanju ukazov za kopiranje bajta iz programskega pomnilnika v akumulator. Pri izvajanju ukazov za kopiranje podatkov se lahko naslavljanje programske pomnilniške celice, iz katere se bodo prebrali podatki, izvaja tako z uporabo PC števca kot posebnega dvobajtnega registra podatkovnega kazalca DPTR.

Podatkovni pomnilnik (RAM)

Količina podatkovnega pomnilnika na čipu je 128 bajtov. Zunanji podatkovni pomnilnik je lahko velik do 64 KB. Prvih 32 bajtov je organiziranih v štiri banke registrov splošnega namena, imenovane banka 0 - banka 3. Vsak od njih je sestavljen iz osmih registrov R0-R7. V vsakem trenutku je programu na voljo, z naslavljanjem registrov, le ena banka registrov, katerih število je vsebovano v tretjem in četrtem bitu statusne besede programa PSW.

8051 naslovi bitnega območja mikrokrmilnika

Tabela 1.1

Bajtni naslov (Hex) Bit naslovi za bit
D7 D6 D5 D4 D3 D2 D1 D0
2F 7F 7E 7D 7C 7B 7A
2E
2D 6F 6E 6D 6C 6B 6A
2C
2B 5F 5E 5D 5C 5B 5A
2A
4F 4E 4D 4C 4B 4A
3F 3E 3D 3C 3B 3A
2F 2E 2D 2C 2B 2A
1F 1E 1D 1C 1B 1A
0F 0E 0D 0C 0B 0A
20h

Preostali naslovni prostor lahko razvijalec konfigurira po lastni presoji: lahko sprejme področja sklada, sistemskih in uporabniških podatkov. Do podatkovnih pomnilniških celic lahko dostopate na dva načina. Prvi način je neposredno naslavljanje pomnilniške celice. V tem primeru je naslov celice operand ustreznega ukaza. Drugi način je posredno naslavljanje z uporabo kazalnih registrov R0 ali R1: pred izvedbo ustreznega ukaza mora eden od njih vsebovati naslov celice, do katere je potrebno dostopati.

Za dostop do zunanjega podatkovnega pomnilnika se uporablja samo posredno naslavljanje z uporabo registrov R0 in R1 ali z uporabo 16-bitnega kazalnega registra DPTR.

Del podatkovnega pomnilnika je bitno območje, ki ima možnost uporabe posebnih bitnih ukazov za naslavljanje vsake številke pomnilniških celic. Naslov neposredno naslovljivih bitov lahko zapišemo tudi v obliki (ByteAddress).(Bit). Ujemanje med tema dvema metodama naslavljanja je mogoče določiti iz tabele. 1.1.

Intel je začetnik družinske arhitekture MCS-51, ki je dobila ime po prvem predstavniku te družine - mikrokrmilniku 8051, izdanem leta 1980 na osnovi tehnologije n-MOS. Dober nabor perifernih naprav, prilagodljiva izbira zunanjega ali notranjega programskega pomnilnika in dostopna cena so poskrbeli za uspeh tega mikrokrmilnika na trgu. S tehnološkega vidika je bil mikrokrmilnik 8051 za svoj čas zelo kompleksen izdelek - v kristalu je bilo uporabljenih 128 tisoč tranzistorjev, kar je bilo 4-kratno število tranzistorjev v 16-bitnem mikroprocesorju 8086. Ta mikrokrmilnik ostaja jedro družine MCS-51 do danes.

Glavni elementi osnovne arhitekture družine (arhitektura mikrokontrolerjev 8051) so:

8-bitni ALU;

4 banke registrov, po 8 v vsaki;

Notranji (rezidenčni) programski pomnilnik 4 KB, tipa ROM ali EPROM (8751);

Notranji (rezidenčni) podatkovni pomnilnik 128 bajtov;

21 posebnih funkcijskih registrov;

Boolov procesor;

Dva 16-bitna časovnika/števca;

Krmilnik serijskih vrat (UART);

Krmilnik prekinitev z dvema nivojema prioritete;

Štiri 8-bitna V/I vrata, od katerih se dva uporabljata kot naslovno/podatkovno vodilo za dostop do zunanjega programskega in podatkovnega pomnilnika;

Vgrajen taktni generator.

Nato je bil izdan mikrokrmilnik 8052, ki je vseboval povečano količino rezidenčnega programskega in podatkovnega pomnilnika, uvedenega s tretjim časovnikom in ustrezno razširjenim krmilnikom prekinitev.

Naslednji temeljni korak v razvoju MCS-51 je bil prenos proizvodne tehnologije na CMOS (modifikacija 8xC51). To je omogočilo implementacijo načinov Idl (mirovanje) in Power Down (nizka poraba), ki zagotavljata močno zmanjšanje porabe energije kristala in odprla pot za uporabo mikrokrmilnika v hlapljivih aplikacijah, npr. avtonomne naprave na baterije.

In zadnja pomembna faza v razvoju MK 8051 s strani Intel je bila izdaja mikrokontrolerjev 8xC51FA / FB / FC in 8xC51RA / RB / RC, ki se za kratkost pogosto imenujejo 8xC51Fx in 8xC51Rx. Glavna značilnost te skupine kristalov je prisotnost specializiranega časovnika / števca (PCA). Poleg tega mikrokontrolerji 8xC51Rx dodatno vsebujejo časovnik čuvaj (WDT). Razmislite o arhitekturi in funkcionalnosti PCA podrobneje.

RSA vključuje:

16-bitni časovnik/števec;

Pet 16-bitnih vzorčnih in primerjalnih modulov, od katerih je vsak povezan z drugo linijo V/I vrat mikrokrmilnika.

Časovnik/števec služi vsem petim vzorčnim in primerjalnim modulom, ki jih je mogoče programirati za izvajanje ene od naslednjih funkcij:

16-bitno vzorčenje vrednosti časovnika na pozitivnem robu zunanjega signala;

16-bitno vzorčenje vrednosti časovnika na negativnem robu zunanjega signala;

16-bitno vzorčenje vrednosti časovnika na kateremkoli robu zunanjega signala;

16-bitni programabilni časovnik;

16-bitna hitra izhodna naprava;

8-bitni PWM.

Implementacija vseh naštetih funkcij poteka v PCA na strojni ravni in ne obremenjuje centralnega procesorja. To vam omogoča, da povečate skupno prepustnost, izboljšate natančnost meritev in obdelavo signalov ter zmanjšate odzivni čas mikrokrmilnika na zunanje dogodke, kar je še posebej pomembno za sisteme v realnem času. Izkazalo se je, da je PCA, implementiran v 8xC51Fx (8xC51Rx), tako

Imenovanje

maks. frekvenca (MHz)

ROM/EPROM (bajt)

števci

Na srečo je arhitektura teh mikrokrmilnikov postala industrijski standard, sam PCA pa je bil večkrat reproduciran v različnih modifikacijah MK 8051.

Nekatere značilnosti številnih mikrokontrolerjev MCS-51 proizvajalca Intel so podane v tabeli 1.1.

Sprva sta bila ozka grla arhitekture MCS-51 8-bitna baterijska ALU in razmeroma počasno izvajanje ukazov (12 zank je potrebnih za izvajanje najhitrejših ukazov).

Tabela 1.1

I/O

ADC vhodi x števk

periferija,

posebnosti

U hišni ljubljenček. (IN)

Možnost nizke napetosti

4 ravni IRQ, izhodna ura

4 ravni IRQ, izhodna ura

Nizkonapetostna različica 8xC51Fx

4 ravni IRQ, izhodna ura

4 ravni IRQ, izhodna ura

4 ravni IRQ, izhodna ura

frekvenca ure (MC sinhronizacijska frekvenca)). To je omejilo uporabo družinskih mikrokontrolerjev v aplikacijah, ki zahtevajo večjo zmogljivost in kompleksne izračune (16- in 32-bitni). Vprašanje temeljite posodobitve arhitekture MCS-51 je postalo nujno. Problem modernizacije je bil zapleten zaradi dejstva, da je bilo do začetka 90. let na področju programske in strojne opreme družine MCS-51 že ustvarjenih veliko dogodkov, v zvezi s katerimi je bila ena glavnih nalog oblikovanja Nova arhitektura je bila za izvajanje združljivosti strojne in programske opreme z razvojem, ki temelji na MCS -51.

Za rešitev tega problema je bila ustanovljena skupna skupina strokovnjakov iz Intel in Philips, vendar sta se poti teh dveh podjetij pozneje razšli. Posledično sta se leta 1995 pojavili dve bistveno različni družini: Intelov MCS-251/151 in Philipsov MCS-51XA (glej pododdelek 1.2).

Ključne značilnosti arhitekture MCS-251:

24-bitni linearni naslovni prostor, naslavljanje do 16 MB pomnilnika;

Arhitektura registra, ki omogoča, da se registri imenujejo bajti, besede in dvojne besede;

Način naslavljanja strani za hitrejše pridobivanje ukazov iz zunanjega programskega pomnilnika;

Čakalna vrsta navodil;

Razširjen nabor navodil, vključno s 16-bitnimi aritmetičnimi in logičnimi operacijami;

Razširjen naslovni prostor sklada (do 64 KB);

Izvedba najhitrejšega ukaza v 2 ciklih.

Nabor navodil MCS-251 vključuje dva nabora navodil – prvi nabor je kopija nabora navodil MCS-51, drugi pa je sestavljen iz razširjenih navodil, ki izkoriščajo arhitekturo MCS-251. Pred uporabo mikrokontrolerja ga je treba konfigurirati, tj. s programatorjem "zapiši" konfiguracijske bite, ki določajo, kateri od nizov ukazov bo postal aktiven po vklopu. Če namestite prvi niz navodil, bo v tem primeru MK družine MCS-251 združljiv z MCS-51 na ravni binarne kode. Ta način se imenuje binarni način. Če prvotno namestite nabor razširjenih navodil (izvorni način), bodo programi, napisani za MCS-51, zahtevali ponovno prevajanje z navzkrižnimi orodji za MCS-251. Source Mode vam omogoča uporabo arhitekture MCS-251 z največjo učinkovitostjo in doseganje najvišje zmogljivosti.

Za uporabnike, ki se osredotočajo na uporabo mikrokrmilnikov MCS-251 kot mehanske zamenjave za MCS-51, Intel izda mikrokrmilnike MCS-151, ki so že programirani v stanju binarnega načina.

Nekatere značilnosti številnih mikrokontrolerjev MCS-251/151 so podane v tabeli 1.1.

Trenutno Intel, usmerjen na trg procesorjev Pentium, omejuje proizvodnjo kristalov MCS-51. Na splošno lahko za določenega razvijalca to ostane neopaženo, razen če uporablja mikrokontrolerje 8xC51GB in 80C152Jx, ki med izdelki drugih podjetij nimajo natančnih analogov. Kot za vse ostale mikrokontrolerje iz družine MCS-51, jih druga podjetja vse večkrat posnemajo.

NAČRT PREDAVANJA

1. Uvod

2. Aritmetična in logična navodila

3. Ukazi za prenos podatkov

4. Logične operacije

5. Navodila za skok

1. Uvod

Komandni sistem MCS-51 podpira en niz navodil, ki je zasnovan za izvajanje 8-bitnih algoritmov za krmiljenje aktuatorjev. Možno je uporabiti hitre metode naslavljanja notranjega RAM-a z izvajanjem bitnih operacij na majhnih podatkovnih strukturah. Obstaja obsežen sistem za naslavljanje enobitnih spremenljivk kot neodvisnega podatkovnega tipa, ki omogoča uporabo posameznih bitov v logičnih in krmilnih ukazih Boolove algebre.

Načini naslavljanja : komplet navodil MCS-51 podpira naslednje načine naslavljanja. Neposredno naslavljanje: Operand je določen z 8-bitnim naslovom v navodilu. Neposredno naslavljanje se uporablja samo za spodnjo polovico notranjega podatkovnega pomnilnika in registrov SFR. posredno naslavljanje: Navodilo naslovi register, ki vsebuje naslov operanda. Ta vrsta naslavljanja se uporablja za zunanji in notranji RAM. Registre je mogoče uporabiti za določanje 8-bitnih naslovov R0 in R1 izbrana registrska banka ali kazalec sklada SP. Za 16-bitno naslavljanje se uporablja samo register podatkovnega kazalca. DPTR.

Navodila za registracijo : registri R0–R7 trenutno banko registra je mogoče nasloviti prek posebnih navodil, ki vsebujejo 3-bitno polje, ki označuje številko registra v samem navodilu. V tem primeru v ukazu ni ustreznega naslovnega polja. Operacije z uporabo posebnih registrov: nekatera navodila uporabljajo posamezne registre (na primer operacije akumulatorja, DPTR itd.). V tem primeru naslov operanda v navodilu sploh ni določen. Vnaprej je določena z operacijsko kodo.

Takojšnje konstante : konstanta je lahko neposredno v ukazu za operacijsko kodo.

Indeksno naslavljanje : Indeksirano naslavljanje se lahko uporablja samo za dostop do programskega pomnilnika in samo v načinu branja. V tem načinu se pregledujejo tabele v programskem pomnilniku. 16-bitni register ( DPTR ali programski števec) označuje osnovni naslov želene tabele, akumulator pa označuje vstopno točko vanjo.

Nabor ukazovima 42 mnemonik ukazov za določanje 33 funkcij tega sistema. Sintaksa večine ukazov zbirnega jezika je sestavljena iz mnemonike funkcije, ki ji sledijo operandi, ki določajo metode naslavljanja in tipe podatkov. Različne tipe podatkov ali načine naslavljanja določajo nastavljeni operandi, ne pa spremembe v mnemoničnem zapisu.

Sistem ukazov lahko pogojno razdelimo na pet skupin: aritmetični ukazi; logični ukazi; ukazi za prenos podatkov; navodila bitnega procesorja; ukazi za razvejanje in prenos. Spodaj so navedene oznake in simboli, ki se uporabljajo v ukaznem sistemu.

Tabela. Oznake in simboli, ki se uporabljajo v ukaznem sistemu

Oznaka, simbol

Namen

Baterija

Registri trenutno izbrane registrske banke

Številka naloženega registra, podana v ukazu

neposredno

Neposredno naslovljiv 8-bitni naslov notranje podatkovne lokacije, ki je lahko notranja podatkovna lokacija RAM (0-127) ali poseben funkcijski register SFR (128-255)

Posredno naslovljiva 8-bitna notranja podatkovna lokacija RAM

8-bitni neposredno podatki, vključeni v šifro operacije (COP)

podatkiH

MSB (15-8) takojšnjih 16-bitnih podatkov

podatkiL

Nizki biti (7-0) takojšnjih 16-bitnih podatkov

11-bitni ciljni naslov

naslovL

Najmanj pomembni deli ciljnega naslova

8-bitni predznačeni offset bajt

Neposredno naslovljiv bit, katerega naslov vsebuje CPC, ki se nahaja v notranjem podatkovnem RAM-u ali posebnem funkcijskem registru SFR

a15, a14...a0

Biti ciljnega naslova

Vsebina elementa X

Vsebina na naslovu, shranjenem v elementu X

Izpust M element X


+

*
IN
ALI
XOR
/X

Operacije:
dodatki
odštevanje
množenje
delitev
logično množenje (operacija IN)
logično seštevanje (operacija OR)
dodatek modul 2 (XOR)
inverzija elementa X

Funkcijska mnemonika je edinstveno povezana s posebnimi kombinacijami metod naslavljanja in tipov podatkov. Skupno je v sistemu poveljevanja možnih 111 takih kombinacij.

2. Aritmetična in logična navodila

Kako primer aritmetična navodila, lahko operacijo dodajanja izvedete z enim od naslednjih ukazov.

DODAJA,7 F 16 - vsebini registra A dodamo številko 7 F 16 in shranite rezultat v register A;

DODAJA,@ R0 - vsebini registra A dodati številko, katere naslov (@ – komercialni pri ) je shranjen v registru R 0 (posredno naslavljanje) in shrani rezultat v register A;

DODAJ A,R7- dodati vsebini registra A vsebino registra R 7 in rezultat shranimo v register A;

DODAJ A, #127- vsebini registra A dodajte številko, katere naslov pomnilniške celice je 127 ( # - simbol številke) in rezultat shranite v register T- ponovno A.

Vsa aritmetična navodila se izvedejo v enem strojnem ciklu razen ukaza INC DPTR(odmik podatkovnega kazalca DPTR na naslednji bajt), kar zahteva dva strojna cikla, pa tudi operacije množenja in deljenja, izvedene v 4 strojnih ciklih. Vsak bajt v notranjem podatkovnem pomnilniku je mogoče povečati ali zmanjšati brez uporabe akumulatorja.

Navodilo MUL AB izvede množenje (množenje) podatkov v akumulatorju s podatki v registru B, pri čemer zmnožek postavi v registra A (spodnja polovica) in B (višja polovica).

Navodilo DIV AB deli (deli) vsebino akumulatorja z vrednostjo v registru B, ostanek ostane v B, količnik pa v akumulatorju.

Navodilo DA A zasnovan za binarno-decimalne aritmetične operacije (aritmetične operacije na številih, predstavljenih v binarno-decimalni kodi). Binarno datoteko ne pretvori v binarno decimalno, vendar zagotovi pravilen rezultat samo pri seštevanju dveh BCD številk.

Primer logični ukaz: operacijo logičnega IN lahko izvedete z enim od naslednjih ukazov:

ANLA,7 F 16 - logično množenje vsebine registra A s številom 7 F 16 in rezultat se shrani v register A;

ANLA,@ R1 - logično množenje vsebine registra A s številko, katere naslov je shranjen v registru R 1 (posredno naslavljanje) in shranite rezultat v register A;

ANL A,R6- logično množenje vsebine registra A z vsebino registra R 6 in shrani rezultat v register A;

ANL A,#53 - logično množenje vsebine registra A s številom, katerega naslov pomnilniške celice je 53 16, in rezultat shrani v register A.

Vse logične operacije na vsebini akumulatorja se izvedejo v enem strojnem ciklu, ostale pa v dveh. Logične operacije se lahko izvajajo na katerem koli od spodnjih 128 bajtov notranjega podatkovnega pomnilnika ali na katerem koli registru SFR (registri posebnih funkcij) v načinu neposrednega naslavljanja brez uporabe baterije.

Operacije vrtenja RL A, RLC A itd. premaknejo vsebino akumulatorja za en bit v desno ali levo. V primeru cikličnega premika v levo se najmanj pomemben bit premakne na najpomembnejši položaj. V primeru desnega cikličnega premika se zgodi nasprotno.

Delovanje ZAMENJAVA A izvaja izmenjavo mlajših in višjih tetrad v akumulatorju.

3. Ukazi za prenos podatkov

Ekipa MOV dest,src omogoča prenos podatkov med notranjimi celicami RAM ali območjem registra posebnih funkcij SFR brez uporabe baterije. V tem primeru se lahko delo z zgornjo polovico notranjega RAM-a izvaja le v načinu posrednega naslavljanja in dostop do registrov SFR– samo v načinu neposrednega naslavljanja.

V vseh mikrovezjih MCS-51 sklad je postavljen neposredno v podatkovni rezidenčni pomnilnik in raste navzgor. Navodilo POTISNI najprej poveča vrednost v registru kazalca sklada SP, in nato potisne bajte podatkov na sklad. Ekipe POTISNI in POP se uporabljajo samo v načinu neposrednega naslavljanja (pri zapisovanju ali obnavljanju bajta), vendar je sklad vedno na voljo pri posrednem naslavljanju prek registra SP. Tako lahko sklad uporablja tudi zgornjih 128 bajtov podatkovnega pomnilnika. Enaki premisleki preprečujejo uporabo navodil sklada za naslavljanje registrov. SFR.

Navodila za prenos podatkov vključujejo 16-bitni prenos MOV DPTR,#podatki16, ki se uporablja za inicializacijo registra podatkovnega kazalca DPTR pri pregledovanju tabel v programskem pomnilniku ali za dostop do zunanjega podatkovnega pomnilnika.

Delovanje XCH A,bajt uporablja se za izmenjavo podatkov med akumulatorjem in naslovljenim bajtom. Ekipa XCHD A,@Ri podoben prejšnjemu, vendar le za nižje tetrade, ki sodelujejo pri izmenjavi operandov.

Za dostop do zunanjega podatkovnega pomnilnika se uporablja samo posredno naslavljanje. V primeru enobajtnih naslovov se uporabljajo registri R0 oz R1 trenutno registrsko banko, pri 16-bitnih pa register podatkovnega kazalca DPTR. Pri kateri koli metodi dostopa do zunanjega podatkovnega pomnilnika ima baterija vlogo vira ali sprejemnika informacij.

Za dostop do tabel v programskem pomnilniku se uporabljajo naslednji ukazi:

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

Vsebina ustreznega registra podatkovnega kazalca se uporablja kot osnovni naslov tabele. DPTR oz PC(programski števec), odmik pa je vzet iz A. Ta navodila se uporabljajo izključno za branje podatkov iz programskega pomnilnika, ne za pisanje vanj.

4. Logične operacije

Mikrovezja MCS-51 vsebujejo logični procesor. Notranji RAM ima 128 neposredno naslovljivih bitov. Prostor registra posebnih funkcij SFR lahko podpira tudi do 128 bitna polja. Bitna navodila izvajajo pogojne skoke, prenose, ponastavitve, inverzije ter operacije IN in ALI. Vsi navedeni biti so na voljo v načinu neposrednega naslavljanja.

Nosi bit CF v posebnem funkcijskem registru "program status word PSW' se uporablja kot enobitni Boolov akumulator procesorja.

5. Navodila za skok

Naslovi operacij skoka so v zbirnem jeziku označeni z oznako ali realno vrednostjo v pomnilniškem prostoru programa. Pogojni naslovi veje so sestavljeni v relativni odmik - bajt znaka, dodan programskemu števcu PCče je prehodni pogoj izpolnjen. Meje takih skokov ležijo med minus 128 in 127 glede na prvi bajt, ki sledi navodilu. V registru posebne funkcije "program status word PSW» ničelne zastavice ni, torej navodila JZ in JNZ preverite pogoj "enako nič" kot testiranje podatkov v akumulatorju.

Obstajajo tri vrste brezpogojnih navodil za vejo: SJMP, LJMP in AJMP– ciljni naslovi, ki se razlikujejo po formatu. Navodilo SJMP kodira naslov kot relativni odmik in zavzema dva bajta. Razdalja skoka je omejena na obseg od minus 128 do 127 bajtov glede na navodilo, ki sledi SJMP.

V navodilih LJMP ciljni naslov se uporablja kot 16-bitna konstanta. Ukaz je dolg tri bajte. Ciljni naslov se lahko nahaja kjer koli v programskem pomnilniku.

Ekipa AJMP uporablja 11-bitno naslovno konstanto. Ukaz je sestavljen iz dveh bajtov. Ko se ta ukaz izvede, se spodnjih 11 bitov števca naslovov nadomesti z 11-bitnim naslovom iz ukaza. Pet najpomembnejših bitov programskega števca PC ostani nespremenjen. Tako je mogoče narediti skok znotraj 2K-bajtnega bloka, ki vsebuje navodilo, ki sledi navodilu AJMP.

Obstajata dve vrsti navodil za klic podprograma: LCALL in KLIC. Navodilo LCALL uporablja 16-bitni naslov klicanega podprograma. V tem primeru se lahko podprogram nahaja kjerkoli v pomnilniku programa. Navodilo KLIC uporablja 11-bitni naslov podprograma. V tem primeru se mora klicani podprogram nahajati v istem 2K-bajtnem bloku z navodili, ki sledijo KLIC. Obe različici ukaza potisneta naslov naslednjega ukaza na sklad in ga naložita v programski števec. PC ustrezno novo vrednost.

Podprogram se konča z navodilom RET, ki vam omogoča, da se po ukazu vrnete na navodilo POKLIČITE. To navodilo odstrani povratni naslov iz sklada in ga naloži v programski števec. PC . Navodilo RETI uporablja se za vrnitev iz prekinitvenih rutin. Edina razlika RETI od RET je to RETI Obvesti sistem, da je obdelava prekinitve končana. Če v času izvršitve RETI drugih prekinitev ni, je identična RET.

Navodilo DJNZ zasnovan za nadzor cikla. Če želite zagnati zanko n ko morate v števec naložiti bajte z vrednostjo n in zaprite telo zanke z ukazom DJNZ, ki označuje začetek cikla.

Ekipa CJNE primerja svoja dva operanda kot nepredznačena cela števila in skoči na naslov, ki je v njem naveden, če primerjana operanda nista enaka. Če je prvi operand manjši od drugega, potem je prenosni bit CF nastavite na "1".

Vsa navodila v sestavljeni obliki zasedajo 1, 2 ali 3 bajte.

Osnovna različica MCS-51 Kratke informacije. Sodobni 8-bitni mikrokontrolerji (MC) imajo takšne vire za krmiljenje v realnem času, za katere so bile prej uporabljene drage veččipne postavitve v obliki ločenih mikroračunalniških plošč, in sicer:

● imeti zadostno kapaciteto pomnilnika, njegovo fizično in logično razdelitev na programski pomnilnik in podatkovni pomnilnik (arhitektura Harvarda) ter ukazni sistem, usmerjen v izvajanje krmilnih algoritmov;

● vključujejo vse naprave (procesor, ROM, RAM, vhodno/izhodna vrata, prekinitveni sistem, orodja za obdelavo bitnih informacij itd.), potrebne za implementacijo mikroprocesorskega krmilnega sistema z minimalno konfiguracijo. V sedemdesetih letih prejšnjega stoletja je podjetje Intel razvili in obvladali komercialno proizvodnjo družine 8-bitnih mikrokrmilnikov MCS-48, ki jih združujejo številne skupne značilnosti (številčna zmogljivost, ukazni sistem, nabor osnovnih funkcijskih blokov itd.). Osnovna različica te družine vključuje:

● 8-bitni procesor;

● notranji programski pomnilnik (1/2/4K bajtov);

● notranji podatkovni pomnilnik (64/128/256 bajtov);

● do 27 notranjih in 16 zunanjih V/I linij;

● en 8-bitni časovnik-števec;

● enonivojski prekinitveni sistem z dvema viroma zahtev. Leta 1980 je isto podjetje razvilo novo družino osembitnih mikrokontrolerjev MCS-51, ki je združljiva z arhitekturo družine MCS-48, vendar ima širše zmožnosti.

Arhitektura družine MCS-51 se je izkazala za tako uspešno, da je še danes eden od standardov za 8-bitne MK. Zato so bili za predmet študije izbrani MC-ji te družine, ki se pogosto uporabljajo v razmeroma enostavnih krmilnih sistemih.

Za družino MCS-51 so bila razvita različna orodja za pripravo programov (prevajalniki, strojno-programski emulatorji itd.) in obstaja veliko število knjižnic standardnih podprogramov. Družina vključuje različne modifikacije mikrovezij (različice čipov) mikrokontrolerjev. Članki tega razdelka dovolj podrobno obravnavajo osnovno različico mikrokrmilnikov družine MCS-51 (mikrovezje 8051 ustreza domačemu analogu KP1816BE51), ki je najpreprostejši v strukturnem in funkcionalnem smislu ter v smislu razumevanja.

Naslednje serije mikrovezij, medtem ko ohranjajo združljivost z osnovno različico, se od nje razlikujejo po izboljšani tehnologiji izdelave, električnih parametrih, dodatni strojni opremi in funkcionalnosti. Naslednji članki so posvečeni strukturnim in funkcionalnim značilnostim naslednjih modifikacij mikrovezij družine MCS-51.
Posplošen blokovni diagram MCS–51. Sestava MC, katere posplošen blok diagram je prikazan na sl. 7.1.1, vključuje:

● 8-bitna centralna procesna enota CPE, sestavljena iz ALU, krmilne naprave uu in generator naslovov F;

● maskiran ROM s kapaciteto 4K bajtov za shranjevanje programov;

● 128 bajtov RAM za shranjevanje podatkov;

● štiri programabilna vrata Р0–Р3 za vhod-izhod informacij;

● blok serijskega vmesnika BPI za izmenjavo informacij z zunanjimi napravami po dvožilni liniji;

● blok časovnikov/števcev BT/C za vzdrževanje načina v realnem času;

● Blok prekinitev BP za organiziranje prekinitev izvršljivih programov. Ta sredstva tvorijo rezident del mikrokontrolerja, ki se nahaja neposredno na čipu. MC vključuje veliko število registrov, ki so dodeljeni ločenim funkcijskim blokom in niso prikazani na diagramu.

Diagram tudi ne prikazuje krmilnih tokokrogov. Dvostranska izmenjava informacij med bloki se izvaja preko notranjega 8-bitnega podatkovno vodilo SD-8.

Z notranjim 16-bitnim naslovno vodilo SHA-16 je naslov, oblikovan v CPE, prikazan v ROM-u (12 bitov naslova) in v RAM-u (8 nizkih bitov).

Pri uporabi zunanjega pomnilnika je 8 nižjih bitov naslova izhodnih v vrata P0, 3 ali 8 bitov višjega reda pa v vrata P2.

Za logično razširitev vmesnika se uporablja kombinacija funkcij vratnih linij. Kot primer na sl. 7.1.1 črtkana črta prikazuje črte priključka P3, ki delujejo alternativa funkcije prenosa krmilnega signala, katerih namen bo obravnavan v nadaljevanju. Za ustvarjanje notranjega taktnega generatorja sta na izhode mikrovezja MK priključena kvarčni resonator in dva kondenzatorja (slika 7.1.1). Namesto notranjega taktnega generatorja lahko za sinhronizacijo uporabimo zunanji oscilator. Konvencionalna grafična oznaka mikrovezja MK je prikazana na sl. 7.1.2, oznaka in namen zaključkov - v tabeli. 7.1.1. Upoštevajte funkcionalne bloke MK in načelo njihovega delovanja. Aritmetično-logična naprava. Aritmetično-logična enota je zasnovana za izvajanje aritmetičnih (vključno z množenjem in deljenjem) in logičnih operacij na osembitnih operandih, kot tudi operacij logičnega premika, ničlenja, nastavitve itd. Blokovni diagram ALU je prikazan na sl. 7.1.3.

ALU vključuje

● vzporedni osembitni seštevalnik Kombinacijski tip SM z zaporednim prenosom, ki izvaja aritmetične (seštevanje in odštevanje) in logične (seštevanje, množenje, dispariteta in istovetnost) operacije;

baterija A, zagotavljanje funkcij glavnega aritmetičnega registra;

register B, ki se uporablja za izvajanje operacij množenja in deljenja ali kot dodatni superoperacijski register, katerega funkcije določi uporabnik;

registri(programsko ni na voljo) začasna hrambaРВХ1, РВХ2, namenjeni za sprejem in shranjevanje operandov v času trajanja operacije;

● ROM konstante ROM, ki hrani korekcijsko kodo za binarno-decimalno predstavitev podatkov, kodo maske za bitne operacije in konstantno kodo;

register statusnih besed programa PSW, ki določa stanje ALU po izvedbi operacije. V tabeli. 7.1.2 podaja informacije o dodelitvi bitov posameznim cifram registra PSW. Krmilna naprava. Krmilna enota CPU (CU) namenjeno koordinirati skupno delo vseh MK vozlišč z uporabo generiranih taktnih in krmilnih signalov. Vključuje (slika 7.1.4):

sinhronizacijska in krmilna enota USU, ki generira taktne impulze, ki določajo strojne cikle in njihova posamezna stanja (S) in faze (P), in glede na način delovanja MK generira potreben niz krmilnih signalov. Za izvedbo ukaza so dodeljeni en, dva ali štirje strojni cikli.

Vsak strojni cikel ima šest držav S1–S6, A vključuje vsako stanje dvofazni P1, P2, katerih trajanje je nihajna doba generatorja takta T 0SC .

Trajanje strojnega cikla je 12T 0SC. Vsi strojni cikli so enaki, začenši s fazo S1P1 in konča s fazo S6P2.

Poleg taktnih impulzov ura v vsakem strojnem ciklu ustvari dva (včasih enega) stroboskopska signala nizkega bajta naslova ALE v obliki pozitivnega impulza v fazah S1P2-S2P1 in S4P2-S5P1. Časovni diagrami na sl. 7.1.5 ponazoriti organizacijo strojnih ciklov;

● Register ukazov RK, ukazni dekoder DC in PLA, ki omogočata v vsakem strojnem ciklu oblikovanje niza mikrooperacij v skladu z mikroprogramom ukaza, ki se izvaja;

● vhodno-izhodna logika LVV za sprejem in izdajo signalov, ki zagotavljajo izmenjavo informacij med MC in zunanjimi napravami preko vrat Р0–Р3;

● Register PCON, ki ima en omogočen bit SMOD na položaju PCON.7 za podvojitev podatkovne hitrosti serijskih vrat. Preostali bitovi so rezervirani za prihodnjo uporabo.
Generator naslovov. Oblikovalnik naslovov (FA) ali PC ukazni števec, namenjeno za oblikovanje trenutnega 16-bitnega naslova programskega pomnilnika in 8/16-bitnega naslova zunanjega podatkovnega pomnilnika. Vključuje (slika 7.1.6):

● 16-bitni medpomnilnik B, ki komunicira med 8-bitnim podatkovnim vodilom SD in 16-bitnim notranjim vodilom (IS) generatorja naslovov;

● Shema inkrementa SI za povečanje vrednosti naslova trenutnega programskega pomnilnika za eno;

● register za shranjevanje trenutnega naslova PTA ukazov, ki prihajajo iz SI;

● Register podatkovnega kazalca DPTR , sestavljen iz dveh 8-bitnih registrov DPH in DPL. Služi za shranjevanje 16-bitnega naslova zunanjega podatkovnega pomnilnika in se lahko uporablja kot dva neodvisna programsko dostopna RON-ja;

● Register generatorja naslovov RFA za shranjevanje izvršilnega 16-bitnega programskega pomnilniškega naslova ali 8/16-bitnega zunanjega podatkovnega pomnilniškega naslova. Ta register se uporablja tudi za prenos podatkov prek vrat P0 na zunanje naprave pri izvajanju navodil MOVX @Rm, A in MOVX @DPRT, A.

Pomnilnik podatkov. Pomnilnik podatkov namenjeno za sprejemanje, shranjevanje in izdajanje informacij, ki se uporabljajo v procesu izvajanja programa. Notranji (rezidenčni) pomnilnik (slika 7.1.7) podatkov je sestavljen iz RAM-a s kapaciteto 128 bajtov, kazalec sklada SP, naslovni register RAM RA in dekoder Dsh. Kazalec sklada SP je 8-bitni register, ki prejme in shrani naslov lokacije sklada, do katere je bil zadnji dostop. Po ponastavitvi je kazalec sklada nastavljen na naslov 07H, kar ustreza začetku sklada z naslovom 08H. Naslovni register RA skupaj z dekoderjem Dsh omogoča dostop do želene pomnilniške celice, ki vsebuje bajt ali bit informacije.

MK omogoča povečanje količine podatkovnega pomnilnika do 64 KB s povezavo zunanje pomnilniške naprave. Kot primer na sl. 7.1.8 prikazuje ostranjevanje zunanjega podatkovnega pomnilnika VPD s kapaciteto 2K bajtov z uporabo navodil, kot je MOVX @ Rm(m = 0; 1). V tem primeru vrata P0 delujejo kot multipleksirano naslovno/podatkovno vodilo, tri vrstice vrat P2 se uporabljajo za naslavljanje zunanje strani RAM, preostalih pet vrstic pa se lahko uporablja kot V/I linije.
Na sl. 7.1.9 prikazuje časovne diagrame ciklov branja in pisanja, ko MK deluje z zunanjim RAM-om. Diagrami kažejo:

● PCN - visoki bajt števca ukazov PC;

● DPL, DPH - nizki in visoki bajti podatkovnega kazalnega registra DPTR, ki se uporablja kot posredni naslavljalni register v ukazih MOVX @DPTR,A in MOVX A,@DPTR;

● P2 SFR - zapahi vrat P2;

● Rm (m = 0, 1) - registri, ki se uporabljajo v ukazih MOVX @Rm, A in MOVX A, @Rm kot posredni naslovni registri;

● Z - stanje visoke odpornosti;

● D - obdobje, v katerem se podatki iz vrat P0 vnašajo v mikrokrmilnik. Programski pomnilnik. Programski pomnilnik je zasnovan za shranjevanje programov, ima svoj (ločen od podatkovnega pomnilnika) naslovni prostor in je samo za branje. Vključuje dekoder Dsh in ROM (slika 7.1.10). Programski pomnilnik je naslovljen s 16-bitnim PC števcem, tako da je njegova največja zmogljivost 64K bajtov. Notranji programski pomnilnik je sestavljen iz ROM-a s kapaciteto 4K bajtov in 12-bitnega dekoderja. Zunanji pomnilnik je priključen v skladu s shemo na sl. 7.1.11. Če je 0 V priključen na pin ¯EA enote MCU (kot je prikazano na sliki 7.1.11), je notranji programski pomnilnik onemogočen. Vsi dostopi do pomnilnika se začnejo na naslovu 0000h. Ko je pin ¯EA priključen na napajanje, se samodejno izvede dostop do notranjega programskega pomnilnika na naslovih 0000h–FFFFh in zunanjega programskega pomnilnika na naslovih 0FFFh–FFFFh.

Za branje zunanjega programskega pomnilnika MK se generira signal ¯PSEN. Pri delu z notranjim pomnilnikom se signal za branje ne uporablja. Pri dostopu do zunanjega programskega pomnilnika se vedno oblikuje 16-bitni naslov. Nizki bajt naslova se v prvi polovici strojnega cikla prenaša prek vrat P0 in se določi z rezom stroboskopa ALE v registru.V drugi polovici cikla se vrata P0 uporabljajo za vnos podatkovnega bajta iz zunanjega pomnilnika v MCU.

Visoki bajt naslova se prenaša skozi vrata P2 ves čas dostopa do pomnilnika.

Časovni diagrami ciklov branja in pisanja med delovanjem MK z zunanjim RAM-om so prikazani na sl. 7.1.12.
Diagrami kažejo:

● PCL OUT - nizkobajtni izhod števca ukazov PC-ja;

● PCN OUT - izdaja visokega bajta števca ukazov PC;

● DPH je visoki bajt podatkovnega kazalnega registra DPTR, ki se uporablja kot indirektni naslovni register v ukazih MOVX @DPTR,A in MOVX A,@DPTR;

● P2 SFR - zapahi vrat P2;

● INS IN - vnos ukaznega (ukaznega) bajta iz programskega pomnilnika;

● ADDR OUT - izdaja spodnjega bajta naslova zunanjega podatkovnega pomnilnika iz registrov Rm (m = 0, 1) ali iz registra DPL (spodnji register DPTR). V/I vrata. Dodelitev vrat. Vrata P0, P1, P2, P3 namenjeno za izmenjavo informacij med MK in zunanjimi napravami ter za izvajanje naslednjih funkcij:

● nizki bajt naslova А7…A0 je izhod skozi vrata Р0; bajt podatkov se izpiše iz MK in vnese v MK pri delu z zunanjim programskim pomnilnikom in zunanjim podatkovnim pomnilnikom (s časovno delitvijo);

● visoki bajt naslova A15…A8 je izhod preko vrat P2 pri delu z zunanjim programskim pomnilnikom in zunanjim podatkovnim pomnilnikom (samo pri uporabi ukazov MOVX A,@DPTR in MOVX @DPTR,A);

● Linije vrat P3 se lahko uporabljajo za izvajanje alternativnih funkcij, če je v zapah-zapah te linije vnesen 1, sicer je na izhodu linije fiksirana 0. Alternativne funkcije izhodov vrat P3 so podane v tabeli. 7.1.3.

Shematske značilnosti pristanišč

Na sl. 7.1.13 prikazuje diagrame za en kanal vsakega od vrat MK, vključno z:

● zapah za fiksiranje bita prejetih podatkov;

● izhodno ojačanje kaskada(voznik);

● vozlišče povezava z izhodna stopnja (razen P2);

● vezje za prenos podatkovnega bita z izhodne strani vrat, sestavljeno iz medpomnilnikov B2 in B3 (za vrata P4). Zapah je D-flip-flop, taktiran z notranjim signalom "Write to latch". Nekaj ​​podatkov iz neposrednega izhoda D-flip-flopa lahko prebere programska oprema prek medpomnilnika B1 s signalom "Read latch" na linijo notranjega podatkovnega vodila (SD) MK.

Izhodna stopnja vrata P0 so pretvornik, katerega značilnosti se kažejo v tem, da se obremenitveni tranzistor VT2 odpre le pri dostopu do zunanjega pomnilnika (pri prenosu naslovov in podatkov skozi vrata). V vseh drugih načinih je bremenski tranzistor zaprt. Zato je treba za uporabo P0 (slika 7.1.13, a) kot izhodna vrata splošnega namena na njegove izhode priključiti zunanje obremenitvene upore. Pri pisanju 1 v zapah vrat se pretvorniški tranzistor VT1 izklopi in zunanji zatič vrat P0.X se prenese v stanje visokega upora. V tem načinu lahko priključek P0.X služi kot vhod. Če se vrata P0 uporabljajo kot V/I vrata za splošen namen, lahko vsak od njegovih zatičev P0.X deluje neodvisno kot vhod ali kot izhod. Izhodne stopnje vrata P1, P2, P3 (slika 7.1.13, b, c, d) izdelan po vezjih pretvornikov z notranjim obremenitvenim uporom, ki se uporablja kot tranzistor VT2.

Za zmanjšanje preklopnega časa med prehodom izhodov vrat iz stanja 0 v stanje 1 je vzporedno z obremenitvenim tranzistorjem VT2 uveden dodaten tranzistor VT3. Tranzistor VT3 se s pomočjo elementov v vezju vrat odklene za čas, ki je enak dvema obdobjema nihanja glavnega kristalnega oscilatorja (med fazami S1P1, S2P2 strojnega cikla). Izhodne stopnje vrata P0, P2 (slika 7.1.13, A, c) z uporabo MX multiplekserja se lahko povežejo bodisi z zapahi bodisi z notranjimi vodili "Naslov / podatki" in "Naslov". Izhodna stopnja priključka P1 (slika 7.1.13, 6) je trajno povezana z zapahom.

Če je zatič vrat P3 izhod in njegov zapah vsebuje 1, potem njegovo izhodno stopnjo krmili notranji signal strojne opreme »Nadomestna izhodna funkcija«, ki zagotavlja ustrezno alternativno funkcijo, tj. na zunanjem zatiču se oblikuje eden od signalov ¯WR, ¯RD ali RxD. Če se zatič vrat uporablja kot vhod, potem se alternativni signal, ki pride do njega (TxD, ¯INT0, ¯INT1, T0, T1), prenese na notranjo linijo »Funkcija alternativnega vhoda«.

Način pisanja v vrata.

Ko je izdan ukaz za pisanje v vrata, se nova vrednost zapiše v zapah v fazi S6P2 in izpiše neposredno na izhodni zatič vrat v fazi S1P1 naslednjega strojnega cikla.

Način branja vrat

Ukazi za branje vrat berejo informacije neposredno z zunanjih zatičev zatičev vrat ali iz izhodov zapaha. V prvem primeru se podatkovni bit iz izhoda vrat programsko prebere skozi vmesni pomnilnik B2 s signalom "Brani izhodi" v linijo notranjega podatkovnega vodila (SD) MK. Upoštevajte, da signale "Write to latch", "Read latch", "Read pins" ustvari strojna oprema, ko se izvedejo ustrezni ukazi.

V drugem primeru je implementiran tako imenovani način "Read-Modify-Write", v katerem ukaz prebere statusni signal zapaha, ga po potrebi spremeni in nato zapiše nazaj v zapah. Način Branje-Spreminjanje-Pisanje se izvede, ko se izvedejo naslednji ukazi: ANL, ORL, XRL, JBC; CPL; I.N.C.; DEC; DJNC; MOV PX,Y; CLR PX.Y; SETB PX,Y.

Branje informacij iz izhodov zapaha odpravlja napake pri interpretaciji logičnega nivoja na zatiču vrat. Preberite nadaljevanje članka v.



Povezani članki: