337
Procesory z řady 8051 A/D a D/A převodníky, komparátory
Nízký příkon napájení 3,3V
Programová paměť Flash OTP-EPROM
Malá pouzdra pro plošnou montáž Redukované nebo rozšířené I/O vývody
Kapacita programu 1 až 64 kB
Jádro 80C51
Speciální funkce
EEPROM 640B až 2 kB
Kmitočet od 0 do 100MHz
Přístrojové sběrnice
PAM1-06
1
Do začátku devadesátých let minulého století vývoj procesorů s jádrem mikroprocesoru 8051 více méně stagnoval, výrobci se převážně soustředili na výrobu standardních typů a případně procesorů s rozšířeným počtem vstupně/výstupních bran a některých periferií. Změny v tomto trendu zahájila firma Atmel, která přinesla na trh procesory s programovou pamětí Flash, kterou si mohl naprogramovat v jednoduchém přípravku skoro každý amatér. Současně s tím začala firma vyrábět i procesory s redukovaným počtem vstupně/výstupních bran (obvykle P1 a P3), menší kapacitou programové paměti (1 až 4 kB) a někdy i vnitřní paměti RAM umístěných v pouzdru s 20 vývody. K tomuto trendu se přidali i jiní výrobci a redukované procesory případně rozšířili o jednou nebo více specializovaných periferií jako je 8-bitový A/D převodník, pulzně šířková modulace PWM nebo sběrnice I2C a umístili je do pouzder s až 28 vývody. Směr jednoduchých procesorů, které jsou určeny pro jednodušší řídící a kontrolní aplikace, dosáhl velké obliby a dnes se rozšiřuje až k procesorům s 8 vývody. Druhý a častěji využívaný směr vedl k vývoji procesorů, které jsou rozšířeny o další vstupně/výstupní brány, A/D a D/A převodníky, další čítače, časovače pro realizaci obvodu watchdog, komparační a záchytný systém, přístrojové sběrnice a případně pomocné jádro urychlující některé matematické operace. Tyto procesory se vyrábějí v závislosti na počtu periferií v pouzdrech s 44 (PLCC,QFP), 68 (PLCC), 80 (QFP) a 84 (PLCC) vývody.
1
337
Procesory z řady 8051 A/D a D/A převodníky, komparátory
Nízký příkon napájení 3,3V
Programová paměť Flash OTP-EPROM
Malá pouzdra pro plošnou montáž Redukované nebo rozšířené I/O vývody
Kapacita programu 1 až 64 kB
Jádro 80C51
Speciální funkce
EEPROM 640B až 2 kB
Kmitočet od 0 do 100MHz
Přístrojové sběrnice
PAM1-06
2
K největšímu počtu zlepšení a inovací u procesorů z řady 8051 dochází v posledních 6 letech. Proč se inovace realizují právě na těchto procesorech, které by s ohledem na rok vzniku (1979) měly patřit do historie? Důvodem je jednoduchost procesoru, který v současné době patří mezi nejpopulárnější 8bitové architektury na celém světě. Jeho instrukční soubor je jednoduchý, snadno pochopitelný a mezi návrháři procesorových systémů je velmi oblíbený. Mnoho instrukcí adresuje přímo V/V vývody, dovoluje rychlou manipulaci s externími periferiemi. Protože pro realizované projekty potřebují návrháři rychlejší přístup k některým periferiím a stále vyšší výpočetní výkon, přistoupilo několik výrobců k modifikaci časování těchto procesorů a následnému zrychlení instrukčního cyklu. Nejprve jednalo o přechod z 12 period synchronizačního signálu na instrukční cyklus na periody čtyři. S příchodem dalších výrobců se objevují procesory se šesti, dvěma a jednou periodou hodinového signálu na jeden strojový cyklus. Skutečný start v inovacích však zahájila firma Analog Devices, která se „snížila“ k zahájení výroby procesoru 8051 s 12 bitovým A/D převodníkem. S mírným zpožděním se k ní přidala i druhá firma (Texas Instruments) dominující v oblasti signálových procesorů, která přinesla na trh procesor s 24 bitovým sigma delta převodníkem. Výrazně inovuje svůj program firma Cygnal a následně se přidává firma ST Microelectronics (Thomson), která se výrobou těchto procesorů nezabývala. Příchod takto velkých firem, u kterých bychom před několika lety asi těžko předpokládali, že se začnou výrobou procesorů 8051 vůbec zabývat, vede v současnosti k překotnému vývoji těchto procesorů a zajišťuje jejich praktické využívání další dlouhá léta.
2
337
Procesory z řady 8051 A/D a D/A převodníky, komparátory
Nízký příkon napájení 3,3V
Programová paměť Flash OTP-EPROM
Malá pouzdra pro plošnou montáž Redukované nebo rozšířené I/O vývody
Kapacita programu 1 až 64 kB
Jádro 80C51
Speciální funkce
EEPROM 640B až 2 kB
Kmitočet od 0 do 100MHz
Přístrojové sběrnice
PAM1-06
3
Procesory jsou vybaveny interní programovou pamětí Flash od 1kB do 64kB výjimečně až do 288kB, případně pamětí EPROM od 2kB do 64kB, kterou lze programovat jenom jednou (provedení OTP). Provedení s mazatelnou pamětí EPROM (s okénkem) se prakticky nevyrábí a pokud ano, tak jejich cena mnohonásobně převyšuje provedení s pamětí Flash, která je něco dražší než provedení OTP. Datová paměť se pohybuje od 128B do 8kB a výjimečně až 32kB. Pro uchovávání kalibračních tabulek a konstant jsou procesory doplňovány pamětí EEPROM jejíž kapacita se pohybuje od 640B do 2kB, u některých typů lze využít až 16kB nebo více. Firmy zabývající se výrobou A/D a D/A převodníků oživily dosud stagnující výrobu procesorů s 8, 10 a maximálně 12 bitovým převodníkem a přinesly na trh procesory s 16 a 24 bitové sigma delta převodníky. Pro podporu připojení externích obvodů jsou procesory rozšířeny o přístrojové sběrnice I2C, SPI výjimečně 1-wire a pro multiprocesorovou komunikaci nově rozhraním TWI. Nejmenší typy procesorů (řadičů) mají omezený počet vstupně/výstupních vývodů až na hodnotu 6, ale existují i typy s rozšířeným počtem vývodů až na 8 V/V bran. Procesory jsou doplňovány komparačními a záchytnými systémy, pulsně šířkovou modulací případně hodinami reálného času. Spíše výjimečně některé firmy posilují výpočetní výkon procesoru rozšířenými aritmetickými jednotkami (koprocesory) jako např. Infineon 80C517A, Cygnal C8051F12x. Hodinový kmitočet se z původních 12MHz zvýšil až na 100MHz, ale hlavně někteří výrobci Dallas, Cygnal, Texas Instruments, Philips změnili vnitřní časování instrukčního cyklu procesoru z původních 12 hodinových synchronizačních cyklů na 6, 4, 2 a nakonec i jeden hodinový cyklus. V důsledku toho je při posuzování výpočetního výkonu nutno hledět nejenom na maximální hodinový kmitočet procesoru, ale i na počet cyklů, z kterých se skládá jeden instrukční cyklus. Některé procesory se ještě vyrábí v původním pouzdře DIL 40, ale většina výrobců postupně směřuje k pouzdrům menším jako je SOIC, PLCC, TQFP. Sjednocujícím základem všech těchto rozmanitých typů procesorů je vlastní jádro procesoru 8051 (80C51), které si
3
337
Jádro procesoru 8051 - Bloková struktura XTAL2
XTAL1
CPU
Řadič přerušení INT0 INT1 T0 T1
TxD RxD
Čítače
Generátor hodin
Vnitřní paměť RAM
Vnitřní paměť programu
Sériový kanál
PAM1-06
Řízení časování
EA RST ALE PSEN
V/V brána 0 data/adr.
P0
V/V brána 1
P1
V/V brána 2 vněj.adr.
P2
V/V brána 3 řízení
P3
4
Procesor 8051 je 8-bitový jednočipový mikroprocesor s harwardskou strukturou, u které je oddělena programová a datová paměť. Na obrázku je zobrazena jeho vnitřní struktura, která je schopna samostatné činnosti po připojení vnějšího piezokeramického rezonátoru ("krystalu") na vývody XTAL1 a XTAL2 a napájecího napětí 5V nebo 3,3V. Na čipu procesoru je umístěna vlastní procesorová jednotka (CPU), která je vnitřní sběrnicí propojena s pamětí programu Flash nebo EPROM (existují i typy bez této paměti), s pamětí RAM o kapacitě 128 bytů a se čtyřmi vstupně/výstupními branami P0 až P3, které zajišťují styk procesoru s vnějšími periferiemi. Nechceme-li využívat procesor v jednočipové konfiguraci případně nemůžeme (procesor není vybaven interní programovou pamětí), jsou z procesoru vyvedeny řídící signály pro správu vnější programové (PSEN) a datové (WR,RD) paměti, z nichž každá je přímo adresovatelná do kapacity 64kB. Pro snadnější styk s periferiemi je procesor vybaven řadičem přerušení, který zpracovává minimálně 5 zdrojů přerušení (2 externí, od každého ze dvou časovačů a od sériového kanálu). Jednotlivá přerušení mají definovanou prioritu na každé ze dvou volitelných úrovní priority. Čítače, které usnadňují realizaci časování, jsou 16-bitové s hodinovým signálem odvozeným z interního generátoru hodin nebo z vnějších vstupů T0 nebo T1. Pro snazší sériové spojení s nadřízenými počítači nebo jinými spolupracujícími procesory je vybaven duplexním (obousměrným) sériovým kanálem. Procesor je vybaven Booleovským procesorem, který umožňuje pracovat s jednotlivými bity vnitřní paměti RAM i interních periferií bez nutnosti čtení celých bytů a maskování potřebných bitů. Pro základní hodinový kmitočet 12MHz s 12 periodami hodinového kmitočtu na instrukční cyklus trvají instrukce 1µs nebo 2µs a nejdelší instrukce jsou pro násobení a dělení trvající 4µs.
4
337
Jádro procesoru 8051 – Organizace paměti Paměť programu FFFFh
Paměť dat FFH
Vnější paměť
1000h 0FFFh
EA=0 nebo 1 Vnější
Vnitřní
EA=0
EA=1
0000h
80H 7FH
Registry speciálních funkcí
FFFFh paměť
Vnitřní
Vnější Vnitřní
paměť
RAM
00H
RAM
Vnitřní EEPROM
0000h
Přístup instrukcemi MOVC @DPTR, A MOVC @DPTR, A
Vnější paměť RAM
Rozšířená
MOV adr, A MOV @Ri, A
MOVX @DPTR, A MOVX @DPTR, A MOVX @DPTR, A
Klasické 8051 – interní programová (2÷64kB) a datová (128B÷256B) paměť Inovované typy – disponují rozšířenou pamětí konstant EEPROM (640B ÷2kB), která je obvykle umístěna v datovém prostoru procesoru a rozšířenou datovou (1kB÷4kB) pamětí . Protože se oba prostory se adresově překrývají, jsou informace v nich uložené dostupné pomocí různých instrukcí MOVC (programová paměť-čtení) a MOV nebo MOVX (datová paměť čtení/zápis). Interní programová paměť – Flash nebo EPROM (EA=1) až do své kapacity, zbývající část adresového prostoru do 64kB je tvořena vnější pamětí. PAM2-06
5
Klasické mikroprocesory z řady 8051 jsou vybaveny programovou a datovou pamětí, inovované typy často disponují ještě pamětí konstant (EEPROM), která je obvykle umístěna v datovém prostoru procesoru obr.5.3. Protože oba prostory se adresově překrývají, jsou informace v nich uložené dostupné pomocí různých instrukcí MOVC (programová paměť-čtení) a MOV nebo MOVX (datová paměť čtení/zápis). Programová paměť je obvykle tvořena vnitřní pamětí Flash nebo EPROM (EA=1) až do své kapacity a ve zbývající části adresového prostoru do 64kB je umístěna vnější paměť programu. Je-li nastaveno EA=0, potom je celý adresový prostor rezervován pro vnější paměť programu. Pro uchování dat nebo konstant jsou moderní 8051 vybaveny několika typy datových pamětí, které nemají zcela ustálený způsob přístupu. Přístup do jednotlivých pamětí je realizován pomocí rozdílných instrukcí a případně je ještě ovlivňován příznaky. Tak je zabráněno kolizím při čtení z jednotlivých typů pamětí, které leží ve stejném adresovém prostoru. Zde se nejvíce projevuje stáří architektury tohoto procesoru, u kterého se nepočítalo s budoucími požadavky na datový prostor. Ten lze rozdělit, stejně jako u programové paměti, na vnitřní (umístěný na čipu) a vnější, který lze v případě potřeby vytvořit s pomocí dalších součástek.
5
337
Jádro procesoru 8051 – Organizace paměti Paměť programu FFFFh
Paměť dat FFH
Vnější paměť
1000h 0FFFh
EA=0 nebo 1 Vnější
Vnitřní
EA=0
EA=1
0000h
80H 7FH
Registry speciálních funkcí
FFFFh paměť
Vnitřní
Vnější Vnitřní
paměť
RAM
00H
RAM
Vnitřní EEPROM
0000h
Přístup instrukcemi MOVC @DPTR, A MOVC @DPTR, A
Vnější paměť RAM
Rozšířená
MOV adr, A MOV @Ri, A
MOVX @DPTR, A MOVX @DPTR, A MOVX @DPTR, A
PROBLÉM – dojde-li k desinterpretaci programu a procesor realizuje přístup do vnější programové paměti, začne měnit stav na branách P0 a P2, může ovlivňovat strategické periferie. Je-li nastaveno EA=0, potom je celý adresový prostor rezervován pro vnější paměť programu. Pro uchování dat nebo konstant jsou moderní 8051 vybaveny několika typy datových pamětí, které nemají zcela ustálený způsob přístupu (instrukcí, několika instrukcemi a nastavením příznaků). Tak je zabráněno kolizím při čtení z jednotlivých typů pamětí, které leží ve stejném adresovém prostoru. Datová paměť je rozdělena na vnitřní (umístěnou na čipu) a vnější, kterou lze vytvořit s pomocí dalších součástek. PAM1-06
6
Rozšířená vnitřní paměť RAM do kapacity 256 bytů leží v adresovém prostoru 80h až FFh a je přístupná pouze pomocí instrukcí nepřímého adresování (tj. např. MOV @Ri,A, kde Ri je aktuální R0 nebo R1). Vnější datová paměť RAM s kapacitou až do 64kB je přístupná přes 16-bitový pomocný ukazatel datové paměti DPTR. Ukazatel DPTR u běžných 8051 může být naplněn konkrétní adresou paměťového místa nebo inkrementován (INC DPTR). Instrukce dekrementace obvykle chybí a DPTR může být zmenšován pouze zmenšováním hodnot jeho dílčích částí tj. DPH a DPL. Vnější datová paměť může být přístupná i s pomocí registrů R0 a R1 příslušné aktivní banky, které se využívají k 8bitovému nepřímému adresování. Zápisem 8-bitové hodnoty do výstupní brány P2, která představuje horní část adresy při adresování vnější paměti, vybereme jeden z 256 bloků paměti RAM o 256 bytech. Nepřímým adresováním pomocí registrů R0 a R1 potom můžeme zapsat nebo přečíst vybraný byte ve zvoleném bloku externí datové paměti. Má-li procesor větší interní paměť RAM (>256bytů), potom část nad 256 bytů bývá umístěna jakoby ve vnějším adresovém prostoru a je přístupná pouze pomocí instrukce MOVX A, @DPTR nebo MOVX @DPTR, A. Podmínkou přístupu je nastavení nějakého bitu, který určuje zda se jedná o přistup do vnitřní paměti RAM nebo vnější paměti RAM. Označení tohoto bitu není ustálené a například u procesorů Atmel je označen EXTRAM. Je-li EXTRAM=0, potom se jedná o přístup do vnitřní paměti a instrukce MOVX neovlivňuje brány P0 ,P2 a signály WR nebo RD, jako u skutečného přístupu do vnější datové paměti. Je-li procesor vybaven vnitřní pamětí EEPROM, pak bývá přístupná jako vnější paměť dat (opět instrukcí MOVX) po nastavení bitu EEMEM=1 (Atmel) nebo nepřímo pomocí speciálních registrů (procesory ADuc od firmy Analog Devices).
6
337
Jádro procesoru 8051 – Interní datová paměť Dekadické adresy 127
PC
48 47
7FH Zbývající vnitřní paměť RAM 30H 2FH
32 31
R7
20H 1FH
24 23
R0 R7
18H 17H
Čítač instrukcí
Bitová oblast Banka 3
Banka 2 16 15
R0 R7
10H 0FH
8 7 6 5 4 3 2 1 0
R0 R7 R6 R5 R4 R3 R2 R1
08H 07H 06H 05H
Banka 1
R0
04H 03H 02H 01H 00H
Banka 0
P3 P2 P1 P0
B0H A0H 90H 80H
brány
DPH DPL
83H 82H
DPTR Ukazatel dat
SBUF SCON
99H 98H
Řízení
TH1 TL1 TH0 TL0 TCON TMOD
8DH 8BH 8CH 8AH 88H 89H
Čítač-časovač 0
PCON
87H
Řízení napájení
IE IP
A8H B8H
Řízení přerušení
Čítač-časovač 1
Řízení časovačů
SP
81H
PSW
D0H
Stavové slovo
B
F0H
Registr B
ACC
E0H
Střadač
PAM1-06
7
Na obrázku je základní rozdělení vnitřní datové paměti včetně umístění speciálních registrů. Základní vnitřní datový prostor leží od adresy 00h do 7Fh a speciální registry leží v prostoru 80h až FFh. Vnitřní datová paměť RAM obsahuje čtyři banky (0,1,2,3) po osmi registrech R0, R1, až R7 (adresy 00H 1FH), za kterými je vyhrazeno 16 bytů (adresy 20H-2FH) pro tzv. bitovou oblast. Jednotlivé bity paměťových míst počínaje nejnižší adresou (20h) a nejnižším bitem (b0 - adresa bitu 00h) jsou vzestupně přímo adresovatelné. Přímo adresovatelných bitů v této oblasti je 128 (posledním bitem s adresou 127 (7Fh) je bit b7 na adrese 2Fh). Dalších 128 adres (od 80h do FFh) se využívá k adresování některých významných bitů příslušejících speciálním registrům, jejichž adresa je dělitelná hodnotou 8 (80h, 88h, atd.). Zbývající datová paměť RAM počínaje adresou 30h a konče adresou 7Fh je uživateli volně přístupná pro přímé i nepřímé adresování až na prostor nezbytný pro umístění zásobníku. Je-li procesor vybaven rozšířenou vnitřní datovou pamětí, může být zásobník umístěn v tomto adresovém prostoru. Oblast speciálních funkcí (SFR) je tvořena minimálně 21 registry, které leží v adresovém prostoru 128 (80h) až 255 (FFh) za vnitřní pamětí RAM a ve stejném adresovém prostoru jako leží rozšířená datová paměť RAM u nástupců procesoru 8051. Z tohoto důvodu jsou speciální registry přístupné pouze pomocí přímého adresování bytů (např. MOV PSW,#data) nebo jednotlivých bitů některých registrů.
7
337
Jádro procesoru 8051 – Interní datová paměť Dekadické adresy 127
PC
48 47
7FH Zbývající vnitřní paměť RAM 30H 2FH
32 31
R7
20H 1FH
24 23
R0 R7
18H 17H
Čítač instrukcí
Bitová oblast Banka 3
Banka 2 16 15
R0 R7
10H 0FH
8 7 6 5 4 3 2 1 0
R0 R7 R6 R5 R4 R3 R2 R1
08H 07H 06H 05H
Banka 1
R0
04H 03H 02H 01H 00H
Banka 0
P3 P2 P1 P0
B0H A0H 90H 80H
brány
DPH DPL
83H 82H
DPTR Ukazatel dat
SBUF SCON
99H 98H
Řízení
TH1 TL1 TH0 TL0 TCON TMOD
8DH 8BH 8CH 8AH 88H 89H
Čítač-časovač 0
PCON
87H
Řízení napájení
IE IP
A8H B8H
Řízení přerušení
Čítač-časovač 1
Řízení časovačů
SP
81H
PSW
D0H
Stavové slovo
B
F0H
Registr B
ACC
E0H
Střadač
PAM1-06
8
Bitový (booleovský) procesor V procesorech 8051 je integrován bitový procesor, který má vlastní soubor instrukcí a střadač tvořený příznakem přenosu, pracujícím nad bitově adresovatelnou částí vnitřní paměti RAM (128 bitů) a bity speciálních registrů nebo vstupně/výstupních bran (128 bitů). Bitový procesor umožňuje nastavení, nulování a inverzi bitu, přesun hodnoty bitu je umožněn pouze s pomocí bitového střadače. Výkon procesoru zvyšují instrukce větvení programu v závislosti na hodnotě daného bitu (JB bit, rel.adresa) nebo větvení podle nastaveného bitu s jeho následným vynulováním (JBC bit, rel.adresa). Střadač bitového procesoru může realizovat logický součin a logický součet s jednotlivými přímo adresovanými bity. Procesor nedisponuje instrukcemi pro nepřímé adresování bitů, a proto nelze snadno vytvořit pole bitů.
8
337
Jádro procesoru 8051 – Registry speciálních funkcí
A - Střadač je základní registr aritmeticko-logické jednotky, který vždy obsahuje jeden operand aritmetické nebo logické operace (vyjma operací čtení-modifikace-zápis) a do něhož se ukládá výsledek této operace. Zvláštností střadače u 8051 je to, že leží ve vnitřním paměťovém prostoru a je přístupný nejen instrukcemi, v kterých je implicitně označen A, ale i pomocí přímé adresy označované v mnemonice procesoru ACC. B - Registr obsahuje jeden operand (druhý je v A) pro instrukci násobení nebo dělení. Spolu se střadačem obsahují výsledek operací násobení a dělení. Nejsou-li tyto instrukce využívány, lze jej použít jako univerzální registr. PSW - Stavové slovo mikroprocesoru se skládá z 8 bitů, z nichž je 7 významových. Umístění příznaků v PSW je zobrazeno na obrázku a jejich význam je následující: b b b b b b b b 7
6
5
C
AC
F0
D7
D6
D5
4
3
RS1 RS0 D4
D3
Bit
2
1
0
OV
---
P
Adresa RAM = D0h
D2
D1
D0
Bitová adresa (hex)
C - Přenos (Carry) je nastaven při aritmetické operaci, při které dochází k přenosu z osmého (b7) do devátého (b8) bitu a při některých instrukcích porovnání. PAM1-06
9
Všechny informace, důležité pro činnost mikroprocesoru a jeho periferních obvodů integrovaných na čipu procesoru, jako jsou čítače, sériový kanál, přerušovací systém a u nástupců 8051 záchytný a komparační systém, jsou soustředěny do souboru registrů tzv. registrů speciálních funkcí SFR. Nyní si postupně uvedeme nejdůležitější registry a v případě registrů ovlivňujících činnost periferií i s popisem vlastností těchto obvodů. A - Střadač je základní registr aritmetickologické jednotky, který vždy obsahuje jeden operand aritmetické nebo logické operace (vyjma operací čtenímodifikace-zápis) a do něhož se ukládá výsledek této operace. Protože registr dovoluje ve spolupráci s aritmetickologickou jednotkou postupné přičítání zpracovávaných čísel, nazývá se střadač nebo akumulátor. Zvláštností střadače u procesoru 8051 je to, že leží ve vnitřním paměťovém prostoru a je přístupný nejen běžnými instrukcemi, v kterých je implicitně označen A, ale i pomocí přímé adresy označované v mnemonice procesoru symbolickým názvem ACC. B - Registr obsahuje jeden operand (druhý je umístěn ve střadači) pro instrukci násobení nebo dělení. Spolu se střadačem obsahují výsledek operací násobení a dělení. Nejsou-li tyto instrukce využívány, lze jej použít jako univerzální registr. PSW - Stavové slovo mikroprocesoru se skládá z 8 bitů, z nichž je 7 významových. Umístění příznaků v PSW je zobrazeno na obrázku a jejich význam je následující:
9
337
Jádro procesoru 8051 – Registry speciálních funkcí
AC - Pomocný (částečný) přenos (Auxiliary Carry) je nastaven, dojde-li při sčítání k přenosu mezi čtvrtým (b3) a pátým (b4) bitem střadače. Příznak využívá pouze instrukce dekadické korekce DAA, kterou aplikujeme na výsledek součtu dvou dekadických čísel vyjádřených v BCD kódu F0 - Uživatelský příznak F0 může být libovolně využíván programátorem k indikaci události (např. přetečení při výpočtu v aritmetice, atd.). RS1, RS0 - Určují banku, jejíž registry R0 až R7 budou používány například k výpočtu. Jednotlivé bity RS1 a RS0 lze ovládat programově pomocí logických, přesunových nebo bitových operací. Procesor není vybaven instrukcí pro přepínání bank a po jeho vynulování je aktivní bankou banka 0. OV - Příznak přetečení (Overflow) indikuje přetečení při aritmetické operaci sčítání nebo odčítání, pokud zpracovávaná čísla jsou považována za čísla se znaménkem. Jedná se o případ, kdy součet dvou záporných čísel je kladný (došlo k přenosu mezi bity b8 a b7 a nedošlo k přenosu mezi bity b7 a b6) nebo součet dvou kladných čísel je záporný (nedošlo k přenosu mezi bity b8 a b7 a došlo k přenosu mezi bity b7 a b6), kde bit b7 představuje znaménko. Příznak je též využíván při operaci dělení k identifikaci dělení nulou a při instrukci násobení. PAM1-06
10
♣ C - Přenos (Carry) je nastaven při aritmetické operaci, při které dochází k přenosu z osmého (b7) do devátého (b8) bitu a při některých instrukcích porovnání. ♣ AC - Pomocný (částečný) přenos (Auxiliary Carry) je nastaven, dojde-li při sčítání k přenosu mezi čtvrtým (b3) a pátým (b4) bitem střadače. Příznak využívá pouze instrukce dekadické korekce DAA, kterou aplikujeme na výsledek součtu dvou dekadických čísel vyjádřených v BCD kódu. ♣ F0 - Uživatelský příznak F0 může být libovolně využíván programátorem k indikaci nějaké události (např. přetečení při výpočtu v aritmetice, indikace události atd.). ♣ RS1, RS0 - Určují banku, jejíž registry R0 až R7 budou používány například k výpočtu. Jednotlivé bity RS1 a RS0 lze ovládat programově pomocí logických, přesunových nebo bitových operací. Procesor není vybaven instrukcí pro přepínání bank a po jeho vynulování je aktivní bankou banka 0. OV - Příznak přetečení (Overflow) indikuje přetečení při aritmetické operaci sčítání nebo odčítání. Je potřeba pokud zpracovávaná čísla jsou považována za čísla se znaménkem. OV=1 je-li součet dvou záporných čísel kladný (došlo k přenosu mezi bity b8 a b7 a nedošlo k přenosu mezi bity b7 a b6) nebo součet dvou kladných čísel je záporný (nedošlo k přenosu mezi bity b8 a b7 a došlo k přenosu mezi bity b7 a b6), kde bit b7 představuje znaménko. Příznak je též využíván při operaci dělení k identifikaci dělení nulou a při instrukci násobení. ♣ P - Příznak parity (Parity Flag) indikuje lichou paritu střadače. Je-li ve střadači lichý počet jedniček, potom příznak parity je nastaven P=1. Příznak je aktualizován po každé instrukci.
10
337
Jádro procesoru 8051 – Registry speciálních funkcí
SP - Ukazatel zásobníku (Stack RS1 RS0 Banka Adresy reg. R0,...,R7 Pointer) je osmibitový registr, 0 0 0 00H až 07H který je na rozdíl od většiny 0 1 1 08H až 0FH ostatních procesorů při plnění 1 0 2 10H až 17H zásobníku inkrementován (hodnota ukazatele je zvětšována o 1 1 3 18H až 1FH jedničku). Vlastní zásobník je umístěn ve vnitřní datové paměti RAM a může být umístěn kdekoliv v této paměti tj. i v rozšířené části vnitřní datové paměti (adresy 7Fh až FFh u nástupců 8051). Po vynulování procesoru signálem RESET je nastaven ukazatel na hodnotu SP=07h. Ve většině aplikací musí být pomocí odpovídající instrukce přestaven na jinou hodnotu. DPL, DPH - Registry DPL a DPH tvoří nižší a vyšší 8 bitovou slabiku 16bitového ukazatele DPTR, který slouží k 16-bitovému nepřímému adresování vnější datové paměti RAM nebo paměti programu. Oba registry lze využívat jako paměťová místa. PC - Čítač instrukcí (Program Counter) je 16-bitový čítač instrukcí, který není přímo programově přístupný. PAM1-06
11
SP - Ukazatel zásobníku (Stack Pointer) je osmibitový registr, který je na rozdíl od většiny ostatních procesorů při plnění zásobníku inkrementován (hodnota ukazatele je zvětšována o jedničku). Vlastní zásobník je umístěn ve vnitřní datové paměti RAM a může být umístěn kdekoliv v této paměti tj. i v rozšířené části vnitřní datové paměti (adresy 7Fh až FFh u nástupců 8051), která je přístupná pouze pomocí nepřímého adresování. Po vynulování procesoru signálem RESET je nastaven ukazatel na hodnotu SP=07h. Ve většině aplikací musí být pomocí odpovídající instrukce přestaven na jinou hodnotu. DPL, DPH - Registry DPL a DPH tvoří nižší a vyšší 8 bitovou slabiku 16bitového ukazatele DPTR, který slouží k 16-bitovému nepřímému adresování vnější datové paměti RAM nebo paměti programu. Oba registry lze využívat jako paměťová místa. PC - Čítač instrukcí (Program Counter) je 16-bitový čítač instrukcí, který není přímo programově přístupný.
11