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á sloužit 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ø. umis ováním na datová média, na jiné internetové stránky (ani prostøednictvím odkazù) apod. redakce nakladatelství BEN technická literatura redakce@ben.cz
1 ARCHITEKTURA MIKROKONTROLÉRÙ ATMEL Architektura mikrokontrolérù ATMEL je znázornìna na obr 1 Externí pøerušení Timer 2 INTERRUPT CONTROL FLASH SPI EEPROM RAM Timer 1 Timer 0 Vstupy èasovaèe CPU OCS WATCHDOG BUS CONTROL 4 l/0 PORTS UART PORT TxD RxD Obr 1 Address/Data 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øerušovací 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 Všechny 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Ì DATOVÁ PAMÌ Obr 2 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 možné 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án36(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 možné ho odlišit použitím signálù 5' a 36(1 pro ètení Odlišení provedeme volbou typu použité 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 použita 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øerušení (viz kap Pøerušovací systém) Množina 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 možno 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Í PØÍSTUPNÉ POUZE NEPØÍMÝM ADRESOVÁNÍM PØÍSTUPNÉ PØÍMÝM ADRESOVÁNÍM DOLNÍ 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ŠÍ Obr 3Interní 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 vždy 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 (FFH- 7FH) 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 každá 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 možné pomocí bitové adresace adresovat každý ze 128 bitù zvláš (0 127) 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í použití 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
(; 06% /6% '(& )) ) ) ) ) ( ' & % $ ( ' ) ( ' & % $ & % ) ( ' & % $ $ ) ( ' & % $ ) ( ' & % $ ) ( ' & % $ ) ( ' & % $ ) ( ' & % $ ) ) Tab 1 Nižších 128 bytù interní RAM adresový prostor 10 V FRONC, J K¼ÚÈIK: MIKROKONTROLÉRY ATMEL A
E\WRYi 6)5 DGUHVD 06% /6% ) ) ) ) ) ) ) ) ) % % % % % % % % % ( ( ( ( ( ( ( ( ( $&& $&& $&& $&& $&& $&& $&& $&& $&& ' 63,( 63( '25' 0675 &32/ &3$ 635 635 63&5 ' ' ' ' ' ' ' ' ' 36: &< $& ) 56 56 29 3 &' 5HJLVWUþtWDþHKRUQtE\WH 7 && 5HJLVWUþtWDþHGROQtE\WH 7/ &% =ifk\wqêuhjlvwuþtwdþhkruqte\wh 5&$3 &$ =ifk\wqêuhjlvwuþtwdþhgroqte\wh 5&$3/ & 72( '&(1 702' & & & & & & & & ) ( ' % $ & 7) (;) 5&/ 7&/ (;(1 75 &7 &35/ 7&21 % %' %&%% %$ % %,3 37 36 37 3; 37 3; % % % % % % % % % 3 5' :5 7 7,17,17 7[' 5[' $$ 63,) :&2/ 6365 $ $) $( $' $&$% $$ $ $,( ($ (7 (6 (7 (; (7 (; $ $ $ $ $ $ $ $ $ 3 $GU $GU $GU $GU $GU $G5 $GU $GU 3 LMPDFtY\VtODFtUHJLVWUVpULRYpKRNDQiOX 6%8) ) ( ' &% $ 6&21 60 60 60 5(1 7% 5% 7, 5, 36 36 36 ((0:( ((0(1 '36 :'7567 :'7(1 :&21 3 6& 0,62 026, 66 7(; 7 ' 5HJLVWUþtWDþHKRUQtE\WH 7 & 5HJLVWUþtWDþHKRUQtE\WH 7 % 5HJLVWUþtWDþHGROQtE\WH 7/ $ 5HJLVWUþtWDþHGROQtE\WH 7/ %) %( %' %&%% %$ % % 702' * &7 0 0 * &7 0 0 ) ( ' &% $ 7&21 7) 75 7) 75,(,7,(,7 602' 32) *) *) 3','/ 3&21 63' 63' 63' 63' 63' 63' 63' 63' 63'5 %i]ryêuhjlvwu'375kruqte\wh '3 %i]ryêuhjlvwu'375groqte\wh '3/ %i]ryêuhjlvwu'375kruqte\wh '3 %i]ryêuhjlvwu'375groqte\wh '3/ 8ND]RYDWHO]iVREQtNRYpSDP WL 63 3 '$GU '$GU '$GU '$GU '$GU '$GU '$GU '$GU Tab 2 A 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ý vždy 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 každém okamžiku 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 uložena 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 možné 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á okamžitì 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