Váení zákazníci, dovolujeme si Vás upozornit, e na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, e ukázka má slouit výhradnì pro osobní potøebu potenciálního kupujícího (aby ètenáø vidìl, jakým zpùsobem je titul zpracován a mohl se také podle tohoto, jako jednoho z parametrù, rozhodnout, zda titul koupí èi ne). Z toho vyplývá, e není dovoleno tuto ukázku jakýmkoliv zpùsobem dále íøit, veøejnì èi neveøejnì napø. umisováním na datová média, na jiné internetové stránky (ani prostøednictvím odkazù) apod. redakce nakladatelství BEN technická literatura
[email protected]
1
ARCHITEKTURA MIKROKONTROLÉRÙ ATMEL
Architektura mikrokontrolérù ATMEL je znázornìna na obr. 1 Externí pøeruení Timer 2 INTERRUPT CONTROL
FLASH
EEPROM
SPI
RAM
Timer 1
Vstupy èasovaèe
Timer 0
CPU
OCS
WATCHDOG
BUS CONTROL
4 l/0 PORTS
UART PORT
TxD RxD
Address/Data
Obr. 1
Blokové schéma mikrokontrolérù ATMEL
Øada AT89C sestává z tìchto èástí: n 8bitová centrální procesorová jednotka (CPU); n
pamì programu (FLASH EPROM);
n
datová pamì (RAM);
n
paralelní programovatelné V/V obvody (4 I/O PORTS);
n
blok èítaèù/èasovaèù (TIMER0, TIMER1, ...);
n
obvody èasování (OSC);
n
sériový V/V obvod (UART PORT);
n
pøeruovací podsystém (INTERRUPT CONTROL). V øadì AT89S pøibyly následující èásti: n sériová pamì (EEPROM); n
øadiè sériové sbìrnice (SPI);
n
hlídaè èinnosti (Watch Dog).
A
V. FRONC, J. K¼ÚÈIK: MIKROKONTROLÉRY ATMEL
7
Jednotlivé èásti jsou propojeny interní 8bitovou sbìrnicí, která slouí pro pøenos dat a instrukcí.
1.1
PAMÌOVÝ PODSYSTÉM
Vechny mikrokontroléry firmy ATMEL mají oddìlen adresový prostor programu a adresový prostor dat jak je znázornìno na obr. 2. Jedná se tedy o Harwardské uspoøádání. PROGRAMOVÁ PAMÌ
Obr. 2
DATOVÁ PAMÌ
Architektura pamìti
Toto oddìlení poskytuje pøístup k datùm interní pamìti dat prostøednictvím 8bitové adresace, èím se zrychluje ukládání a manipulace s 8bitovou centrální procesorovou jednotkou (CPU). Navzdory tomu je moné adresovat pamì dat nepøímo, prostøednictvím 16bitového adresového ukazatele. Pamì programu je v provedení ROM, resp. FLASH EPROM. Adresový prostor pamìti programu má velikost 64 kB (obr. 2). Výbìrový impulz z externí pamìti programu je nazván 36(1 (Program Store Enable). Adresový prostor externí datové pamìti má stejnou kapacitu 64 kB a je pøímo adresovatelná v externím pamìovém prostoru. CPU generuje ètecí a zápisové impulzy, které povolují pøístup k datùm. Adresový prostor externí pamìti programu a externí pamìti dat se pøekrývá a je moné ho odliit pouitím signálù 5' a 36(1 pro ètení. Odliení provedeme volbou typu pouité instrukce pro pøístup k datùm.
1.1.1
PAMÌ PROGRAMU
Pamì programu se dìlí na interní o velikosti 1 a 20 kB v závislosti na typu mikrokontroléru (viz kapitola 2) a externí, jestli je pouita. Pokud se realizuje pamì jako externí, je nutné pøipojit vstup ($ = 0. Èastìji se vyuívá jen interní pamì programu FLASH EPROM a signál ($ se
8
V. FRONC, J. K¼ÚÈIK: MIKROKONTROLÉRY ATMEL
A
standardnì pøipojuje na hodnotu ($ = 1. Na nulté stránce programové pamìti jsou rezervovány vektorové adresy obsluhy jednotlivých zdrojù pøeruení (viz kap. Pøeruovací systém). Mnoina adres pamìti programu je adresována 16bitovým èítaèem instrukcí (Program Counter) PC, který adresuje interní pamì programu v rozsahu platných adres dle kapacity interní pamìti FLASH EPROM a externí pamì programu v rozsahu vyích adres do FFFFH, pøièem je jeho obsah pøenáen na výstupy portù P0 a P2.
1.1.2
PAMÌ DAT
Pamì dat mikrokontrolérù ATMEL je mono rozdìlit na interní a externí. Interní pamì dat typu RAM má rozsah 64, 128 nebo 256 bytù. Mapa interní pamìti RAM je na obr. 3.
HORNÍ
DOLNÍ
Obr. 3
PØÍSTUPNÉ POUZE NEPØÍMÝM ADRESOVÁNÍM
PØÍSTUPNÉ PØÍMÝM ADRESOVÁNÍM
PØÍSTUPNÉ I NEPØÍMÝM ADRESOVÁNÍM
SPECIÁLNÍ FUNKÈNÍ REGISTRY
PORTY BITY STATUS A CONTROL ÈASOVAÈE REGISTRY STACK POINTER AKUMULÁTOR A DALÍ
Interní datová pamì RAM
Interní datová pamì má pamìový prostor rozdìlen na tøi bloky: LOWER Dolní 128 (nií èást interní RAM); UPPER Horní 128 (vyí èást interní RAM); SPECIAL FUNCTION REGISTERS SFR (oblast speciálních registrù). Adresování pamìového prostoru interní pamìti je vdy 8bitové, co umoòuje adresovat 256 bytù. Oproti tomu prostøednictvím adresových módù se mùe pøistupovat a k 384 bytùm interní pamìti RAM. Pøímé adresování ovládá pamìový blok horní 128 (FFH7FH) a nepøímé adresování pamìový blok SFR (FFH-7FH). Obsazují tedy stejný adresový prostor, ale fyzicky jsou oddìleny. Pøístup do pamìového bloku RAM Dolní 128 je realizován jak pøímou, tak nepøímou adresací. Interní pamì RAM Dolní 128 (tab. 1) obsahuje ètyøi banky registrù oznaèených RB0 a RB3 a kadá banka registrù obsahuje 8 registrù R0 a R7. Uvedené banky registrù jsou umístìné na adresách 00H a 1FH. Oblast 16 následujících adres 20H a 2FH je bitovì adresovatelná oblast pamìti RAM, ve které je moné pomocí bitové adresace adresovat kadý ze 128 bitù zvlá (0127). Instrukèní sada obsahuje celou øadu instrukcí pro práci s bitovì pøístupnou oblastí pamìti RAM. Zùstávající oblast interní RAM tj. adresy 30H a 7FH jsou urèeny na univerzální pouití. Skupina speciálních registrù SFR (Special Function Registers) je umístìna na adresách 80H a F0H jak je zobrazeno v tab. 2 Mapa SFR. Obsahuje 21 (27) speciálních registrù.
A
V. FRONC, J. K¼ÚÈIK: MIKROKONTROLÉRY ATMEL
9
+(; ))+ )+ )+ + + + )+ (+ '+ &+ %+ $+ + + + + + + + + + + )+ + + + )+ + + +
Tab. 1
10
06%
) ) ) ) ) ) ) )
/6%
( ( ( ( ( ( ( (
' ' ' ' ' ' ' '
& & & & & & & &
% % % % % % % %
$ $ $ $ $ $ $ $
%DQNDUHJLVWU %DQNDUHJLVWU %DQNDUHJLVWU %DQNDUHJLVWU
'(&
Niích 128 bytù interní RAM adresový prostor V. FRONC, J. K¼ÚÈIK: MIKROKONTROLÉRY ATMEL
A
E\WRYi DGUHVD 06% )+ ) ) ) ) ) % % % % % ( ( ( ( ( (+ $&& $&& $&& $&& $&& '+ 63,( 63( '25' 0675 &32/ ' ' ' ' ' '+ &< $& ) 56 56 &'+ 5HJLVWUþtWDþHKRUQtE\WH &&+ 5HJLVWUþtWDþHGROQtE\WH &%+ =iFK\WQêUHJLVWUþtWDþHKRUQtE\WH &$+ =iFK\WQêUHJLVWUþtWDþHGROQtE\WH &+ &+ %+ %+
)
% (
)
% (
$&& &3+$
$&& 635
'
'
29
72(
&)
&(
&'
&&
&%
&$
&
7)
(;)
5&/.
7&/.
(;(1
75
&7
%'
37
%&
36
%%
37
%$
3;
%
37
)
%
%
( $&& $&& 635 63&5 ' 36: 3 7+ 7/ 5&$3+ 5&$3/ '&(1 702' &
&35/ 7&21 % ,3 3; % 3 3
%
%
%
%
%
%
%
3
3
3
3
3
3
7
7
,17
,17
7['
5['
$'
$&
%$$$
$
$
6365 ,( 3
5'
:5
$$+ $+
63,)
:&2/
$)
$(
(7
(6
(7
(;
(7
$+
$
$
$
$
$
$
$
$
3
3
3
3
3
3
3
3
$GU
$GU
$GU
$GU
$GU
$G5
$GU
$GU
$
($
'$GU
Tab. 2
6)5
3
+ 3 LMPDFtY\VtODFtUHJLVWUVpULRYpKRNDQiOX ) ( ' & % + 60 60 60 5(1 7% 36 36 ((0:( ((0(1 + 36 + 3 3 3 3 3 6&. 0,62 026, 66 '+ 5HJLVWUþtWDþHKRUQtE\WH &+ 5HJLVWUþtWDþHKRUQtE\WH %+ 5HJLVWUþtWDþHGROQtE\WH $+ 5HJLVWUþtWDþHGROQtE\WH %) %( %' %& %% + * &7 0 0 * ) ( ' & % + ,( 7) 75 7) 75 *) 32) + 602' + 63' 63' 63' 63' 63' + %i]RYêUHJLVWU'375KRUQtE\WH + %i]RYêUHJLVWU'375GROQtE\WH + %i]RYêUHJLVWU'375KRUQtE\WH + %i]RYêUHJLVWU'375GROQtE\WH + 8ND]RYDWHO]iVREQtNRYpSDP WL + 3 3 3 3 3
A
/6%
'$GU
'$GU
'$GU
'$GU
(;
6%8) 6&21
5, 7, :'7567 :'7(1 :&21 3 3 3 3 7(; 7 7+ 7+ 7/ 7/ %$ % % 702' &7 0 0 $ 7&21 ,7 ,( ,7 *) 3' ,'/ 3&21 63' 63' 63' 63'5 '3+ '3/ '3+ '3/ 63 3 3 3 3 5% '36
'$GU
'$GU
'$GU
Mapa SFR (speciálních funkèních registrù)EA V. FRONC, J. K¼ÚÈIK: MIKROKONTROLÉRY ATMEL
11
Støadaè (Accumulator) ACC, A Základní pracovní registr centrální procesorové jednotky CPU, který vdy obsahuje operand instrukce a do nìho se ukládá výsledek operace. Støadaè je souèástí RAM (adresa E0H), co umoòuje kromì standardních operací i bitové operace (ACC.7 ACC.0).
B registr B Pracovní registr, který je pouíván pøi operacích dìlení a násobení. Lze ho také pouít jako normální pracovní registr.
Stavový registr (Program Status Word) PSW PSW registr obsahuje v kadém okamiku stav procesoru a výsledek výkonu pøedcházejíci instrukce.
Ukazatel zásobníku (Stack Pointer) SP Ukazatel zásobníku je adresový registr interní RAM ukazující na vrchol zásobníku, ve které je uloena návratová adresa po volání instrukcí PUSH, POP a CALL. SP je inkrementován pøed výkonem instrukcí PUSH a CALL a dekrementován po vykonání instrukcí POP a RET. Po inicializaci je SP stále na adrese 07H co znamená, e ukazuje na adresnou buòku 08H. Jeho umístìní je moné programovì zmìnit v oblasti adresace RAM.
Ukazatel dat (Data Pointer) DPTR Ukazatel dat je dvoubytový adresný registr, skládá se ze dvou 8bitových registrù DPH, DPL. Jeho funkcí je ukazovat na pamìovou buòku v datové pamìti v rozsahu 0000H FFFFH. Je pøístupný jako dvojitý 16bitový registr i jako dva 8bitové registry zvlá.
Èítaè instrukcí (Program Counter) PC 16bitový èítaè instrukcí, není programovì pøístupný.
VV porty (Ports) P0, P1, P2, P3 Vstupnì-výstupní porty P0, P1, P2, P3 jsou v oblasti SFR reprezentovány jako registry se stejným oznaèením P0, P1, P2, P3.
Registr sériového kanálu (Serial Data Buffer) SBUF Registr sériového kanálu jsou ve skuteènosti dva oddìlené registry vysílací a pøijímací. Jsou-li jsou data pøesunuta do registru SBUF, procházejí vysílacím registrem. Inicializace pøenosu se vykoná okamitì. Pøicházející data procházejí pouze pøes tento registr (SBUF) a musí být z nìj pøeèteny.
12
V. FRONC, J. K¼ÚÈIK: MIKROKONTROLÉRY ATMEL
A