Základy mikroprocesorové techniky 10. Týden – Jádro 8051 Garant: Prof. Zdeněk Bohuslávek, CSc. Přednášející: Ing. Jiří Nesládek Podklady: http://www.rabaka.net/ZMT
Blokové schéma 8051 Jednočipový mikropočítač; Po připojení piezokeramického rezonátoru (krystalu) je schopen samostatné činnosti; Oddělená paměť programu a dat, obě integrované na čipu s možností rozšíření o externí paměť; 4 V/V brány P0P3, 2 čítače/časovače, duplexní sériový kanál, dva signály vnějšího přerušení
Organizace paměti PC (Program counter) Paměť programu 16-ti bitový „čítač“ instrukcí adresuje právě zpracovávanou instrukci; Není přímo dostupný v žádném adresném prostoru. Paměť programu Skládání adresného prostoru z vnitřní a vnější paměti řídí signál EA. Vnější paměť Vnitřní paměť 0000 0FFF 1000 FFFF EA = 1 EA = 0
Rozšířená vnitřní paměť Organizace paměti Datová paměť To, do které paměti (vnitřní/vnější) se přistupuje, je dáno použitým způsobem adresování – různými instrukcemi Nepřímé adresování – instrukce MOV FFFF Vnější paměť FF SFR – registry speciálních funkcí Rozšířená vnitřní paměť 80 7F Vnitřní paměť 00 Přímé adresování – instrukce MOV 0000 Nepřímé adresování pomocí DPTR – instrukce MOVX
Rozdělení vnitřní paměti 4 banky registrů Výběr aktivní banky je dán obsahem PSW Bitová oblast – bity lze adresovat (číst, modifikovat a testovat) jednotlivě R0 R1 R2 R3 R4 R5 R6 R7 00 01 02 03 04 05 06 07 0F 08 17 10 1F 18 Banka 0 Banka 1 Banka 2 Banka 3 2F 20 Bitová oblast 7F 30 Zbývající vnitřní paměť
Registry speciálních funkcí Slouží převážně k řízení vestavěných periferií; Střadač (ACC) – základní registr ALU, obsahuje jeden operand instrukce a ukládá se do něj výsledek operace; B registr – v instrukcích násobení a dělení vystupuje v roli druhého operandu; DPTR (DPL, DPH) – používá se pro nepřímé adresování vnější paměti dat (MOVX) nebo paměti programu (MOVC); SP – ukazatel zásobníku Stavové slovo mikroprocesoru (PSW) ACC E0 Střadač B F0 Registr B PSW D0 Stavové slovo SP 81 Ukazatel zásobníku IP B8 IE A8 Řízení přerušení PCON 87 Řízení napájení TMOD 89 TCON 88 Řízení časovačů TL0 8A TH0 8C Čítač-časovač 0 TL1 8B TH1 8D Čítač/časovač 1 SCON 98 SBUF 99 Řízení sériového kanálu DPL 82 DPH 83 Ukazatel pro nepřímé adresování vnější paměti P0 80 P1 90 P2 A0 P3 B0 Vstupně/výstupní brány
Stavové slovo P - OV RS F0 AC C 1 2 5 6 7 3 4 C – přenos (carry) je nastaven aritmetickou operací, při které došlo k přenosu z osmého do devátého bitu a při některých instrukcí porovnání; AC – vnitřní přenos (auxiliary carry) je nastaven, dojde-li při sčítání k přenosu mezi čtvrtým a pátým bitem střadače. Příznak se využívá pouze v instrukci 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; RS – určuje aktivní banku registrů; OV – příznak přetečení (overflow) indikuje přetečení při aritmetické operaci sčítání nebo odečítání, jestliže zpracovávaná čísla považujeme za čísla se znaménkem. Jedná se o případ, kdy součet dvou záporných čísel je kladný nebo součet dvou kladných čísel je záporný. Příznak je též využíván při operaci dělení k identifikaci dělení nulou a při instrukci násobení. P – parita (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.
Vstupně/výstupní brány Port 1 – nemá žádnou alternativní funkci, jde o čistě V/V bránu; Port 3 – piny této brány jsou sdíleny ostatními vestavěnými periferiemi (čítače/časovače, sériový kanál, signály externího přerušení); Port 0 – jako jediný nemá ve výstupním budiči pull-up odpor. Jde tedy o obvod s otevřeným kolektorem. Pokud jej chceme použít jako obecné vstupy/výstupy, musíme k pinům připojit externí odpory, jejichž druhý konec připojíme na +Ucc. Port 0 se také může využívat při styku s vnější pamětí, viz port 2 dále; Port 2 – se kromě své normální funkce může využívat spolu s portem 0 ke komunikaci s externí pamětí. K tomuto účelu se využívají jen části obou portů - výstupní budiče portu 0 a 2 a vstupní vyrovnávací paměť portu 0. Na portu 0 je časově přepínán výstup nižšího bytu adresy pro externí paměť s datovým bytem, který je zapisován nebo čten z paměti. Port 2 pak vysílá vyšší byte adresy. Tato adresa je tedy 16-bitová, abychom mohli adresovat až 64kB paměti.
Vstupně/výstupní brána 1
Vstupně/výstupní brána 3
Vstupně/výstupní brána 0
Vstupně/výstupní brána 2