Jiøí Hrbáèek
MIKROØADIÈE PIC16CXX a vývojový kit PICSTART
Kniha poskytuje ètenáøi základní informace o mikroøadièích øady PIC 16CXX, jejich vlastnostech a pouití tak, aby je mohl vyuít pøi vlastních konstrukcích zaøízení.
Jiøí Hrbáèek
MIKROØADIÈE PIC16CXX Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmnoována jakoukoli formou (tisk, fotokopie, mikrofilm nebo jiný postup), zadána do informaèního systému nebo pøenáena v jiné formì èi jinými prostøedky. Autor a nakladatelství nepøebírají záruku za správnost titìných materiálù. Pøedkládaná zapojení jsou zveøejnìna bez ohledu na pøípadné patenty tøetích osob. Nároky na odkodnìní na základì zmìn, chyb nebo vynechání jsou zásadnì vylouèeny. Vechny registrované nebo jiné obchodní známky pouité v této knize jsou majetkem jejich vlastníkù. Uvedením nejsou zpochybnìna z toho vyplývající vlastnická práva. Vekerá práva vyhrazena © Ing. Jiøí Hrbáèek, Praha 19951997 Nakladatelství BEN - technická literatura, Vìínova 5, Praha 10 Jiøí Hrbáèek: MIKROØADIÈE PIC16CXX BEN - technická literatura, Praha 1998 dotisk 4. vydání ISBN 80-901984-0-6
OBSAH
ÚVOD ...................................................................................................... 5 1. 1.1. 1.1.1. 1.1.2. 1.1.3. 1.1.4. 1.1.4.1. 1.1.4.2. 1.1.4.3. 1.1.5. 1.1.6. 1.1.6.1. 1.1.6.1. 1.1.6.3. 1.1.6.4. 1.1.7. 1.1.8. 1.2. 1.2.1. 1.2.2. 1.1.3. 1.2.4. 1.2.4.1. 1.2.4.2. 1.2.4.3. 1.2.4.3.1. 1.2.4.3.2. 1.2.4.3.3. 1.2.4.4. 1.2.4.4.1. 1.2.4.5. 1.2.4.6. 1.2.4.7. 1.2.4.7.1. 1.2.5. 1.2.5.1. 1.2.5.2.
MIKROØADIÈE PIC16C5X .................................................................... 7 MIKROØADIÈ Z POHLEDU KONSTRUKTÉRA ELEKTRONIKA ......... 7 Vstupy/výstupy ........................................................................................ 7 Vývod RTCC - vstup hodin do èítaèe/èasovaèe RTCC .......................... 9 Vývod - MCLR master clear - hlavní nulování ................................... 10 Vývod OSC1 oscillator - oscilátor, vývod OSC2/CLKOUT oscillator/clock out - oscilátor/výstup hodin .... 12 Oscilátory krystalové a s keramickým filtrem ........................................ 12 RC oscilátor ........................................................................................... 12 Pouití externího oscilátoru ................................................................... 14 Vývody napájecího napìtí a nepouité vývody ..................................... 14 Modifikace mikroøadièù PIC16C5X ....................................................... 14 Rozliení podle vnitøní konfigurace ....................................................... 14 Rozliení podle parametru napájení a obvodù oscilátoru ..................... 15 Rozsah pracovních teplot ...................................................................... 16 Typ pouzdra .......................................................................................... 16 Jak si zvolíme mikroøadiè ...................................................................... 16 Mezní parametry mikroøadièe ............................................................... 17 MIKROØADIÈ Z POHLEDU PROGRAMÁTORA ................................. 19 Pamì programu (Program Memory).................................................... 20 Aritmeticko-logická jednotka ALU (Arithmetic/Logic Unit) ..................... 21 Working Register (W) - pracovní registr ................................................ 21 Pole datových registrù (Data Register File) .......................................... 22 Univerzální registry ............................................................................... 22 f0 Registr nepøímého adresování dat.................................................... 23 f1 Real Time Clock/Counter Register (RTCC) - hodiny/èítaè reálného èasu ................................................................. 23 Pravidla pøi pouití RTCC s externími hodinami .................................. 24 Zpodìní hrany externích hodin ........................................................... 24 OPTION registr .................................................................................... 24 f2 - èítaè programu (dolních 8 bitù èítaèe PC) ..................................... 26 STACK ................................................................................................... 27 f3 Status Word Register (SWR) - registr stavového slova .................. 28 f4 File Select Register (FSR) - registr výbìru registru z pole registrù . 30 f5, f6 a f7 I/O Registers (PORTs) - vstupnì výstupní registry - I/O porty 30 Øídící registry portù TRISA, TRISB a TRISC ....................................... 31 Programování vstupù a výstupù ........................................................... 32 Obousmìrné I/O porty .......................................................................... 32 Po sobì jdoucí operace na I/O portech. ............................................... 33
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura
1
1.2.5.3. 1.2.6. 1.2.6.1. 1.2.6.2. 1.2.6.3. 1.2.7. 1.3. 1.3.1. 1.3.2. 1.3.3. 1.3.4. 1.3.5. 1.3.6.
Operace v rueném prostøedí ............................................................... 34 Obvody resetu a WDT ........................................................................... 34 OST (Oscilátor Startup Timer) - oscilátor a èasovaè pro rozbìh .......... 35 Pøeddìlièka (Prescaler) ......................................................................... 36 WDT Watch dog timer - hlídací èasovaè ............................................... 38 Konfiguraèní pojistky ............................................................................. 39 Instrukèní soubor mikroøadièù PIC16C5X ............................................. 40 Instrukce provádìjící aritmetické a logické operace ............................. 40 Instrukce nulování a nastavení ............................................................. 45 Instrukce pøenosu dat ............................................................................ 46 Instrukce pro práci s podprogramy ........................................................ 48 Instrukce skokù v programu .................................................................. 48 Zvlátní instrukce .................................................................................. 50
2. 2.1. 2.1.1. 2.1.1.1. 2.1.1.2. 2.1.1.3. 2.1.2. 2.1.3.
MIKROØADIÈ PIC16C71 ..................................................................... 51 MIKROØADIÈ Z POHLEDU KONSTRUKTÉRA ELEKTRONIKA ........ 51 Vstupy/výstupy ...................................................................................... 51 Obousmìrné porty ................................................................................ 51 Vstup A/D pøevodníku ........................................................................... 52 Vstup hodin do èítaèe/èasovaèe RTCC ................................................ 53 Vývod - MCLR master clear - ovládání nulování .................................. 54 Vývod OSC1 oscillator - oscilátor Vývod OSC2/CLKOUT oscillator/clock out - oscilátor/výstup hodin ..... 55 Oscilátory s krystaly a keramickými filtry .............................................. 55 RC oscilátor ........................................................................................... 56 Pouití externího oscilátoru ................................................................... 56 Vývody napájecího napìtí ..................................................................... 57 Modifikace mikroøadièù PIC16C71 ........................................................ 57 Mezní parametry mikroøadièe ................................................................ 58 MIKROØADIÈ Z POHLEDU PROGRAMÁTORA ................................. 59 Provádìní instrukcí ............................................................................... 59 Pamì programu (Program Memory) .................................................... 61 Aritmeticko-logická jednotka ALU (Arithmetic/Logic Unit) ..................... 61 Working Register (W) - pracovní registr ................................................ 62 Pøeddìlièka (Prescaler) ......................................................................... 62 WDT Watch dog timer - hlídací èasovaè ............................................... 62 Pole datových registrù (Data Register File) .......................................... 62 Univerzální registry ................................................................................ 63 Speciální registry ................................................................................... 63 f0 (f80) Indirect addressing - Registr nepøímého adresování dat ......... 64 f1 Real Time Clock/Counter Register (RTCC) - hodiny/èítaè reálného èasu ................................................................. 64 f2 (f82) Program Counter Low (PCL) - èítaè programu (dolních 8 bitù), f0A (f8A) Program Counter LATch High (PCLATH) - záchytný registr horní èásti èítaèe programu a STACK ................................................... 64 f81 OPTION registr .............................................................................. 65
2.1.3.1. 2.1.3.2. 2.1.3.3. 2.1.4. 2.1.5. 2.1.6. 2.2. 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.2.5. 2.2.6. 2.2.7. 2.2.7.1. 2.2.7.2. 2.2.7.2.1. 2.2.7.2.2. 2.2.7.2.3. 2.2.7.2.4.
2
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura
2.2.7.2.5. 2.2.7.2.6. 2.2.7.2.7. 2.2.7.2.8. 2.2.7.2.9. 2.2.7.2.10.
f3 (f83) Status Word Register (SWR) - registr stavového slova ........... 66 f4 (f84) File Select Register (FSR) - registr výbìru registru z pole registrù .. 67 f5 I/O Register A (I/O port A) - vstupnì / výstupní brána A .................. 67 f85 I/O øídicí registr portu A (TRISA) ..................................................... 67 A/D pøevodník ....................................................................................... 68 f8 A/D CONtrol and status register (ADCON0) - øídicí a stavový registr A/D pøevodníku ............................................... 70 2.2.7.2.11. f88 A/D CONTrol register 1 (ADCON1) - Øídicí registr A/D pøevodníku .. 70 2.2.7.2.12. f6 I/O Register B (I/O port B) - vstupní/výstupní brána B, f86 I/O øídicí registr portu B (TRISB) ..................................................... 71 2.2.8. Systém pøeruení .................................................................................. 72 2.2.8.1. f0B (f8B) INTerrupt CONtrol register (INTCON) - registr øízení pøeruení ........................................................................ 73 2.2.8.2. Pøeruení pøes vstup RB0/INT .............................................................. 73 2.2.8.3. Pøeruení od pøeteèení RTCC ............................................................... 74 2.2.8.4. Pøeruení od zmìny na vstupech RB7/4 .............................................. 75 2.2.8.5. Pøeruení vyvolané ukonèením pøevodu A/D pøevodníku. .................... 75 2.2.9. Systém RESETu ................................................................................... 75 2.2.10. Power Down mode (SLEEP) ................................................................. 78 2.2.10.1. Mikroøadiè ve stavu spánku ................................................................ 78 2.2.10.2. Probuzení ze SLEEP ............................................................................ 78 2.2.11. Configuration fuses - konfiguraèní pamì a pamì identifikaèního kódu .............................. 80 2.3. Instrukèní soubor mikroøadièù PIC16C71 ............................................. 81 2.3.1. Instrukce provádìjící aritmetické a logické operace ............................. 81 2.3.2. Instrukce nulování a nastavení ............................................................. 84 2.3.3. Instrukce pøesunu dat ............................................................................ 85 2.3.4. Instrukce pro práci s podprogramy a pøeruením ................................. 86 2.4.5. Instrukce skokù v programu .................................................................. 87 2.3.6. Zvlátní instrukce .................................................................................. 88 2.4. Rozdíly oproti mikroøadièùm PIC16C5X ............................................... 90 3. 3.1. 3.1.1. 3.1.2. 3.1.2.1. 3.1.2.2. 3.1.2.3. 3.1.3. 3.1.2. 3.1.3. 3.2. 3.2.1. 3.2.1.1. 3.2.1.2.
MIKROØADIÈ PIC16C84 ..................................................................... 91 MIKROØADIÈ Z POHLEDU KONSTRUKTÉRA ELEKTRONIKA ........ 91 Vstupy/výstupy, obousmìrné porty ....................................................... 91 Vývody OSC1 a OSC2 .......................................................................... 91 Oscilátory s krystaly a keramickým filtrem ............................................ 92 RC oscilátor ........................................................................................... 92 Pouití externího oscilátoru ................................................................... 93 Vývody napájecího napìtí ..................................................................... 93 Modifikace mikroøadièù ......................................................................... 94 Mezní parametry mikroøadièe ................................................................ 94 Mikroøadiè z pohledu programátora ...................................................... 95 Datová pamì EEPROM ....................................................................... 96 Ètení dat z EEPROM ............................................................................ 96 Zápis dat do EEPROM .......................................................................... 96
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura
3
3.2.2. 3.2.3. 3.3.
f88 a f89 Registry EECON1 a EECON2 (EEPROM control register) ... 97 Systém pøeruení .................................................................................. 97 Instrukèní soubor ................................................................................... 98
4. 4.1. 4.2. 4.2.1. 4.2.1.1. 4.2.1.2. 4.2.1.3. 4.2.2. 4.2.2.1. 4.2.2.2. 4.2.2.3. 4.3. 4.4. 4.4.1. 4.4.2. 4.4.2.1. 4.4.2.2. 4.4.2.2.1. 4.4.2.2.2. 4.4.2.2.3. 4.4.2.2.4.
PROGRAMOVÁNÍ MIKROØADIÈÙ ..................................................... 99 Zadání úkolu ......................................................................................... 99 Psaní vlastního programu ..................................................................... 99 Direktivy assembleru .......................................................................... 100 Definice symbolù ................................................................................. 100 Definice místa pamìti programu, kam ukládat program, nebo jeho èást 103 Ukonèení programu ............................................................................. 103 Pøíkazový øádek programu .................................................................. 103 Návìtí programu ............................................................................... 103 Instrukce a pseudoinstrukce assembleru MPALC .............................. 104 Komentáø programu ............................................................................ 105 Pøeklad programu pomocí pøekladaèe ................................................ 105 Odladìní programu ............................................................................. 106 Simulace ............................................................................................. 106 Simulátor MPSIM ................................................................................ 107 Sputìní simulátoru ............................................................................ 107 Popis pøíkazù simulátoru .................................................................... 108 Nastavení simulátoru .......................................................................... 108 Nastavení VIEW SCREEN (trvalé monitorování) .............................. 109 Práce s daty ........................................................................................ 109 Pøíkazy pro trasování a vyuívání breakpointù (bodù pøeruení simulace) programu ................................................... 111 Sputìní simulace ................................................................................ 112 Ukonèení práce simulátoru .................................................................. 112 Simulace krok po kroku ....................................................................... 112 Pouití breakpointù .............................................................................. 113 Trasování ............................................................................................. 113 Programování procesorù programátorem PICSTART ........................ 114 Ovládání programu .............................................................................. 114 Pøíklad postupu pøi programování ....................................................... 115 Pøíklad simulace instrukcí procesoru .................................................. 116 Pøíklad vytvoøení programu a jeho simulace krok po kroku ................ 117
4.4.2.2.5. 4.4.2.2.6. 4.4.2.3. 4.4.2.4. 4.4.2.5. 4.5. 4.5.1. 4.5.2. 4.6. 4.7.
Pouité znaèky, zkratky a vyskytující se anglické názvy .............. 122 ZÁVÌR ................................................................................................ 128 ELEKTRONIC Obecnice - Programátory pamìtí a mikroprocesorù firmy ATMEL .. 129 ASIX s.r.o. - prodej souèástek a literatury firmy MICROCHIP ................................ 132 Knihy nakladatelství BEN - technická literatura .................................................... 134 Kde najdete prodejny firmy BEN - technická literatura ......................................... 141
4
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura
ÚVOD Jistì kadý ví, e programátoøi píí programy pro poèítaèe, aby se tyto staly uiteènými pro uivatele. Technici dovedou porouchaný poèítaè opravit. Co ale dìlají systémoví programátoøi a vývojoví pracovníci elektronických systémù? Pro názornost si vysvìtlíme vechny tyto pojmy. Uivatelé tvoøí nejvìtí skupinu. Uivatelem by se mìl stát prakticky kadý èlovìk. Znalost obsluhy poèítaèe se stává v dnení dobì otázkou druhé gramotnosti. Tak, jako kadý èlovìk dovede pouívat tøeba vysavaè, praèku èi televizor, stejnì tak by mìl umìt vyuívat slueb poèítaèe. Na programátorech je, aby se ovládání programù pro uivatele stávalo èím dál víc radostí a zábavou a ne straákem a mùrou probdìlých nocí. Programátor musí dokonale znát èinnost, na kterou píe program, vìdìt, jak je uivatel zvyklý tuto èinnost vykonávat. Jak mají vypadat vechna vstupní data i výstupní sestavy. Program se z hlediska vstupù i výstupù musí chovat tak, jak je uivatel zvyklý a jak je mu to nejpøirozenìjí. Pak mu opravdu poèítaè poskytne maximální usnadnìní práce a neocenitelnou pomoc. Systémový programátor je èlovìk, který musí dokonale znát poèítaè, pro který má psát programy. Musí být tedy nejenom výborným programátorem, ale i technikem. Musí pøesnì vìdìt, jak pracuje procesor i podrobnì znát funkci jednotlivých zaøízení z hlediska jejich programové obsluhy. Systémoví programátoøi píí operaèní systémy a programy pro ovládání speciálních zaøízení. Systémový programátor se co nejvíce pøizpùsobuje z jedné strany poèítaèi a jeho technickému øeení a na stranì druhé zpùsobu ovládání daného programu programem jiným. Toto ovládání by mìlo být standardní, aby se dalo pouívat co nejvíce programù i jiných výrobcù, které by mohly zaøízení poèítaèe vyuívat. Jen z mála lidí se proto mohou stát vynikající systémoví programátoøi. Mezi amatéry je v této oblasti mezera. Amatéøi se zabývají buï programováním, nebo elektronikou. Jen málokdo tyto dvì vìci spojuje. Navíc z toho, co jsme si øekli o pro-gramátorech systémových, je jasné, e ne kadý, by i vynikající programátor, se mùe stát vynikajícím systémovým programátorem. To vak platí i naopak. Ne kadý systémový programátor musí být výborným programátorem uivatelským. Kadá z tìchto odborností toti vyaduje u èlovìka trochu jiné vlastnosti. Vývojoví pracovníci pro vývoj elektronických systémù dnes ji nepracují pouze s tranzistory, jak tomu bylo døíve. Pouívají nejen bìné integrované obvody. Pracují také s programovatelnými logickými obvody a jednoèipovými mikropoèítaèi, kterým se øíká mikroøadièe. Mikroøadièe se stále více vyuívají v naem bìném ivotì. Dnes je najdeme v moderních holicích strojcích, mixérech, videorekordérech, televizorech, automobilech, klávesnicích poèítaèù i psacích strojích, v robotech a mnoha dalích pøístrojích i vìcech denní potøeby. Pro elektronika vyuívání programovatelných logických obvodù a mikroøadièù skýtá velice zajímavá a efektivní øeení problémù, které by se standardními obvody øeily velice tìko a sloitì. Vytváøení jednoduchých aplikací s jednoèipovými mikropoèítaèi je, podle mého názoru, také nejlepí zpùsob, jak si osahat systémaøinu a tak vyhledat ty, ze kterých se po èase mohou stát vynikající systémoví programátoøi èi konstruktéøi a programátoøi robotù a systémù s mikroøadièi.
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura
5
Nestaèí, aby se studenti s tìmito moderními technologiemi setkali a na vysoké kole. Je tøeba ji na základní kole v zájmových kroucích podchytit dìti, které mají zájem a vlohy pro tuto èinnost a vìnovat se jim. Zaèít nejdøíve se stavbou kybernetických modelù. Pak, podle schopností dítìte, pøecházet k vlastním návrhùm jednoduchých kybernetických hraèek. Na støedních kolách se pak ji více klonit ke konstrukcím a programování systémù s mikroøadièi, popøípadì ji pomalu zaèít s velice jednoduchými systémovými aplikacemi. Studenti støedních kol ji musí odcházet ze koly zcela profilovaní. Z vìtiny se stanou uivatelé. Nìkteøí vak ji pùjdou cestou uivatelských programátorù, systémových programátorù nebo konstruktérù elektronických systémù. Cílem této publikace je seznámení s mikroøadièi øady PIC16CXX a vývojovým systémem PICSTART. Tento se skládá z programátoru mikroøadièù, který se pøipojuje pøes rozhraní RS232 k poèítaèi IBM PC, programu MPSTART pro ovládání programátoru, pøekladaèe assembleru MPALC a simulátoru MPSIM. Mikroøadièe fy Microchip jsou velice výkonné mikroøadièe a pro svoje vlastnosti vhodné pro pouití nejen ve velkém mnoství profesionálních aplikací, ale i ve kolství pro výuku práce s mikroøadièi. Navíc jejich cena i cena jednoduchého programátoru vèetnì makroassembleru a simulátoru je natolik nízká, e si jej mùe poøídit snadno kadá kola nebo i soukromá osoba èi malý krouek. Podmínkou vak je mít písíèko. Zaèátek textu je vìnován popisu mikroøadièù PIC16C54, 55, 56, 57, 71 a 84. Dalí kapitoly podávají základní informace o assembleru MPALC, simulátoru MPSIM a programování pomocí programátoru PICSTART. Informace jsou zde pøedkládány ve formì návodù. Výklad není doplòován teoretickými odvozeními a dùkazy. Na tento text bude navazovat i publikace, vìnující se programování uvedených mikroøadièù s velkým mnostvím pøíkladù. V celé publikaci bylo na ádost redaktora zamìnìno slovo mikrokontrolér za slovo mikroøadiè, slovo kontrolér za slovo øadiè a slovo pin za slovo vývod. Rád bych podìkoval Doc. Ing. Jiøímu Strachovi, CSc. RNDr. Jiøímu Poovi a PaedDr. Otto Kryzanovi za cenné pøipomínky a rady pøi psaní tohoto textu.
Poznámka k druhému a tøetímu vydání Toto doplnìné vydání je upraveno podle nejnovìjího katalogu firmy Microchip: PIC16/17 Microcontroller Data Book - the Emergining World Standard TM 1995/1996. Pùvodní publikace byla psána podle katalogu z roku 1993. Nedolo ke zmìnám funkce mikroøadièù. Dolo vak ke zmìnám v názvosloví (kvùli kompatibilitì pojmù s novými mikroøadièi) a ke zlepení technických parametrù (zdokonalením technologie). V novém katalogu je nahrazen pojem èítaè/ èasovaè reálného èasu - RTCC (real time clock counter) pojmem èasovaè 0 - TMR0 (timer 0). Stejnì tak oznaèení bitù RTIE za T0IE, RTIF za T0IF, RTS za T0CS, RTE za T0SE a oznaèení vstupu RTCC za T0CKI. Zmìny v parametrech jsou smìrem k lepímu, proto nemùe dojít k pokození mikroøadièe pøi pouití pùvodnì publikovaných parametrù.
6
Jiøí Hrbáèek: Mikroøadièe PIC16CXX - BEN technická literatura