Rozdíly mezi mikroprocesory 8051 a 8052, co má 8052 navíc


Mikroprocesor 8052 byl vyvinut jako o něco výkonnější verze 8051, který programátorovi přináší další vylepšení a možnosti.
Rozdíl mezi mikroprocesorem 8051 a 8052 je v tom, že 8052 má oproti 8051 jeden stávající prvek rozšířený a druhý prvek úplně nový. Těmito prvky jsou:
Kromě náležistostí souvisejících s výše uvedenými prvky (nové registry, bity, alternativní funkce pinů) už jiný rozdíl mezi oběma procesory není. Oba mají stejný instrukční soubor. Aby byly překladače kompatibilní s 8052, byly rozšířeny o nové vyhrazené symboly (T2CON, TL2, TH2, RCAP2L, RCAP2H, TR2 atd.)

Mikroprocesor 8052

Vnitřní datová paměť o velikosti 256 bytů

U mikroprocesoru 8051 je k dispozici vniřní datová paměť o velikosti 128 bytů, která je programátorovi k dispozici pro ukládání proměnných a pro zásobník. Tato paměť se nachází v adresové oblasti 00H až 07H. V následující oblasti, tedy v adresovém rozsahu 08H až FFH (dalších 128 bytů), jsou umístěny registry speciálních funkcí (SFR). Pokud tedy instrukce pracují s adresami 00H až 07H, ukazují do vnitřní dat.paměti, pokud pracují s adresami 08H až FFH, ukazují do SFR.

U mikroprocesoru 8052 je k dispozici vniřní datová paměť o velikosti 256 bytů, ale přístup do prvních 128 bytů a do SFR je naprosto shodný s výše popsaným přístupem u 8051. Libovolná adresa mezi 00H až 07H odkazuje do vnitřní dat.paměti, adresy v rozsahu 08H až FFH odkazují do SFR. Pro přístup do zbylých 128 bytů vnitřní dat.paměti v rozsahu opět 08H až FFH se využívá nepřímého adresování. Oblast rozšířené vnitřní dat.paměti se totiž překrývá s oblastí SFR (mají stejný rozsah adres) a adresování se tak rozlišuje použitím nepřímého adresování, které vždy odkazuje do dat.paměti, nikdy do SFR. SFR jsou normálně přístupné přímým adresováním.

Způsob adresování bude lépe vidět na konkrétním příkladu:
Chceme načíst byte z adresy 90H (144D)

       MOV R0,#90H    ;nastavení nepřímé adresy na 90H
       MOV A,@R0      ;čtení obsahu vniřní dat.paměti z místa udaného v registru R0
Museli jsme použít nepřímého adresování, k čemuž je třeba využít dvou instrukcí. Do R0 nejprve uložíme danou adresu, druhou instrukcí teprve načteme samotný obsah paměťového místa, jehož adresa je v R0 uložena.

Pro srovnání si zde uvedeme příklad přímého adresování.

       MOV A,90H      ;čtení obsahu z adresy 90H - což je při přímém adresování
                      ;oblast SFR (port P1)
Výhodou rozšířené vnitřní datové paměti je to, že do ní (tj. do oblasti 80H až FFH) může být umístěn zásobník, čímž se rozšíří část přímo adresovatelné datové paměti.


Třetí čítač/časovač

U mikroprocesoru 8052 je integrován třetí 16-bitový čítač/časovač, který má dle předchozího značení čítačů/časovačů u standardní 8051 logické označení čítač/časovač 2. Tento č/č může být využit jako normální čítač s možností 16-bitového automatického přednastavení, ke generování rychlosti sériového kanálu a nebo jako záchytný čítač - k zachycení času mezi údalostmi. Stejně jako č/č 0 a 1 může pracovat v režimu čítače vnějších událostí nebo časovače. Jednotlivé režimy se volí nastavením registru T2CON.

Rozložení bitů v registru T2CON
Rozložení bitů v registru T2CON:

TF2 - příznakový bit přetečení čítače/časovače 2. Bit je hardwarově nastaven při přechodu obsahu čítače z maximální hodnoty do nuly a je nutné jej vynulovat programově. Bit TF2 nebude při přetečení nastaven, pokud je nastaven bit RCLK nebo bit TCLK.

EXF2 - vnější příznak čítače/časovače 2. Příznak se nastavuje, je-li EXEN2 v log.1 a když je detekována sestupná hrana na vstupu T2EX (P1.1). Je-li povoleno přerušení od č/č 2, pak nastavení bitu EXF2 způsobí jeho vyvolání. Příznak EXF2 se musí v obslužném programu přerušení nulovat programově.

RCLK - povolovací bit synchronizace příjmu sériového kanálu. Pokud je tento bit nastaven, č/č 2 bude využíván pro generování rychlosti sériového kanálu (časový průběh pulzů přetečení č/č 2 bude využit k synchronizaci příjmu sériového kanálu). Pokud bude RCLK v log.0, k synchronizaci příjmu sér.kanálu se použije čítač/časovač 1.

TCLK - povolovací bit synchronizace vysílání sériového kanálu. Pokud je tento bit nastaven, č/č 2 bude využíván pro generování rychlosti sériového kanálu (časový průběh pulzů přetečení č/č 2 bude využit k synchronizaci vysílání sériovým kanálem). Pokud bude TCLK v log.0, k synchronizaci vysílání sér.kanálu se použije čítač/časovač 1.

EXEN2 - bit povolující vnější ovlivnění č/č 2. Je-li EXEN2 v log.1 a č/č 2 není využit jako generátor přenosové rychlosti, potom zachycení nové hodnoty (záchytný režim) nebo přednastavení čítače/časovače nastane při sestupné hraně na vývodu T2EX. Je-li EXEN2 v log.0, pak č/č 2 ignoruje události na vývodu T2EX.

TR2 - spuštění nebo zastavení č/č 2. Nastavením bitu TR2 do log.1 se č/č 2 spustí.

C/T2 - volba režimu čítač/časovač. Je-li bit v log.0, je nastaven režim časovače, je-li bit v log.1, je nastaven režim čítače vnějších událostí. Čítač vnějších událostí je inkremetován při sestupné hraně na vývodu T2.

CP/RL2 - bit pro výběr režimu zachycení (capture) nebo přednastavení (reload).

Volba pracovního režimu č/č 2

Provede se nastavením odpovídajících bitů dle následující tabulky:
 RCLK + TCLK   CP/RL2  Režim
0 0 16-bitový s automat.přednastavením
0 1 16-bitový záchytný
1 X  generátor přenosové rychlosti sér.kanálu 
X - libovolný stav


Režim s automatickým přednastavením č/č 2

V tomto režimu existují v závislosti na hodnotě bitu EXEN2 dvě možné činnosti. Je-li EXEN2=0, pak se v případě přeplnění č/č 2 nastaví příznak TF2 a současně se registry č/č TH2 a TL2 naplní 16-bitovou hodnotou, uloženou v registrech RCAP2H a RCAP2L. Je-li EXEN2=1, pak č/č 2 pracuje stejně jako v případě EXEN2=0 ale s tím rozdílem, že kromě přeplnění č/č 2 způsobí nové přednastavení č/č 2 (TH2=RCAP2H, TL2=RCAP2L) i změna stavu z log.1 do log.0 na vnějším pinu T2EX. Jinými slovy přednastavení č/č 2 při EXEN2=1 může způsobit jak přetečení č/č 2, tak příchod sestupné hrany na vnějším vstupu T2EX. Vše je názorně vidět na následujícím obr.1.

Režim s automatickým přednastavením čítače/časovače 2
Obr. 1  Režim s automatickým přednastavením čítače/časovače 2


Záchytný režim č/č 2

V tomto režimu (angl. Capture Mode) jsou opět možné v závislosti na nastavení bitu EXEN2 dvě rozdílné činnosti č/č 2. Je-li EXEN2=0, pak č/č 2 pracuje jako obyčejný 16-bitový čítač nebo časovač (dle C/T2), který při přetečení nastavuje příznakový bit TF2. Od tohoto příznak.bitu může být generováno přerušení podobně jako u č/č 0 a 1. Č/č 2 je ale odlišný v tom, že příznakový bit TF2 musí být v obsluze vyvolaného přerušení vynulován programově ("ručně"), protože na rozdíl od č/č 0 a 1 není nulován automaticky (obvodově). Druhá činnost č/č 2 se navolí, je-li EXEN2=1. Pak se č/č 2 chová stejně jako v předchozím případě, ale při sestupné hraně na vstupu T2EX dojde k uložení aktuální hodnoty č/č (registry TH2 a TL2) do registrů RCAP2H a RCAP2L. Současně s tím je nastaven i příznakový bit EXF2, od kterého může být (stejně jako od TF2) generováno přerušení. Z uvedeného vyplývá, že vstup T2EX lze využít i jako další vstup vnějšího přerušení.

Záchytný režim čítače/časovače 2
Obr. 2  Záchytný režim čítače/časovače 2


Režim č/č 2 jako generátor přenosové rychlosti sériového kanálu

Režim, při kterém pracuje č/č 2 jako generátor přenosové rychlosti sér.kanálu, se volí nastavením bitu RCLK=1 a/nebo TCLK=1. Sériový kanál musí pracovat v režimu 1 nebo 3 (tj. režim, kde je přenos.rychlost odvozena od č/č 1). To platí pro 8051, u 8052 je to tak, že pokud jako generátor použijeme č/č 1, režim 1 a 3 sériového kanálu odvozuje rychlost od č/č 1. Pokud jako generátor použijeme č/č 2, reřim 1 a 3 sériového kanálu odvozuje rychlost od č/č 2, příp. i od č/č 1, pokud jsme tak rozhodli odpovídajícím nastavením bitů RCLK a TCLK. Možná byl tento výklad trochu matoucí, jde jen o vytvoření si správné představy, jak to funguje, i když to ve skutečnosti může být uděláno trošku jinak. Funkce č/č 2 jako generátoru je jednoznačně vidět z obr. 3.
Uvedené řešení umožňuje použít jinou přenosovou rychlost pro vysílání a jinou rychlost pro příjem sér.kanálem. To je dáno tím, že např. pro vysílání bude generátorem č/č 1 a pro příjem bude generátorem rychlosti č/č 2 (volíme nastavením bitů TCLK a RCLK - viz jejich popis). Na rozdíl od časovače 1 je časovač 2 v tomto režimu inkrementován polovičním kmitočtem oscilátoru (nikoliv 1/12), což umožňuje nastavení žádané přenosové pro větší počet krystalů o různých kmitočtech. Přenosová rychlost je určena vztahem:


Jak je vidět z obr. 3, vstup T2EX lze i v tomto režimu použít jako další vstup vnějšího přerušení (při sestupné hraně je nastaven bit EXF2, jež může být využit pro vyvolání přerušení).
Přepínač řízený bitem SMOD (z registru PCON) je v obr. 3 zakreslen pouze z důvodu připomenutí, že i nastavení bitu SMOD má vliv na přenosovou rychlost generovanou č/č 1 (je-li SMOD=1, pak je rychlost dvojnásobná).

Režim č/č 2 jako generátor přenosové rychlosti sériového kanálu
Obr. 3  Režim čítač/časovač 2 jako generátor přenosové rychlosti sériového kanálu


Naprostá většina vyráběných mikroprocesorů s jádrem 8052 obsahuje ještě jeden registr pro nastavení č/č 2, a to je T2MOD. Ten sestává ze dvou bitů - DCEN a T2OE.

Rozložení bitů v registru T2MOD
Rozložení bitů v registru T2MOD

DCEN (Down Counter Enable) - umožnuje realizovat dva režimy s přednastavením - je-li DCEN=0, čítá č/č 2 nahoru, je-li DCEN=1, č/č 2 čítá nahoru i dolů. Směr čítání je v tomto případě řízen stavem vstupního pinu T2EX (nahoru=1, dolů=0). Podrobnější popis těchto režimů najdete v následujícím odstavci níže.

T2OE (Timer 2 Output Enable) - nastavením tohoto bitu lze pin T2 (P1.0) nakonfigurovat jako pin výstupní, na kterém bude generován signál obdélníkového průběhu s programovatelnou frekvencí. Podrobnější popis funkce naleznete níže - odstavec Režim programovatelného generátoru hodin (Programmable Clock Out).

Protože téměř všechny současné typy mikroprocesoru 8052 tento registr mají (měla jej už i CMOSová verze původní 8052 od Intelu), ukážeme si dále odpovídající vnitřní zapojení č/č 2 v módu s automat.přednastavením v závislosti dle nastavení bitu DCEN a také si blíže popíšeme režim programovatelného generátoru hodin (řízený bitem T2OE).

Režim s automatickým přednastavením čítače/časovače 2 dle nastavení bitu DCEN

Pokud je DCEN=0, čítá č/č 2 nahoru a režim je tak shodný s režimem dle obr. 1. Proto zde tento případ nebudeme dále popisovat.

Pokud je DCEN=1, č/č 2 čítá nahoru i dolů - směr čítání je řízen stavem vstupního pinu T2EX (nahoru=log.1, dolů=log.0). Pro směr čítání nahoru je obnovovací hodnota přednastavení dána obsahem registrů RCAP2H a RCAP2L, pro směr čítání dolů je obnovovací hodnota přednastavení pevná FFFFH. Při přetečení nebo podtečení č/č je nastaven příznakový bit TF2, od kterého může být vyvoláno přerušení. Při přetečení nebo podtečení se zároveň překlopí (invertuje) hodnota bitu EXF2, hodnotu tohoto bitu lze využít jako sedmnáctý bit obousměrného čítače/časovače 2. V tomto módu obousměrného čítání (tedy DCEN=1) nelze bit EXF2 využívat k žádosti o přerušení.

Režim s automatickým přednastavením čítače/časovače 2 - obousměrné čítání (bit DCEN=1)
Obr. 4  Režim s automatickým přednastavením čítače/časovače 2 - obousměrné čítání (DCEN=1)


Režim programovatelného generátoru hodin (Programmable Clock Out)

Tento režim umožňuje generovat na pinu T2 (P1.0) obdélníkový signál se střídou 1:1, jehož frekvenci je možné programovat. Pin T2 (P1.0) má totiž kromě své základní funkce v/v pinu i dvě alternativní funkce. První alt.funkcí je to, že pin slouží jako vstup vnějších impulzů pro č/č 2, druhou alt. funkcí je to, že pin slouží jako výstup, na kterém je generován signál se střídou 1:1 (hodiny nebo též hodinový signál) o frekvenci v rozsahu cca 46 Hz až 3 MHz při 12 MHz krystalu (frekvenci oscilátoru).
Č/č 2 se do tohoto režimu nastaví tak, že bit C/T2 bude v log.0 a bit T2OE bude v log.1. Nastavením bitu T2OE tedy definujeme tento režim a tím i druhou alter.funkci pinu T2. Časování (a tím i generování žádaného průběhu) spouštíme/zastavujeme nastavením/vynulováním bitu TR2. Vše je názorně vidět na obr. 5. Frekvence generovaného hod.signálu je odvozena od frekvence oscilátoru a hodnoty přednastavení časovače 2 (registry RCAP2H, RCAP2L) dle následujícho vztahu:

V režimu prog.generátoru hodin nemůže být generováno přerušení při přetečení č/č 2. Vstup T2EX lze použít jako další vstup vnějšího přerušení (při sestupné hraně je nastaven bit EXF2, jež může být využit pro vyvolání přerušení). Z hlediska zdrojů přerušení je tedy chování tohoto režimu stejné jako u režimu generátoru přenosové rychlosti sér.kanálu.
Č/č 2 je možné využít jako generátor přenosové rychlosti sér.kanálu i jako programovatelný generátor hodin současně. V tom případě ale nelze definovat zvlášť frekvenci (tzn. přenosovou rychlost) pro sér.kanál a zvlášť frekvenci generátoru hodin, protože oba generátory využívají ke stanovení frekvence registry RCAP2H, RCAP2L (viz dané vorce uvedené výše).

Režim programovatelného generátoru hodin (Programmable Clock Out)
Obr. 5  Režim programovatelného generátoru hodin (Programmable Clock Out)


POZN: Na obr.1,2,4 a 5 je ponechána původní amer.značka budiče mezi registry TH2,TL2 a RCAP2H,RCAP2L.
Tento budič má povolovací vstup (ten kolmo ke vstupnímu a výstupnímu vývodu). Pokud je na tomto vstupu log.1, vstupní signál může budičem procházet na výstup. Českým ekvivalentem by měla být značka hradla AND, povolovací vstup by pak byl přiveden na druhý vstup dvouvstupového hradla. Přesto jsem z důvodu "kompatibility" s tištěnou (i českou) literaturou ponechal v obrázcích původní amer.značky.

Ještě si zde musíme uvést další informace související s rozšířením mikroprocesoru 8052, které nebylo možné kompletně zahrnout v předchozím textu.

Adresy (vektory) přerušení mikroprocesoru 8052

Zdroj přerušení
Adresa
Příznak
Význam
IE0 Vnější přerušení 0 0003H
TF0 Čítač / časovač 0 000BH
IE1 Vnější přerušení 1 0013H
TF1 Čítač / časovač 1 001BH
RI + TI Sériový kanál 0023H
TF2 + EXF2 Čítač / časovač 2 002BH


Pevná priorita přerušení mikroprocesoru 8052

Zdroj Prioritní úroveň
IE0 (nejvyšší)
TF0
IE1
TF1
RI +Tl
TF2 + EXF2 (nejnižší)


Registry speciálních funkcí (SFR) u mikroprocesoru 8052

Symbolické
označení
registru
Angl. jméno registru, z kterého bylo
symbolické označení odvozeno
Adresa Obsah registru
po resetu (binárně)
ACC Accumulator E0H 00000000
B B Register F0H 00000000
PSW Program Status Word D0H 00000000
SP Stack Pointer 81H 00000111
DPTR Data Pointer (2 byty)

DPL Low Byte Nižší byte 82H 00000000
DPH High Byte Vyšší byte 83H 00000000
P0 Port 0 80H 11111111
P1 Port 1 90H 11111111
P2 Port 2 A0H 11111111
P3 Port 3 B0H 11111111
IP Interrupt Priority Control B8H XX000000
IE Interrupt Enable Control A8H 0X000000
TMOD Timer/Counter Mode Control 89H 00000000
T2MOD Timer/Counter 2 Mode Control C9H XXXXXX00
TCON Timer/Counter Control 88H 00000000
T2CON Timer/Counter 2 Control C8H 00000000
TH0 Timer/Counter 0 High Byte 8CH 00000000
TL0 Timer/Counter 0 Low Byte 8AH 00000000
TH1 Timer/Counter 1 High Byte 8DH 00000000
TL1 Timer/Counter 1 Low Byte 8BH 00000000
TH2 Timer/Counter 2 High Byte CDH 00000000
TL2 Timer/Counter 2 High Byte CCH 00000000
RCAP2H Timer/Counter 2 Capture Register Low Byte CBH 00000000
RCAP2L Timer/Counter 2 Capture Register Low Byte CAH 00000000
SCON Serial Control 98H 00000000
SBUF Serial Data Buffer 99H XXXXXXXX
PCON Power Control 87H 0XXX0000 (CMOS verze)
0XXXXXXX (HMOS verze)
X - neurčitý stav
 Šedě   jsou vyznačeny registry, které jsou u 8052 navíc (oproti 8051).
 Šedě s hnědým textem   jsou vyznačeny registry, u kterých jsou pozměněny hodnoty obsahu po resetu (změna oproti 8051).


Protože registry IE a IP byly rozšířeny o bity příslušející k č/č 2, uvedeme si zde jěště jejich nové rozložení.

Rozložení bitů v registru IE u mikroprocesoru 8052



Nově je zde bit ET2 (Enable Timer 2); nastavením bitu ET2 do log.1 se povolí přerušení od č/č 2.

Rozložení bitů v registru IP u mikroprocesoru 8052



Nově je zde bit PT2 (Priority Timer 2); nastavením bitu PT2 do log.1 se čítači/časovači 2 přiřadí vyšší úroveň priority.

Rozmístění pinů u mikroprocesoru 8052

Rozmístění pinů je shodné s mikroprocesorem 8051, 8052 se liší jen v tom, že na pinech P1.0 a P1.1 jsou nové alternativní funkce patřící k čítači/časovači 2. Pin P1.0 má alter.funkci T2 a pin P1.1 má alter.funkci T2EX (viz obr. 1 až 5 výše).

Zpět na hlavní stránku

Copyright © Michal Fuksa 2002