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.2. MIKROØADIÈ Z POHLEDU PROGRAMÁTORA
Obr. 12 Vnitøní blokové schéma mikroøadièe PIC16C5X a propojení registru W s TRIS a OPTION Z vnitøního blokového schématu je na první pohled patrno, jaké obvody tvoøí mikroøadiè a jaké jsou monosti jeho vyuití.
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura
19
Mikroøadièe PIC16C5X mají pouze obousmìrné digitální I/O porty, v závislosti na modifikaci buï 12 nebo 20bitové. Lze vyuívat èítaèe/èasovaèe RTCC, který mùe pracovat s vnitøními hodinami nebo být inkrementován z vývodu. RTCC lze rozíøit o programovatelnou pøeddìlièku. Mùe se vyuívat hlídacího èasovaèe WDT, jeho periodu lze prodlouit pøipojením programovatelné pøeddìlièky. Pøeddìlièka mùe být v daný okamik pøipojena buï pøed RTCC nebo za WDT. Mikroøadiè nemá implementovaný systém pøeruení, a vlastní pouze dvouúrovòový stack (zásobník), který umoní pouze jedno vnoøení podprogramù (v podprogramu mùe být volán podprogram, ve kterém ji není dalí volání podprogramu). Stacku nelze vyuívat k práci s daty. Mikroøadiè má oddìlenou pamì dat a pamì programu. Pro vìtí názornost je na obrázku navíc rozkresleno propojení registru W s registry TRIS a OPTION.
1.2.1.
Pamì programu (Program Memory)
Pamì programu je sloena z pøímo adresovatelných stránek. Kadá stránka obsahuje 512 dvanáctibitových slov.
Obr. 13 Organizace pamìti programu
20
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura
Instrukce se adresují postupnì prostøednictvím PC (program counter - èítaè programu), který je pøi provádìní programu automaticky inkrementován. Program mùe provádìt zmìny funkce nìkterých èástí mikroøadièe, pouívat relativní adresování, provádìt test bitù a podle nich pak vìtvit program, volat podprogramy, provádìt pøímé skoky prostøednictvím instrukcí skokù nebo zápisem pøímo do registru f2. Poznámka: Nejniích 8 bitù PC tvoøí pøímo registr f2.
Adresu instrukce, která se má vykonat tvoøí bity A10 a A0 registru PC. Bity A7/0 jsou plnìny instrukcemi GOTO a CALL. Navíc je lze naplnit instrukcí, která pouije f2 jako cílový operand (destination, cílový registr). Bit A8 se instrukcí GOTO naplní 8. bitem adresy, obsaeným v instrukci. Instrukce GOTO je tedy schopná provádìt skok na libovolné místo aktuální stránky pamìti programu. Instrukce volání podprogramu CALL a instrukce, kde je PC jako destination, tento bit nuluje. Proto musí vekeré podprogramy a èásti programù, na které se provádí skok zápisem do PC, zaèínat pouze v dolních 256 slovech aktuální stránky pamìti programu, tedy na adresách 000H0FFH, 200H2FFH, 400H4FFH nebo 600H6FFH. Bity A9 a A10 jsou naplnìny ze SWR, bity PA1 a PA0, instrukcemi GOTO, CALL a instrukcí, která pouívá PC jako cílový operand. Tím dochází k pøepínání aktuální stánky programu podle nastavení v SWR. Pøi provádìní programu je inkrementován celý registr PC, tedy vechny bity A10 a A0. Tím mùe program plynule pøecházet z jedné stránky programu na druhou. Poznámka: A7/0 je toté, jako by se napsalo A7 a A0.
U modifikací mikroøadièù, kde se pøísluný bit PA2 a PA0 registru SWR nezúèastòuje tvorby adresy, lze tento bit pouívat jako bit univerzálního registru. Na èipu je dvouúrovòový stack, pouívaný pøi volání podprogramù. Do tohoto stacku se ukládá vdy celá adresa z PC.
1.2.2.
Aritmeticko-logická jednotka ALU (Arithmetic/Logic Unit)
ALU provádí aritmetické a logické operace mezi daty umístìnými v registru W a daty umístìnými v libovolném registru pole registrù. Podle výsledkù nìkterých operací nastavuje pøíznakové bity C, DC a Z v registru SWR. Které instrukce ovlivòují nastavení jakých pøíznakù je podrobnì popsáno v popisu instrukcí mikroøadièe. Význam pøíznakù je vysvìtlen v popisu SWR registru.
1.1.3.
Working Register (W) - pracovní registr
W registr je 8bitový registr, který podporuje vnitøní pøenosy dat a uchovává druhý operand pøi provádìní dvouoperandových instrukcí.
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura
21
1.2.4.
Pole datových registrù (Data Register File)
8bitová datová sbìrnice vzájemnì propojuje dvì základní funkèní jednotky; pole registrù, sloené nejvýe z 80 adresovatelných 8bitových registrù vèetnì I/O portù a 8bitovou ALU (Aritmeticko-logickou jednotkou). Pole registrù je rozdìleno do dvou funkèních skupin na speciální registry a univerzální registry. 1.2.4.1. Univerzální a speciální registry Univerzální registry jsou vyuívány pøi práci s daty jako pamì RAM. Mikroøadièe PIC16C54/55/56 mají pole univerzálních registrù pouze na adresách 08H/1FH. PIC16C57 má adresní prostor pole univerzálních registrù rozdìlen následovnì: Na adresách 08H/0FH má pole univerzálních registrù, které je aktivní vdy, bez ohledu na vybranou banku registrù. Toto pole je tedy fyzicky shodné s poli na adresách 20H/2FH, 40H/4FH a 60H/6FH. 10H/1FH 30H/3FH 50H/5FH 70H/7FH
univerzální univerzální univerzální univerzální
registry registry registry registry
banky banky banky banky
0 1 2 3.
Obr. 14 Mapa pamìti dat
22
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura
Speciálními registry jsou: registr nepøímého adresování dat (indirect data addressing), RTCC (Real Time Clock Counter - èítaè reálného èasu), PC (Program Counter - èítaè programu), SWR (Status Word Register - registr stavového slova), I/O Registers (registry vstupù/výstupù) a FSR (File Select Register - registr výbìru z pole registrù), registry TRIS, OPTION (prescaler/RTCC OPTION register - registr volby pøeddìlièky, RTCC a WDT), PRESCALER (pøeddìlièka) a WDT (Watch Dog Timer - hlídací èasovaè). 1.2.4.2. f0 Registr nepøímého adresování dat Nejde o fyzicky implementovaný registr. Adresace pomocí f0 (File Select Register) probíhá následovnì. Provádí-li program operaci s registrem f0 nebo s registrem, jeho adresa je 00H, mikroøadiè tuto operaci ve skuteènosti provádí s registrem, jeho adresa je uloena v registru FSR. Pokud nepouíváme v instrukcích pøímo adresu registru, se kterým chceme pracovat, ale pouijeme adresu, na které se teprve nachází poadovaná adresa, provádíme takzvané nepøímé adresování registru dat. Pøíklad:
Obsah FSR = 06H
Instrukce zápisu dat z registru W do registru f0 provede ve skuteènosti zápis tìchto dat do registru, který má adresu 06H a tím je port B.
Je-li f0 èten sám prostøednictvím nepøímého adresování (tedy FSR = 00H), pøeète se 00H. Pokud provedeme zápis do f0 pøi nepøímém adresování (tedy FSR = 00H), bude proveden NOP nebo-li prázdná operace. 1.2.4.3. f1 Real Time Clock/Counter Register (RTCC) - hodiny/èítaè reálného èasu
Obr. 15 Zjednoduené blokové schéma RTCC Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura
23
Poznámka: V novém katalogu je RTCC nazýván TMR0 (TiMeR 0 - èasovaè 0)
Tento registr mùe být programem èten a zapisován jako kadý jiný registr. Jeho obsah vak mùe být inkrementován externím signálem (z vývodu RTCC) nebo vnitøními hodinami (CLKOUT = fosc/4). Navíc mùe být pøed RTCC pøipojena programovatelná 8bitová pøeddìlièka. Pøipojení a nastavení pøeddìlièky se provádí programovì pomocí bitù PS a PSA registru OPTION. Je-li pøeddìlièka pøipojená k RTCC, pak zápis do f1 (napø. MOVFf1, CLRF1, BSF1, 5,...) nuluje také tuto pøeddìlièku. Pro aplikace, které testují RTCC bez vlivu na èítání doporuèujeme pouít instrukci MOVF f1,W. 1.2.4.3.1. Pravidla pøi pouití RTCC s externími hodinami Je-li pouit vývod RTCC ke vstupu externích hodin, je synchronizován s fází vnitøních hodin. Synchronizace se uskuteèòuje za multiplexerem, který k RTCC pøipojuje pøímo vstup, nebo vstup pøes pøeddìlièku. Vstup do RTCC je testován dvakrát za instrukèní cyklus.
Obr. 16 Èasování RTCC pøi pouití vnìjích hodin Parametry pulzù pøivádìných na vývod RTCC mikroøadièe byly popsány v kapitole Mikroøadiè PIC16C5X z pohledu konstruktéra elektronika. Proto ji zde nebudou znovu uvádìny. 1.2.4.3.2. Zpodìní hrany externích hodin Vstup do registru RTCC je synchronizován s vnitøními hodinami. Existuje malé zpodìní mezi aktivní hranou pulzu a skuteènou inkrementací registru RTCC. Toto zpodìní je vidìt na obrázku a pohybuje se mezi 3 tosc 7 tosc. Interval mezi hranami bude indikován s pøesností ±4 tosc. 1.2.4.3.3. OPTION registr 6bitový WRITE ONLY (lze do nìj pouze zapisovat) speciální registr (nemapovaný do datové pamìti). K nastavení tohoto registru se pouívá instrukce OPTION, která do nìj pøenese obsah W registru.
24
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura