Mikro adi e Ing. Jaroslav Bernkopf 3. ervna 2009
1. 2.
OBSAH Úvod .............................................................................................. 4 Architektura po íta ................................................................. 5
2.1 Architektura Von Neumannova .................................................................5 2.2 Architektura Harvardská ............................................................................6 2.3 Soubory instrukcí .......................................................................................6
3. 4.
2.3.1 2.3.2
CISC .......................................................................................................................6 RISC .......................................................................................................................7
Mikro adi e 16F84 a 16F883 ..................................................... 8 Blokové schéma ......................................................................... 10
4.1 Popis blok ...............................................................................................10 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.1.10
ALU – Arithmetic and Logic Unit .......................................................................10 W register .............................................................................................................10 RAM File Registers ..............................................................................................10 EEPROM ..............................................................................................................10 Flash Program Memory........................................................................................10 Program Counter ..................................................................................................10 Instruction Decode and Control ...........................................................................11 Timing Generation ...............................................................................................11 Timers...................................................................................................................11 Timer0 – Timer2 ...............................................................................................12
4.2 Rozložení vývod ....................................................................................14 4.3 Popis vývod ............................................................................................14
5.
4.3.1 4.3.2 4.3.3 4.3.4
ídicí vývody .......................................................................................................14 Skupina RA ..........................................................................................................14 Skupina RB ..........................................................................................................15 Napájecí vývody ...................................................................................................15
Organizace datové pam ti RAM 16F84 .................................. 16
5.1 Rozd lení pam ti RAM ...........................................................................16 5.1.1 5.1.2
Rozd lení pam ti RAM podle ú elu a použití .....................................................16 Rozd lení pam ti RAM na stránky ......................................................................18
5.2 Význam n kterých registr speciálních funkcí .......................................19
6.
Instruk ní soubor 16F84 .......................................................... 23
6.1 Definice ....................................................................................................23 6.2 Syntaxe asembleru ...................................................................................24 6.2.1 6.2.2 6.2.3
Malá, velká písmena .............................................................................................24 íselné formáty ....................................................................................................24 Komentá e ............................................................................................................25 2
6.2.4
Zkratky .................................................................................................................25
6.3 Instrukce aritmetických a logických operací ...........................................27 6.3.1 6.3.2
Operace s konstantou ...........................................................................................27 Operace s registrem RAM ....................................................................................27
6.4 Instrukce p esun .....................................................................................28 6.5 Instrukce skok ........................................................................................28 6.6 Instrukce nulování a nastavení.................................................................29 6.7 Instrukce pro podprogramy a p erušení ...................................................30 6.8 Zvláštní instrukce .....................................................................................31 6.9 Zastaralé instrukce ...................................................................................31
7.
Úlohy ........................................................................................... 32
7.1 Drát...........................................................................................................32
3
1. Úvod ásti po • • • •
Mikro adi je integrovaný obvod, který na jednom ipu obsahuje všechny podstatné íta e: aritmeticko – logická jednotka pam ROM pam RAM vstupy / výstupy
Mikro adi obvykle obsahuje i další ásti, nap . • asova e • hlídací asova (watchdog) • generátor taktovacího signálu • • • •
Program mikro adi e m že být uložen v r zných variantách pam ti ROM: ROM EPROM EEPROM Flash ROM
Pam ROM se hodí tam, kde se budou vyráb t velká množství adi vybavených stejným programem. Její obsah je vytvo en už p i výrob a je nem nný. EPROM vyžaduje speciální vybavení pro mazání starého obsahu ultrafialovým sv tlem, a programátor, kterým se naprogramuje nový obsah. EEPROM se hodí pro menší kapacity a nep íliš asté p episování. Je pomalá a po et p episovacích cykl je omezený. Flash ROM se hodí pro velké kapacity. Je rychlejší než EEPROM a umož uje v tší po et p episovacích cykl .
4
2. Architektura po íta 2.1 Architektura Von Neumannova Po íta s Von Neumannovou architekturou má jen jedinou sb rnici, která je spole ná jak pam ti pro data, tak pam ti pro program. Program i data dokonce mohou sídlit v jediné spole né pam ti. Takto jsou uspo ádány nap . osobní po íta e.
Obrázek 1: Von Neumannova architektura po íta e
5
2.2 Architektura Harvardská Po íta s Harvardskou architekturou má samostatné pam ti jak pro program, tak pro data. Každá z t chto pam tí má samostatnou sb rnici. Tak jsou uspo ádány nejznám jší jedno ipové mikropo íta e (nap . 8051) a mikro adi e (nap . 16F84).
Obrázek 2: Harvardská architektura po íta e Von Neumannova Harvardská Umíst ní instrukcí a dat V jediné spole né pam ti Ve dvou odd lených pam tech P epsání programu jeho vlastní Je možné Není možné inností Sou asné vyzvednutí instrukce a Není možné Je možné dat Rychlost Menší V tší Složitost, po et propojení Menší V tší Tabulka 1: Porovnání vlastností Von Neumannovy a Harvardské architektury
2.3 Soubory instrukcí Procesory a adi e jsou ízeny programem, který se skládá z jednotlivých pokyn – instrukcí. P i tvorb programu programátor používá instrukce k naprogramování inností, které má p ístroj provád t.
2.3.1 CISC CISC = Complex Instruction Set Computer – po íta se složitým instruk ním souborem. Procesor disponuje mnoha desítkami instrukcí. Programátor musí tyto instrukce zvládnout, musí se je nau it, což je náro né. Na druhou stranu jsou ale mnohé instrukce velmi výkonné, takže jedna taková instrukce nahradí n kolik jednodušších. Instrukce bývají specializované tak, že n které pracují jen s ur itými registry1, jiné zase s jinými registry. P i programování ve vyšších jazycích (nap . C, Pascal) nejsou výkonné instrukce CISC p íliš využity, protože p eklada z vyššího jazyka do strojového kódu stejn pro
1
Bu ky pam ti RAM uvnit procesoru se asto nazývají registry.
6
složit jší operace nepoužije výkonné, ale pomalé instrukce CISC, ale rozepíše tyto operace pomocí rychlých jednoduchých instrukcí. Procesor je složitý a má velkou spot ebu. Kv li složitosti je obtížné dosáhnout velké rychlosti zpracování instrukcí. Procesory CISC obvykle používají Von Neumannovu architekturu. Ta procesoru umož uje zapisovat jak do pam ti dat, tak do pam ti programu. To lze využít nap . k tomu, aby program svojí inností zm nil sám sebe.
2.3.2 RISC RISC = Reduced Instruction Set Computer – po íta s omezeným instruk ním souborem. Procesor disponuje malým souborem instrukcí. Programátor se je snadno nau í, proto je snadné s takovým procesorem za ít pracovat. Soubor instrukcí je ortogonální (nebo také symetrický). To znamená, že je možné v tšinu instrukcí provád t na kterémkoliv registru. Instrukce nevyžadují žádné speciální podmínky, výjimky, omezení, nemají žádné vedlejší vlivy. Proto je práce s nimi snadná a nezáludná. Programy vzniklé ve vyšších programovacích jazycích (nap . C) jsou s RISC rychlé a ú inné. Procesor je jednoduchý. ip má malou plochu, málo vývod , proto je levný. Spot eba je malá. Instrukce jsou sice mén „chytré“, ale zato se vykonávají rychle. Procesory RISC obvykle používají Harvardskou architekturu. Ta umož uje sou asný p ístup k programu i k dat m a sou asné vykonávání n kterých operací (overlapping – p ekrývání).
7
3. Mikro adi e 16F84 a 16F883 PIC 16F84 a 16F883 jsou typickými p edstaviteli 16F883. Základní vlastnosti: Parametr Technologie Po et vývod Po et instrukcí Po et cykl na instrukci (všechny krom v tvení) Po et cykl na instrukce v tvení Ší ka instrukcí Ší ka datové sb rnice Kapacita pam ti programu [kB] Kapacita pam ti programu [kslov] Kapacita pam ti RAM [B] Kapacita pam ti EEPROM [B] Po et speciálních funk ních registr (SFR) Po et vstup / výstup Po et vstupních analogových kanál Po et A/D p evodník Možnost vlastního zápisu do pam ti programu ICD – In-Circuit Debugger Programov nastavitelný kmito et interního oscilátoru Hloubka HW sklípku Programování Napájecí proud (5 V, 4 MHz) (2 V, 32 kHz) (2 V, standby) Cena (17. dubna 2009)
jednoduchých, ale výkonných mikro adi . Za ínali jsme s typem 16F84, p echázíme na 16F84 CMOS 18 35 1 2 14 bit 8 bit 1,75 1 68 64 15 13 0 0 Ne Ne --8 Sériové p es dva vývody < 2 mA 15 A <1 A 3,11 USD 8
16F883 CMOS 28 35 1 2 14 8 7 4 256 256 Víc, p ibyly funkce 25 11 1 Ano Ano 32 kHz – 8MHz 8 < 1,4 mA < 19 A 50 nA 1,37 USD
Oba adi • • • • • •
e dále obsahují tyto obvody: Oscilátor nastavitelný do ty mód innosti asova s nastavitelnou p edd li kou Obvod pro resetování p i náb hu napájení (Power – on Reset) asova pro nabíhání oscilátoru (Oscillator Start-up Timer) asova pro náb h napájení (Power-up Timer) Hlídací asova (Watchdog)
adi 16F883 obsahuje tyto další obvody: • Vestav ný oscilátor • Komparátory • A/D p evodník • Moduly pro sériovou komunikaci RS-485, RS-232 SPI, I2C
9
4. Blokové schéma Blokové schéma uvedené na obrázku dále je velmi zjednodušené. Sb rnice jsou nazna ené šipkami, které jsou jednosm rné tam, kde je p enos jednosm rný (nap . p enos adres), obousm rné tam, kde je p enos obousm rný (nap . p enos dat). Skute né sb rnice uvnit mikro adi e jsou mnohem komplikovan jší a nedají se jednozna n rozd lit na adresové, datové, ídicí.
4.1 Popis blok 4.1.1 ALU – Arithmetic and Logic Unit Aritmeticko – logická jednotka. Je to obvod, ve kterém se provád jí aritmetické a logické operace. Do t chto operací mohou vstupovat data z registr SFR a GPR, ze kterých se skládá pam RAM (viz dále) a data z registru W. Výsledky operací se mohou uložit do SFR a GPR, nebo do registru W.
4.1.2 W register W register (Working register = pracovní registr) je osmibitový pracovní registr používaný pro operace v aritmeticko logické jednotce. P i operacích, do kterých vstupují dva operandy, obvykle jeden operand je v pracovním registru (W), druhý operand je v registru v pam ti RAM. Druhý operand m že také být konstanta, kterou do programu vložil už programátor. Výsledek aritmetické nebo logické operace m že být vložen do pracovního registru (W) nebo do registru RAM.
4.1.3 RAM File Registers Registry, RAM. Blok zahrnuje speciální funk ní registry (Special Function Registers – SFR) a registry pro všeobecné ú ely (General Purpose Registers – GPR). Registry mohou vstupovat jako operandy do aritmetických a logických operací, a výsledky t chto operací mohou do nich být uloženy. SFR slouží k nastavení r zných mód innosti. Ovliv ují stav a innost ostatních ástí adi e. Nap . registr TRISA ur uje, zda jednotlivé vývody portu A budou vstupy nebo výstupy. SFR jsou na adresách 0 – 0BH, 80H – 8BH. GPR slouží ke krátkodobému uložení informací. Je jich 68 a jsou na adresách 0CH - 4FH.
4.1.4 EEPROM Je to pam dat typu EEPROM. Obsahuje 64 pam ových bun k po 8 bitech na adresách 0 - 3FH. Tyto adresy nepat í do stejného prostoru jako adresy SFR a GPR. Bu ky pam ti dat nelze adresovat p ímo, nelze ani p ímo íst a p episovat jejich obsah. Toto vše se musí d lat prost ednictvím pomocných registr EEADR (p enáší adresu) a EEDATA (p enáší data). Druh operace je p i tom ur en registry EECON1, EECON2 (nejsou na blokovém schématu).
4.1.5 Flash Program Memory P episovatelná ROM pam programu. Obsahuje 1024 míst po 14 bitech. Dá se naprogramovat pomocí jednoduchého programátoru, nebo p ímo v za ízení, ve kterém je adi použit.
4.1.6 Program Counter íta instrukcí programu. Po vykonání každé instrukce programu zvyšuje sv j stav o jedni ku, a tak ukazuje na další instrukci programu, která se má vykonat. Výjimkou jsou 10
instrukce v tvení, po kterých m že dojít ke skokové zm n stavu íta e, a tím ke skoku do jiného místa programu.
4.1.7 Instruction Decode and Control Dekódování instrukcí. Zde se každá instrukce rozepíše na podrobné pokyny pro jednotlivé bloky, jak mají instrukci provést.
4.1.8 Timing Generation asování. Obsahuje obvody, které s pomocí vn jších sou ástí (R, C, krystal) mohou generovat taktovací kmito et. Nebo lze bez použití vn jších sou ástí p ivád t taktovací kmito et do vstupu OSC1/CLKIN. Z vývodu OSC2/CLKOUT lze v obou p ípadech taktovací signál odebírat.
4.1.9 Timers a) Power up Timer (PWRT) asova p i zapnutí. Po zapnutí napájení drží po dobu 72 ms celý adi ve stavu reset. Tím nap . zabrání p ípadnému nežádoucímu zápisu do datové pam ti EEPROM.
b) Oscillator Start-up Timer (OST) Po zapnutí napájení drží adi ve stavu reset, dokud nenab hne oscilátor. Stav reset se zruší, až když se napo ítá 1024 impuls hodinového signálu. Pokud by napájecí nap tí nabíhalo velmi pomalu, nemuselo by toto sta it. V takovém p ípad je vhodné použít vn jší RC obvod, p ipojený k obvodu Power-on Reset p es vstup MCLR (viz dále).
c) Power-on Reset (POR) Obvod POR generuje resetovací signál vždy, když je na napájecím nap tí vzestupná hrana. P ipojíme-li vstup MCLR na napájecí nap tí, generuje se reset p i každém náb hu napájení. Pokud napájení nabíhá velmi pomalu, je vhodné doplnit na vstup MCLR následující RC obvod:
Obrázek 3: RC obvod zajiš ující správný start i p i pomalém náb hu napájení
d) Watchdog Timer (WDT) Hlídací asova . (Watch-dog je hlídací pes.) WDT je obvod, který když je aktivován, provede po 18 ms reset adi e, pokud není do té doby vynulován instrukcí CLRWDT. Umožní to p edejít tomu, že by se adi zaseknul a p estal pracovat. To se m že stát nap . tak, že program z stane tr et v n jaké nekone né smy ce (chyba programátora nebo rušivý impuls v napájecím nap tí), nebo p estal fungovat oscilátor (chyba hardwaru). 11
Chceme-li WDT používat, zapneme ho nastavením konfigura ního bitu WDTE na 1. Pak programov vždy nejpozd ji do 18 ms provedeme instrukci CLRWDT. Pokud tato instrukce do 18 ms nep ijde, WDT provede reset adi e. To umožní vzpamatování z nežádoucích stav , po kterých by jinak adi z stával v nedefinovaném stavu. Pokud je doba 18 ms p íliš krátká, m žeme p ed WDT programov za adit p edd li ku (prescaler). WDT se tedy chová jako znovuspustitelný monostabilní obvod, který je spoušt n instrukcí CLRWDT. Není-li spušt n v as (do 18 ms), vyvolá reset adi e. WDT má sv j vlastní integrovaný oscilátor, jehož perioda je dána hodnotami R, C na ipu. Tím je WDT nezávislý na ostatních obvodech adi e, p edevším na jeho hodinovém kmito tu. Na druhou stranu to znamená, že doba „18 ms“ nemusí být vždy p esn 18 ms, ale bude záviset nap . na teplot , napájecím nap tí, výrobní sérii. Což ale nevadí, protože jde o to, aby se adi vzpamatoval z havarijního stavu, a nezáleží p íliš na tom, zda k tomu dojde o n kolik ms d íve nebo pozd ji. P íklad Mikro adi má ídit pumpování vody do zásobníku tak, aby v zásobníku byl dostatek vody, ale zárove aby zásobník nep etekl. Mikro adi m že být p i tom ízen nap . takovýmto programem (n které jeho ádky jsou psány jazykem „lidským“, nikoliv tedy v asembleru): ZNOVU:
Hladina dosažena? Ne, zapni erpadlo. Ano, vypni erpadlo. CLRWDT Jdi na ZNOVU.
; Vynuluj WDT
Za normálních okolností adi stále obíhá v této smy ce a zapíná – vypíná erpadlo tak, aby hladina byla na správné výši. Pokud dojde k takové chyb , která zp sobí, že adi tuto smy ku opustí (nap . po neúplném výpadku napájení – brown-out), WDT po 18 ms zp sobí reset. Sou ástí programu po resetu m že být nap . i p ivolání obsluhy.
e) Brown-out Reset
Aktivuje se a vyvolá restart p i neúplném výpadku napájení.1
4.1.10 Timer0 – Timer2 Osmibitové asova e (timer) a íta e (counter). Mohou po ítat události, t eba po et impulz . Mohou d lit kmito et, odm ovat asové intervaly.
1
Black-out je výpadek, který vyvolá úplnou ( ernou = black) tmu. Brown-out je pokles nap tí, který zp sobí pouze snížení jasu žárovek. Jejich vlákna jsou pak hn dá (= brown).
12
Obrázek 4: Blokové schéma 16F883
13
Vývody 16F883
4.2 Rozložení vývod
1
Obrázek 5: Rozložení vývod 16F883
Až sem byl zatím text aktualizován a dopln n o údaje 16F883 3. 6. 2009 4.3 Popis vývod 4.3.1 ídicí vývody OSC1/CLKIN, OSC2/CLKOUT slouží k p ipojení vn jších sou ástí, které jsou zapot ebí pro vytvo ení vlastního oscilátoru. Vlastní oscilátor m že podle zvoleného módu být bu krystalový, nebo RC. OSC1/CLKIN m že sloužit jako vstup vn jšího hodinového signálu v p ípad , že adi si nevyrábí vlastní hodinový signál, ale bere ho zvenku. OSC2/CLKOUT m že sloužit jako výstup hodinového signálu, a to jak v p ípad vlastního oscilátoru, tak i v p ípad vn jšího hodinového signálu. MCLR (Master CLeaR – hlavní nulování) resetuje celý adi . Je aktivní v nule. Po resetu se za íná vykonávat program z pam ti programu od jeho první instrukce. P i programování obvodu 16F8X slouží MCLR k p ivedení programovacího nap tí.
4.3.2 Skupina RA Vývody RA0 – RA4 jsou souhrnn ozna ovány jako PORTA. Mohou být naprogramovány jako vstupy nebo výstupy, a to každý zvláš . M žeme naprogramovat libovolnou kombinaci vstup a výstup . Nap . mohou být vývody RA0, RA2, RA4 jako vstupy, vývody RA1 a RA3 jako výstupy. RA4/T0CKI m že být naprogramován také jako vstup íta e TMR0 (T0CKI = Timer ClocK Input).
1
PDIP = Plastic Dual In line Package; SOIC = Small-Outline Integrated Circuit 14
4.3.3 Skupina RB Vývody RB0 – RB7 jsou souhrnn ozna ovány jako PORTB. Také mohou být naprogramovány jako vstupy nebo výstupy, a to každý zvláš , podobn jako vývody PORTA. Je-li n který vývod RB naprogramován jako vstup, lze mu programov p i adit interní tzv. „pull-up“ rezistor, který zajistí úrove 1 na vstupu v p ípad , že na n j není nic p ipojeno (když necháme vstup „ve vzduchu“). RB0/INT je možno naprogramovat jako vstup externího p erušení. RB4-RB7 je možno naprogramovat tak, že p i zm n stavu na kterémkoliv z nich se vyvolá p erušení. RB6 slouží p i sériovém programování obsahu pam ti programu jako vstup sériového programovacího hodinového signálu. RB7 slouží p i sériovém programování obsahu pam ti programu jako sériový vstup dat.
4.3.4 Napájecí vývody VSS je zem pro napájení a signály. VDD je vstup pro kladné napájecí nap tí.
15
5. Organizace datové pam ti RAM 16F84 5.1 Rozd lení pam ti RAM Datová pam
je (jakoby vodorovnou arou) rozd lena do dvou oblastí podle ú elu a
použití: • SFR – Special Function Registers – registry speciálních funkcí • GPR – General Purpose Registers – univerzální registry Další d licí áru si m žeme p edstavit svislou, a ta d lí datovou pam stránky (Banks): • Bank 0 – banka 0 • Bank 1 – banka 1
na dv
5.1.1 Rozd lení pam ti RAM podle ú elu a použití a) SFR – Special Function Registers Registry speciálních funkcí se používají pro ízení innosti adi e. Zm nou jejich obsahu tedy m žeme programov m nit innost adi e. Registry speciálních funkcí jsou na adresách 00-0BH a 80H-8BH. P íklad Obsahem registru TRISB se ur í, které vývody RB budou vstupy a které výstupy. Ur itý bit registru nastavený na jedni ku znamená, že odpovídající vývod bude pracovat jako vstup. Nastavení bitu na nulu znamená, že odpovídající vývod bude pracovat jako výstup. Nap . zapíšeme-li do registru TRISB íslo 7BH, bude nastavení vývod RB následující: Vývod RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 RB Bit registru TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 TRISB2 TRISB1 TRISB0 TRISB Hodnota bitu 0 1 1 1 1 0 1 1 TRISBx Funkce vývodu výstup vstup vstup vstup vstup výstup vstup vstup RBx
b) GPR – General Purpose Registers Univerzální registry slouží jako pam RAM pro krátkodobé uložení informací. adi 16F84 má k dispozici 68 t chto registr , které leží na adresách 0CH-4FH. Z obrázku (Obrázek 6) by se mohlo zdát, že univerzálních registr je k dispozici 2x68, což není pravda. Registry na stránce 1 jsou totiž mapovány do stránky 0. To znamená, že nap . p es adresu 8FH se dostaneme do stejného místa, jako p es adresu 0FH, tj. do registru 0FH. Adresy 50H-7FH (a D0H-FFH) nejsou u 16F84 využity. Budou využity v nov jších verzích adi e.
16
Obrázek 6: Organizace datové pam ti RAM 16F84
17
5.1.2 Rozd lení pam ti RAM na stránky STATUS registr RP1 (bit 6) RP0 (bit 5) Vybraná stránka 0 0 0 0 1 1 1 0 2 1 1 3 Tabulka 2: Výb r stránky pam ti pracujeme jen s RP5.
Výb r stránek pam ti se provádí nastavením bit RP1 (bit 6) a RP0 (bit 5) v registru STATUS (Tabulka 2). U obvod 16F84 nejsou stránky 2 a 3 využity. Proto se ty kombinace bit registru STATUS, které by jim odpovídaly, nemají používat. U obvod 16F84 se tedy o bit RP1 nestaráme, p edpokládáme, že je rovný nule, a
N které registry jsou zdánliv zdvojené – vyskytují se na stránce 0 i 1. Nejsou ale zdvojené tyto registry, pouze p ístup k nim. Jsou to ty registry, které musejí být dostupné z obou stránek. Typickým p íkladem je práv registr STATUS.
18
5.2 Význam n kterých registr speciálních funkcí INDF, Indirect Address, nep ímá adresa, 00H, 80H Není to fyzický registr. P i zápisu do n j nebo tení z n j je k operaci použit registr, jehož adresa je v registru FSR. Tím je umožn no tzv. nep ímé adresování, p i kterém není nutno adresu znát už p i psaní programu, ale je možno ji vypo ítat až za b hu programu. Kdybychom nap . cht li vynulovat deset vzájemn sousedících registr , bez nep ímého adresování bychom p i jejich nulování museli ve svém programu postupn „vyjmenovat“ všechny jejich adresy. S nep ímým adresováním zadáme ve svém programu adresu po áte ního registru, po et nulovaných registr , a pak necháme smy ku programu, aby postupn vypo ítala adresy dalších nulovaných registr .
TMR0, Timer / Counter, asova / íta , 01H Osmibitový íta , jehož vstup m že být p ipojen bu na interní signál (pak se mu íká asova ), nebo na externí signál (pak se mu íká íta ). P ed n j je možno za adit programovatelnou p edd li ku, která m že d lit v pom ru 1:2 až 1:256. TMR0 je možno naprogramovat tak, že p i p ete ení, tj. p i p echodu ze stavu FFH do stavu 00H vyvolá p erušení.
OPTION, Volba, 81H Nastavením jeho bit je možno ovládat p edd li ku, vn jší p erušení, asova , pull-up rezistory na portu PORTB. 7 RBPU
6 INTEDG
5 T0CS
4 T0SE
3 PSA
2 PS2
íta
1 PS1
–
0 PS0
Význam n kterých bit Bit 0 – bit 2: Prescaler Rate Select – výb r d licího pom ru p edd li ky. Osm možných kombinací t chto t í bit umož uje výb r z osmi r zných d licích pom r p edd li ky (2, 4, 8, 16, 32, 64, 128, 256). Bit 3: Prescaler Assignment – p i azení p edd li ky. P i azuje p edd li ku bu asova TMR0, nebo p ed hlídací asova WDT.
p ed íta /
Bit 5: TMR0 Clock Source Select – výb r zdroje hodin pro asova TMR0. P ipojuje vstup asova e TMR0 bu k vývodu RA4 / T0CKI, nebo na vnit ní hodiny (CLOCKOUT). Bit 7: PORTB Pull-up Enable – aktivace interních rezistor , které p ipojí vstupy portu B na kladné napájecí nap tí.
PCL, Program Counter Low, nižší ást programového íta e, 02H, 82H Nižších 8 bit programového íta e. Jeho p epsáním je možno zp sobit skok na adresu, která nebyla známa v dob psaní programu, ale je výsledkem výpo tu (Computed GOTO).
STATUS, Stav, 03H, 83H T i bity registru STAUS obsahují informaci o stavu ALU, nebo jinak e eno o výsledku minulé operace : Zda výsledek byl nulový a zda p i n m došlo k p enosu / výp j ce. Dva bity informují o innosti instrukce SLEEP a WDT. 19
Dva bity jsou použity pro nastavení stránky pam ti. 7 IRP
6 5 RP1 RP0 Register Bank Select
4 TO/ Time-out
3 PD/ Powerdown
2 Z Zero
1 DC Digit Carry
0 C Carry
Význam n kterých bit Bit 0: Carry – p enos. Nastaví se na 1, když p i s ítání dojde k p ete ení (výsledek je v tší než 255), když p i od ítání dojde k podte ení (výsledek je menší než 0). Tento bit se také ú astní operací rotace p i instrukcích RRF, RLF. Bit 2: Zero – nula. Nastaví se na 1, když výsledkem aritmetické nebo logické operace je nula. Bit 5: Register Bank Select – výb r banky. Je-li jeho hodnota 0, sm ují operace s pam tí do banky 0. Je-li jeho hodnota 1, sm ují operace s pam tí do banky 1. Bit 6: Register Bank Select – výb r banky. U 16F84 není využit. Má být udržován na hodnot 0, aby programy byly kompatibilní s vyššími verzemi mikro adi , které ho budou využívat.
FSR, File Select Register, registr pro výb r místa v pam ti, 04H, 84H Viz výše odstavec o INDF.
PORTA, Port A, 05H využity. TRISA.
P tibitový registr, spojený s p íslušnými vn jšími vývody. T i jeho bity nejsou Funkce jednotlivých vývod (vstup / výstup) se programuje nastavením bit registru
TRISA, TRI State A, 85H Nastavením jeho bit se nastavuje funkce vývod PORTA. Použití obdobné jako u registru TRISB, jehož funkce byla vysv tlena v p íkladu výše.
PORTB, Port B, 06H TRISB.
Osmibitový registr, spojený s p íslušnými vn jšími vývody. Funkce jednotlivých vývod (vstup / výstup) se programuje nastavením bit registru
TRISB, TRI State B, 86H Viz popis TRISA a p íklad o programování PORTB výše.
20
EEDATA, EEprom DATA, 08H P ed zápisem do EEPROM umístíme do tohoto registru hodnotu, která se má zapsat. P i tení z EEPROM se v tomto registru objeví tená hodnota.
EEADR, EEprom ADdRess, 09H P ed zápisem do EEPROM umístíme do tohoto registru adresu, na kterou se má zapsat. EEPROM adi e 16F84 má kapacitu 64 bajt s adresami 00H – 3FH. Uvedené adresy nejsou sou ástí adresového prostoru pam ti RAM. Proto mohou mít stejné hodnoty jako adresy n kterých registr SFR, GPR.
EECON1, EEprom CONtrol 1, 88H Registr, jehož bity se ídí zápis a tení do/z EEPROM. Bit WREN (WRite ENable) musí být nastaven p ed zápisem do EEPROM. Použijeme ho tak, že p ed zápisem do n kolika bun k EEPROM ho nastavíme, zapíšeme do bun k, a po skon ení zápisu do poslední bu ky ho vynulujeme. Bit WR (WRite) dává povel k vykonání jednoho zápisu do jedné bu ky EEPROM. Po skon ení zápisu je WR automaticky hardwarov vynulován. P ed zápisem do další bu ky se tedy musí znovu nastavit. Aby zápis byl možný, musí být nastavený WREN (viz výše). Bit RD (ReaD) dává povel k vykonání jednoho tení z jedné bu ky EEPROM. Po skon ení tení je RD automaticky hardwarov vynulován. P ed tením z další bu ky se tedy musí znovu nastavit.
EECON2, EEprom CONtrol 2, 89H P ed zápisem do každé bu ky EEPROM je nutno zapsat do EECON2 hodnotu 55H a potom 0AAH. Zápis do EEPROM je tak jišt n n kolikerým zp sobem, aby nedošlo k necht nému p epsání jejího obsahu.
P íklady užití EECON1, EECON2 tení z EEPROM BCF MOVLW MOVWF BSF BSF BCF MOVF
STATUS, RP0 CONFIG_ADDR ; EEADR STATUS, RP0 EECON1, RD STATUS, RP0 EEDATA, W
; Bank 0 ; Address to read ; Bank 1 ; EE Read ; Bank 0 ; W = EEDATA
21
Zápis do EEPROM ; v EEADR je p ipravená adresa ; v EEDATA je p ipravená hodnota, která se má zapsat BSF STATUS, RP0 ; Bank 1 BCF INTCON, GIE ; Disable INTs. BSF EECON1, WREN ; Enable Write MOVLW 55h ; MOVWF EECON2 ; Write 55h MOVLW AAh ; MOVWF EECON2 ; Write AAh BSF EECON1,WR ; Set WR bit ; begin write BSF INTCON, GIE ; Enable INTs.
PCLATH, PC LAtch High, 0AH, 8AH Registr PCLATH je ur en spíše pro budoucí použití u adi , které budou mít v tší pam pro program. U adi e 16F84 tento registr použijeme jen p i tvorb pokro ilých program .
INTCON, INTerrupt CONtrol, 0BH, 8BH P t bit povoluje / zakazuje všechny druhy p erušení, které 16F84 umož uje. T i bity obsahují tzv. p íznaky (flags), které informují o tom, zda k ur itému p erušení došlo nebo ne.
22
6. Instruk ní soubor 16F84 6.1 Definice asembler
• •
jazyk, ve kterém píšeme program pro mikro adi program (p eklada ), který p ekládá zdrojový program (napsaný v asembleru – jazyku) do strojového kódu instruk ní doba, za kterou se vykoná v tšina instrukcí; má délku ty period signálu cyklus oscilátoru komentá text uvozený st edníkem, který slouží jako nadpis nebo vysv tlivka náv ští ozna ení místa v programu, které je cílem skoku nebo volání podprogramu podprogram ást programu, která se v pam ti programu vyskytuje jen jednou, ale b hem vykonávání programu se vykonává víckrát pomocí volání instrukcí CALL nebo pomocí p erušení programátor • lov k tvo ící program • za ízení na programování PROM, EPROM, adi p eklada program, který p ekládá zdrojový program do strojového kódu p erušení p erušení vykonávaného programu a skok na program obsluhy za ízení, které si p erušení vyžádalo sklípek pam , do které se ukládá návratová adresa p i p erušení smy ka ást programu, která se díky zp tné vazb (skoku z konce na za átek) vykonává opakovan strojový program, jehož instrukce jsou v podob binárních ísel tak, že je adi m že kód p ímo vykonávat syntaxe pravidla „pravopisu“ programovacího jazyka zdrojový program napsaný v asembleru program
23
6.2 Syntaxe asembleru Aby po íta rozum l zdrojovému programu a byl schopen p eložit ho pomocí p eklada e do strojového kódu, musí být zdrojový program napsán podle p esných pravidel.
6.2.1 Malá, velká písmena V programu m žeme používat velká i malá písmena. P i psaní instrukcí a ísel jsou si malá i velká písmena rovnocenná. P íklad MOVLW 0xD2 movlw 0xd2 Movlw 0Xd2 jsou tytéž instrukce. P i psaní náv ští m žeme rovn ž používat malá i velká písmena, ale p eklada je v tomto p ípad „case sensitive“, tj. rozlišuje malá a velká písmena. P íklad Pokud v programu použijeme slovo „znovu“ jako náv ští na za átku smy ky, a dále pak slovo „Znovu“ v p íkazu skoku na za átek smy ky, znovu:
movlw b'10111110' ..... ..... goto Znovu
ohlásí p eklada chybu, protože „znovu“ a „Znovu“ jsou pro n j dv r zná slova.
6.2.2 íselné formáty Pro vyjád ení ísla m žeme v asembleru použít t i íselné soustavy: Desítková – dekadická soustava íslo v desítkové soustav uvedeme písmenem D a vlastní íslo uzav eme mezi apostrofy, nap íklad D‘169‘. Po instrukci MOVLW D‘169‘ tedy v registru W bude hodnota 169. Dvojková – binární soustava íslo ve dvojkové soustav uvedeme písmenem B a vlastní íslo uzav eme mezi apostrofy, nap íklad B‘10101001‘. Po instrukci MOVLW B‘10101001‘ tedy v registru W bude binární íslo 10101001, tj. 169 dekadicky. Šestnáctková – hexadecimální soustava íslo v šestnáctkové soustav je možno vyjád it t emi zp soby: a) Za íslem uvedeme písmeno H. Pokud íslo neza íná íslicí, dáme p ed n j nulu, nap . 0A9H. b) P ed íslo napíšeme 0x, nap . 0xA9. Po instrukci MOVLW 0xA9 nebo MOVLW 0A9H 24
tedy v registru W bude hodnota A9 hexadecimáln , tj. 169 dekadicky. c) Pokud íslo obsahuje jen íslice (a žádná písmena), m žeme je napsat bez úvodního 0x nebo záv re ného H. Po instrukci MOVLW 12 tedy v registru W bude hexadecimální íslo 12, tj. 18 dekadicky. Tento zp sob psaní v bec není vhodný, protože hexadecimální íslo pak p sobí mylným dojmem, že je dekadické.
6.2.3 Komentá e Komentá e používáme proto, abychom program u inili itelným a srozumitelným pro toho, kdo na n m bude pracovat po nás, ale i pro sebe, až se k n mu po ase vrátíme. Pro ozna ení komentá e používáme znak ; (st edník). Text od st edníku až do konce ádku je p eklada em ignorován, m že v n m proto být cokoliv. Komentá m že za ínat hned na za átku ádku, nebo m že následovat za instrukcí. P íklad ; Smy ka, která ur uje dobu, po kterou LED svítí MOVLW 0xB1 ; nastavení po áte ní hodnoty íta e
6.2.4 Zkratky Konstanta k f d b
Význam konstanta, se kterou instrukce pracuje registr, se kterým instrukce pracuje destination = místo ur ení; místo, kam se uloží výsledek operace bit; íslo bitu, se kterým instrukce pracuje
k – konstanta Konstanta je veli ina, jejíž hodnota se po celou dobu vykonávání programu nezm ní. V tšinou ji ur í programátor už p i psaní programu. Adresa v instrukci skoku GOTO a volání podprogramu CALL je také konstanta, která se b hem vykonávání programu nem ní. P i psaní programu v asembleru ji ale neur uje programátor, ale p eklada . P íklad MOVLW
k
MOVLW
D‘58‘ ; vloží do registru W konstantu - íslo 58 (dekadické)
; obecný tvar instrukce pro vložení konstanty do W
f – registr Ozna uje íslo (adresu) registru, který je v instrukci použit. P íklad CLRF
f
CLRF
0x3A ; vynuluje registr na adrese 0x3A
; obecný tvar instrukce pro nulování registru
d – destination Destination je místo, kam se uloží výsledek operace, kterou instrukce provádí. Instrukce, které pracují s registrem W a zárove s registrem v pam ti RAM, ukládají výsledek do registru W (když d = 0), nebo do registru RAM (když d = 1). 25
V registru, do kterého se výsledek neukládá, z stává hodnota, která v n m byla p ed instrukcí. P íklad ADDWF
f, d
; obecný tvar instrukce pro se tení W a registru
Jsou-li v registrech hodnoty Jméno / adresa registru W 0x3D pak po provedení instrukce ADDWF 0x3D, 0 budou nové hodnoty Jméno / adresa registru W 0x3D zatímco po provedení instrukce ADDWF 0x3D, 1 budou nové hodnoty Jméno / adresa registru W 0x3D
Obsah registru D‘12‘ D‘6‘ ; se te W a f, výsledek do W Obsah registru D‘18‘ D‘6‘ ; se te W a f, výsledek do f Obsah registru D‘12‘ D‘18‘
b – bit Ur uje íslo bitu, se kterým instrukce pracuje. P íklad BCF
f, b
; obecný tvar instrukce pro nulování jednoho bitu v ; registru
Je-li obsah registru na adrese 0x05 (PORT A) Bit PA7 PA6 PA5 PA4 PA3 PA2 Hodnota 1 0 1 1 1 1 a port je nastavený jako výstup, pak po provedení instrukce BCF 0x05, 3 ; vynuluje bit 3 registru 0x05 bude nový obsah registru na adrese 0x05 (PORT A) Bit PA7 PA6 PA5 PA4 PA3 PA2 Hodnota 1 0 1 1 0 1
26
PA1 1
PA0 0
PA1 1
PA0 0
6.3 Instrukce aritmetických a logických operací 6.3.1 Operace s konstantou Do t chto instrukcí vstupuje konstanta, uvád ná v pravé ásti instrukce, a obsah registru W. Výsledek se ukládá do W. Všechny instrukce této skupiny se vykonají za jeden instruk ní cyklus. Zkratka Popis ADDLW k Se te W a k ANDLW k Provede logický sou in mezi odpovídajícími bity W a k IORLW, k Provede logický sou et mezi odpovídajícími bity W a k SUBLW k Ode te W od k XORLW k Provede Exclusive-OR mezi odpovídajícími bity W a k: Pokud jsou odpovídající bity shodné, výsledkem je 0. Nejsou-li shodné, výsledkem je 1. P íklad Je-li v registru W hodnota D‘61‘, pak po provedení instrukce SUBLW D‘71‘ ; ode te W od k bude v registru W hodnota D‘10‘. S konstantou pracuje také instrukce MOVLW k (zápis konstanty do registru W), která je popsaná dále v odstavci o instrukcích p esun .
6.3.2 Operace s registrem RAM Do t chto instrukcí vstupuje obsah registru RAM, jehož adresa je uvedená v pravé ásti instrukce, a v tšinou také obsah registru W. Výsledek se ukládá do W nebo do registru RAM podle hodnoty d, jak bylo popsáno výše. Všechny instrukce této skupiny se vykonají za jeden instruk ní cyklus. Zkratka Popis ADDWF f, d Se te W a f ANDWF f, d Provede logický sou in mezi odpovídajícími bity W a f COMF f, d Provede komplement (negaci) všech bit f DECF f, d Dekrementuje f (sníží jeho hodnotu o 1) INCF f, d Inkrementuje f (zvýší jeho hodnotu o 1) IORWF f, d Provede logický sou et mezi odpovídajícími bity W a f SUBWF f, d Ode te W od f XORWF f, d Provede Exclusive-OR mezi odpovídajícími bity W a f: Pokud jsou odpovídající bity shodné, výsledkem je 0. Nejsou-li shodné, výsledkem je 1. P íklad Jsou-li v registrech hodnoty Jméno / adresa registru W 0x3D pak po provedení instrukce IORWF 0x3D, 0 budou nové hodnoty Jméno / adresa registru W 0x3D
Obsah registru B‘0001 1010‘ B‘1000 1011‘ ; logický sou et W a f, výsledek do W Obsah registru B‘1001 1011‘ B‘1000 1011‘ 27
6.4 Instrukce p esun Pokud instrukce obsahuje parametr d, výsledek se ukládá do W když d = 0, do f když d = 1. Všechny instrukce této skupiny se vykonají za jeden instruk ní cyklus. Zkratka Popis MOVF f, d d = 0 ... f se zkopíruje do W, hodnota v f z stává beze zm ny. d = 1 ... nic se nepohne ani nezm ní, ale nastaví se p íznak Z podle f. MOVLW k Zapíše k do W. MOVWF f Zkopíruje W do f. RLF f, d Rotuje obsah f doleva p es bit C stavového registru.
RRF f, d
SWAPF f, d
d = 0 ... výsledek rotace se objeví ve W. f z stává p vodní, beze zm ny. d = 1 ... výsledek rotace je v f. W z stává p vodní, beze zm ny. Rotuje obsah f doprava p es bit C stavového registru. d = 0, 1 ... jako u RLF Prohodí se levý a pravý p lbajt (nibble) registru f. d = 0, 1 ... jako u RLF
P íklad Jsou-li v registrech hodnoty Jméno / adresa registru W 0x3D pak po provedení instrukce SWAPF 0x3D, 0 budou nové hodnoty Jméno / adresa registru W 0x3D
Obsah registru cokoliv 0xA5 ; proho levou a pravou ást f, výsledek do W Obsah registru 0x5A 0xA5
6.5 Instrukce skok Po t chto instrukcích dojde k mimo ádné*) zm n obsahu íta e instrukcí, a to • u instrukce GOTO vždy • u ostatních instrukcí když je spln ná testovaná podmínka. Pokud instrukce obsahuje parametr d, výsledek se ukládá do W když d = 0, do f když d = 1. Všechny instrukce této skupiny se vykonají • za jeden instruk ní cyklus, pokud ke skoku nedojde • za dva instruk ní cykly, pokud ke skoku dojde. Jelikož p i instrukci GOTO je skok nepodmín ný, trvá tato instrukce dva cykly vždy.
*)
Po každé „normální“ instrukci se obsah íta e instrukcí zvýší o 1, tj. íta instrukcí pak ukazuje na následující instrukci. Po instrukci, která uskute nila skok, se obsah íta e instrukcí zm ní mimo ádn . U instrukcí „obskok “ se zvýší o 2, u instrukce GOTO sko í na zadanou adresu.
28
Zkratka BTFSC f, b BTFSS f, b DECFSZ f, d GOTO k INCFSZ f, d
Popis Testuje bit b registru f, p esko í další instrukci, když b = 0. Testuje bit b registru f, p esko í další instrukci, když b = 1. Dekrementuje f, p esko í další instrukci, když po operaci f = 0. Sko í na adresu k. Inkrementuje f, p esko í další instrukci, když po operaci f = 0.
P íklad ást blikacího programu, která zajistí svícení LED, dokud je program ve smy ce: SMYCKA:
DECFSZ GOTO POKRACUJ: • • •
CNT, 1 SMYCKA
P ed instrukcí DECFSZ programový íta PC obsahuje adresu „SMYCKA“. Po instrukci DECFSZ bude: CNT = CNT – 1 W beze zm ny, protože d = 1 když CNT ≠ 0, PC = adresa SMYCKA+1, tj. ukazuje na instrukci GOTO, která provede skok zpátky na SMYCKA. Program se to í dál ve smy ce. když CNT = 0, PC = adresa POKRACUJ, tj. opušt ní smy ky
6.6 Instrukce nulování a nastavení Tyto instrukce nulují nebo nastavují jednotlivý bit ur itého registru (BCF, BSF), nulují celý registr (CLRF, CLRW), nastavují výchozí stav hlídacího asova e (CLRWDT). Všechny instrukce této skupiny se vykonají za jeden instruk ní cyklus. Zkratka BCF f, b BSF f, b CLRF f CLRW CLRWDT
Popis Vynuluje bit b registru f. Nastaví na 1 bit b registru f. Vynuluje registr f. Vynuluje registr W. Vynuluje WDT = Watch Dog Timer a p edd li ku.
P íklad Jsou-li v registrech hodnoty Jméno / adresa registru W 0x3D pak po provedení instrukce CLRF 0x3D budou nové hodnoty Jméno / adresa registru W 0x3D
Obsah registru B‘0001 1010‘ B‘1000 1011‘ ; vynulování registru 0x3D Obsah registru B‘0001 1010‘ B‘0000 0000‘ 29
a dále po provedení instrukce CLRW budou nové hodnoty Jméno / adresa registru W 0x3D
; vynulování registru W Obsah registru B‘0000 0000‘ B‘0000 0000‘
6.7 Instrukce pro podprogramy a p erušení Po t chto instrukcích op t dojde k mimo ádné zm n obsahu íta e instrukcí. P i instrukci CALL program sko í na adresu podprogramu danou parametrem k (nap . náv štím) a adresa následující instrukce (návratová adresa) se uloží do sklípku (STACK). P i instrukcích návratu (RETURN, RETFIE, RETLW) se ze sklípku vyzvedne návratová adresa a uloží se do programového íta e (PC = Program Counter). Tím dojde ke skoku (návratu) na instrukci, která následuje po té, která se jako poslední vykonala p ed skokem na adresu podprogramu. Pokra uje se tedy v práci, která byla p edtím rozd laná. Instrukce RETFIE krom návratu na návratovou adresu také zajistí povolení dalších p erušení. B hem obsluhy p erušení jsou totiž další p erušení zakázána. Instrukce RETLW krom návratu na návratovou adresu také vsadí do registru W hodnotu k. To umož uje programu, aby si z obsluhy p erušení p inesl informaci o tom, jak obsluha p erušení prob hla. Všechny instrukce této skupiny se vykonají za dva instruk ní cykly. P i všech totiž dochází k mimo ádné zm n obsahu íta e instrukcí. Zkratka CALL k RETURN RETFIE
RETLW k
Popis Uloží do sklípku adresu následující instrukce (= návratovou adresu) a sko í na adresu danou parametrem k. Vyzvedne ze sklípku návratovou adresu, dosadí ji do programového íta e, a tím vyvolá skok (návrat) na tuto adresu. Vyzvedne ze sklípku návratovou adresu, dosadí ji do programového íta e, a tím vyvolá skok (návrat) na tuto adresu. Nastaví bit GIE = General Interrupt Enable v registru INTCON, a tím umožní p ijetí dalších p erušení. Vyzvedne ze sklípku návratovou adresu, dosadí ji do programového íta e, a tím vyvolá skok (návrat) na tuto adresu. Do registru W dosadí hodnotu k.
P íklad adi má pravideln kontrolovat hladinu vody v nádrži. P íslušný podprogram má hladinu zm it a sd lit, zda už hladina dosáhla p edepsané úrovn nebo ne. Podprogram m že mít dva výstupy. Zjistí-li se, že hladina ješt nedosáhla p edepsané úrovn , návrat z podprogramu se provede instrukcí RETLW 0x00 Pokud hladina už dosáhla p edepsané úrovn , návrat z podprogramu se provede v jiném míst instrukcí RETLW 0x01 Pokud tedy hladina nedosáhla p edepsané úrovn , najdeme v registru W po návratu z podprogramu hodnotu 0, pokud dosáhla, najdeme tam 1. 30
6.8 Zvláštní instrukce Všechny instrukce této skupiny se vykonají za jeden instruk ní cyklus. Instrukce NOP se používá k zám rnému zpomalení chodu programu, nebo, p i ru ním programování, k vynechání místa v pam ti pro p ípadné vložení dalších ástí programu. Zpomalení chodu programu m že být zapot ebí tam, kde p ed odebráním stavu vstupu je t eba po kat na ustálení vstupní veli iny. P i programování asové smy ky, která má odm ovat p esný as, lze vložením prázdných instrukcí jemn doladit délku trvání smy ky. P i ru ním programování je nejv tším problémem „rozhrnutí“ dosavadního programu a vložení další ásti, protože se tím zm ní adresy skok a volání. Pokud si v programu necháme prázdná místa, zapln ná jen instrukcemi NOP, m žeme pak tato místa využít ke vložení nových ástí. Pokud ale pro psaní a p eklad programu používáme po íta , p eklada tento problém eší za nás. Po každé zm n programu p epo ítá adresy skok a volání automaticky. Zkratka NOP SLEEP
Popis Prázdná operace P echod adi e do stavu SLEEP. Vynulování WDT a p edd li ky.
P íklad Programujeme pravidelné blikání nesvícení m že vypadat takto: MOVLW D‘66‘ MOVWF 0x0D DOKOLA: NOP NOP DECFSZ 0x0D, 1 GOTO DOKOLA MOVLW .......
LED.
ást programu, která ur uje dobu svícení –
; smy ka se má prob hnout 66x ; registr 0x0D použijeme jako po ítadlo ; vycpávka: prázdné instrukce ; dekrementuj po ítadlo, výsledek nech v n m ; není hotovo? Jedeme dokola! ; hotovo, jedeme dál!
Po tem instrukcí NOP m žeme m nit dobu, kterou potrvá jedno prob hnutí smy ky. Velikostí ísla v úvodní instrukci MOVLW m níme po et pr chod smy kou.
6.9 Zastaralé instrukce Instrukce „OPTION“ a „TRIS f“ byly používány ve starších verzích adi . V sou asných verzích by stále ješt fungovaly, ale nepoužíváme je, abychom zachovali kompatibilitu svých program pro p íští verze adi .
31
7. Úlohy 7.1 Drát Funkce Stav jednoho vývodu (vstupu) se programov p enese na jiný vývod (výstup), jako kdyby tyto dva vývody byly propojeny drátem. HW p íprava Na vývod .1 (RA2) p ipojte p epína tak, aby v jedné poloze byl vývod p ipojen na +5V, ve druhé poloze na zem. Na vývod .2 (RA3) p ipojte LED tak, aby svítila, když na vývodu bude úrove H. Rozbor úlohy Na za átku programu je nutno vývod .1 (RA2) nastavit jako vstup, vývod .2 (RA3) je nutno nastavit jako výstup. B hem innosti programu se bude stále testovat stav vývodu .1 a zjišt ná hodnota se bude posílat na vývod .2.
32