Střední odborná škola a Střední odborné učiliště informatiky a spojů, Brno, Čichnova 23 Pracovní sešit MIKROKONTROLERY PIC16F84 Určeno pro obory Mechanik elektronik, Digitální telekomunikační technika IV. ročník (rozsah 21 hodin 3 vyučovacích dnů praxe) Verze 1 Radek Šefraný Brno 2006
Obsah Úvodem... 3 1. Základní použití a zapojení mikrokontrolorů PIC... 4 1.1. Trochu teorie neuškodí... 4 1.2. Základní znalosti o mikrokontrolerech PIC... 5 2. Vývojová deska EduKit84... 9 2.1. Základní popis vývojové desky... 9 2.2. Displej... 10 2.3. Tlačítka... 11 3. Základní instrukce a programování... 12 3.1. Programovací příkazy pro mikrokontrolery... 12 3.2. První krůčky programování... 14 Přehled použitých instrukcí:... 25 Přehled instrukcí nastavující Z bit v SWR registru:... 26 Poznámky:... 27-2-
Úvodem Pracovní sešit má Vám studentům sloužit k poznámkám nové látky, ale hlavně k jejímu opakování. Máte zde za úkol doplňovat text, dokreslovat schémata či vývojové diagramy. Tím tak docílíte samostatnou prací úspěšné zvládnutí studijní látky, která je v tomto sešitu shrnuta. Pracovní sešit je rozdělen do tří kapitol, které jsou časově rozvrženy na 3 x 7 vyučovacích hodin a přizpůsoben praktickému vyučování. Kapitola první Základní použití a zapojení mikrokontrolorů PIC Kapitola druhá Vývojová deska EduKit84 Kapitola třetí Základní instrukce a programování Přeji Vám hodně úspěchů při práci a dalším vzdělávání. autor Radek Šefraný -3-
1. Základní použití a zapojení mikrokontrolorů PIC 1.1. Trochu teorie neuškodí 1. Doplňte následující tvrzení: Mikrokontroler patří do skupiny programovatelných.... Mikrokontoler patří mezi...čipové mikropočítače. Mikrokontroler Microchip PIC16F84 je postavený na jádru typu. je základní programovací jazyk pro mikrokontolery PIC. Mikrokontolery pracují s napětím v rozsahu.v. 2. Doplňte následující tvrzení: Jak se nesprávně označují mikrokontolery...... Napište, kde všude se s jednočipovými mikropočítači můžeme setkat a jejich využití: o o o o -4-
1.2. Základní znalosti o mikrokontrolerech PIC 1. Dokreslete obrázky náhradních schémat podle zadání: vstup/výstup* s úrovní LOW vstup/výstup* s úrovní HIGH vstup/výstup* s úrovní LOW vstup/výstup* s úrovní HIGH *Nehodící škrkněte -5-
2. Doplňte správně údaje Přiřaďte správné označení názvů registrů a vstupů/výstupů na schématu. 1 2 3 4 5 6 7 Propojte čísla se správným výrazem 1 Vstupy/výstupy RA 2 Vstupy/výstupy RB 3 TRIS registr A 4 TRIS registr B 5 Registr W 6 Port A 7 Port B -6-
3. Doplňte správně údaje 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 a) Určete vstupy/výstupy na pinech RA a RB za pomocí TRIS registrů (doplňte do tabulky) RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 b) Určete logické úrovně na vstupech/výstupech RA a RB RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7-7-
4. Zakreslete správně údaje dle zadání a) Nastavte RA 4,3 a RB 7,5,4,1 jako vstupy, RA 2,1,0 a RB 6,5,2,0 jako výstupy. b) Výstupy RA 2,0 a RB 6,0 nastavte na logickou úroveň 1, ostatní na logickou úroveň 0. c) Označte na RA a RB vstupy/výstupy a jejich logické hodnoty. -8-
2. Vývojová deska EduKit84 2.1. Základní popis vývojové desky 1 2 3 4 5 10 9 8 7 6 1 Konektor pro napájení ( 8-15V stejnosměrné napětí/ 100mA). 2 Resetovaní tlačítko mikrokontroléru PIC16F84. 3 Mikrokontrolér PIC16F84. 4 Samostatná LED (rozsvítí se, pokud na 4bitu portu A jako výstup bude log. 0, bude-li tam log.1 zhasne). -9-
5 Sedmisegmentový displey (viz. podkapitola Displej). 6 Tlačítka 0-7 (viz. podkapitola Tlačítka). 7 LED dioda indikující přepnutí spínače P1 na režim mikrokontoléru PIC16F84. 8 Přepínač P1 sloužící ke změně režimu mezi emulátorem a PIC16F84. 9 LED dioda indikující přepnutí spínače P1 na režim emulátor. 10 Konektor pro připojení MU Alpha. 2.2. Displej Pokud na portu A nastavíme výstupy, pak definujeme který znak sedmisegmentového displeje má být aktivní: bit 0 = 1. znak displeje (nejnižší hodnota vpravo) bit 1 = 2. znak dipleje bit 2 = 3. znak displeje bit 3 = 4. znak displeje (nejvyšší hodnota vlevo) bit 4 = samostatná LED dioda (viz. předchozí podkapitola) Aktivaci provedeme logickou 0. bit 3 bit 2 bit 1 bit 0-10-
Pokud budou na portu B nastaveny výstupy, pak: bit 0 = segment A bit 1 = segment B bit 2 = segment C bit 3 = segment D bit 4 = segment E bit 5 = segment F bit 6 = segment G bit 7 = desetinná tečka Aktivace segmentu provedeme logickou 0. bit 5 bit 6 bit 4 bit 0 bit 1 bit 2 bit 3 bit 7 2.3. Tlačítka Pokud budou na portu B nastaveny vstupy, pak lze číst stav tlačítka: bit 0 = tlačítko 0 bit 4 = tlačítko 4 bit 1 = tlačítko 1 bit 5 = tlačítko 5 bit 2 = tlačítko 2 bit 6 = tlačítko 6 bit 3 = tlačítko 3 bit 7 = tlačítko 7 Logická 0 znamená stisknuté tlačítko. -11-
3. Základní instrukce a programování 3.1. Programovací příkazy pro mikrokontrolery 1. Vyberte správné zadání konstanty a zakroužkujte jej. a) D'100' 100 100D b) '00111001' B'00111001' 00111001B c) d10.10 'd10' d) 8ex0 x8e 0x8e e) 9fh h9f H9f f) B'00011100' b00011100 00011100b 2. Přiřaďte k daným písmenům (z příkladu 1) danou soustavu A desítková B desítková C binární D binární E hexadecimální F hexadecimální -12-
3. Přiřaďte instrukci do správné sady instrukcí RETURN Instrukce provádějící aritmetické a logické operace GOTO Instrukce provádějící aritmetické a logické operace SLEEP Instrukce pro přenos dat MOVLW Instrukce pro přenos dat CLRW Instrukce pro práci s podprogramy přerušením ANDLW Instrukce pro práci s podprogramy přerušením MOVF Instrukce skoků v programu BTFSS Instrukce skoků v programu NOP Instrukce nulování a nastavení BSF Instrukce nulování a nastavení CALL Zvláštní instrukce IORLW Zvláštní instrukce -13-
3.2. První krůčky programování 1. K zadanému příkladu udělejte vývojový diagram. Příklad 1.: při stisku tl. rozsviďte LED Naprogramujte mikroprocesor tak, aby na RA 3/0 byly připojeny tlačítka, a na RB 3/0 LED diody. Na stisk tlačítka 1 (RA0) se rozscítí LED dioda 1 (RB0). -14-
2. Naprogramujte emulator podle zadání a popište jednotlivé řádky instrukcí org 000 ;... ;*********************... movlw 0f ;... tris 5 ;... movlw 00 ;... tris 6 ;... movlw 00 ;... movwf 06 ;... ;************************************************************** loop movf 05,0 ;... movwl 06 ;... ;************************************************************** goto loop ;... ;************************************************************** end ;... Lze nahradit návěští i jiným způsobem adresování?...... -15-
3. Naprogramujte emulator podle zadání a popište jednotlivé řádky instrukcí Příklad2.: Indikace stisku tlačítka Na vstupy RA3/0 budou připojeny tlačítka, na výstupy RB7/0 LED diody. Při stisku tláčítka bude na vstupu logická úroveň H. Led se rozsvítí, bude-li na výstupu logická úroveň L. LED diody na výstupech RB7/4 budou stále zhasnuté nebudou reagovat na tlačítka. Po zapnutí programu nesmí žádná LED dioda svítit. Pomocí zadání a podle vývojového diagramu sestav program a vyzkoušej jeho funkci. Indikace stisku tlačítka Zhasni LED 2 Nastav vstupy a výstupy podle zadání Je stisknuté tlačítko 2? Rozsviť LED 2 ANO NE NE Je stisknuté některé tlačítko? Zhasni LED 3 Zhasni LED 0 ANO Je stisknuté tlačítko 3? NE ANO NE Je stisknuté tlačítko 0? Rozsviť LED 3 ANO Rozsviť LED 0 Zhasni LED 1 NE Je stisknuté tlačítko 1? Rozsviť LED 1 ANO -16-
náveští instrukce komentář -17-
náveští instrukce komentář -18-
4. Navrhněte vývojový diagram a program pro tento příklad Příklad3.: Indikace stisku tlačítka II. Na vstupy RA3/0 budou připojeny tlačítka, na výstupy RB7/0 LED diody. Při stisku tláčítka bude program testovatzměnu stavu tlačítek. Vývojový diagram: -19-
náveští... instrukce... komentář -20-
náveští instrukce komentář -21-
5. Navrhněte vývojový diagram aprogram pro tento příklad Příklad3.: Indikace stisku tlačítka III Navrhněte program, který bude snímat stav tlačítka tak, že po stlačení a uvolnění tlačítka TL1 se rozsvítí LED dioda a po stlačení tlačítka a uvolnění tlačítka Tl2, LED dioda zhasne Vývojový diagram: -22-
náveští... instrukce... komentář -23-
náveští instrukce komentář -24-
Přehled použitých instrukcí: Instrukce Popis instrukce ANDLW konstanta provede logický součin-and W registru a zadané konstanty ANDWF adresa_registru,cílový_registr provede logický součin-and registru s obsahem W registru (cílový reg.=0, pak zápis do W, je-li=1, přepíše se tentýž reg.) BCF adresa_registru,bit_registru nastaví daný bit daného registru na stav log 0 BSF adresa_registru,bit_registru nastaví daný bit daného registru na stav log 1 BTFSC adresa_registru,bit_registru testování daného bitu v daném registru (pokud je bit=1, vykoná se následující instrukce, jeli=0, pak následující instrukci přeskočí NOP) BTFSS adresa_registru,bit_registru testování daného bitu v daném registru (pokud je bit=0, vykoná se následující instrukce, jeli=1, pak následující instrukci přeskočí-nop) COMF adresa_registru,cílový_registr provede negaci všech bitů registru (cílový registr=0, pak zápis do W, je-li=1, přepis téhož registru) CLRF adresa_registru zápis hodnoty 00h do zadaného registru CLRW END nulování W registrů konec programu GOTO adresa_paměti_programu skok z instrukce na danou adresu IORLW konstanta provede logický součet-or W registru a zadané konstanty IORWF adresa_registru,cílový_registr provede logický součet-or registru s obsahem W registru (cílový reg.=0, pak zápis dow, jeli=1, přepíše se tentýž reg.) MOVF adresa_registru,cílový_registr naplnění cílového registru z uvedeného registru MOVLW konstanta naplnění W registru osmibitovou konstantou MOVWF adresa_registru naplnění mikrokontroléru z W registru -25-
Instrukce NOP Popis instrukce instrukce neprovede žádnou operaci (proběhne 1 cyklus hodin) ORG adresa_paměti_programu začátek adresy programu RLF adresa_registru,cílový_registr provádí rotaci registru o jeden bit vlevo přes C bit (cílový reg.=0, pak zápis dow, je-li=1, přepíše se tentýž reg.) RRF adresa_registru,cílový_registr provádí rotaci registru o jeden bit vpravo přes C bit (cílový reg.=0, pak zápis dow, je-li=1, přepíše se tentýž reg.) SWAPF adresa_registru,cílový_registr provede záměnu spodního a horního půlbytu (cílový reg.=0, pak zápis dow, je-li=1, přepíše se tentýž reg.) TRIS adresa_tris_registr zapsání obsahu W registru do TRIS registru XORLW konstanta provede funkci exklusive OR mezi W a zadanou konstantou XORWF adresa_registru,cílový_registr provede funkci exklusive OR mezi W registrem daným registrem (cílový reg.=0, pak zápis dow, je-li=1, přepíše se tentýž reg.) Přehled instrukcí nastavující Z bit v SWR registru: ANDWF COMF CLRW IORWF IORLW MOVF SWAPF XORLW XORWF -26-
Poznámky: -27-
Poznámky: -28-
Doporučená literatura: 1. HRBÁČEK, J., Moderní učebnice programování PIC -1.díl. 1 dotisk 1.vyd. Praha: Nakladatelství BEN, 2005.96 s. ISBN 80-7300-136-5. 2. VACEK, V., Učebnice programování PIC. 2. dotisk 1.vyd. Praha: Nakladatelství BEN, 2002.144 s. ISBN 80-86056-87-2. 3. VACEK, J., VLČEK J., Praktické použití procesoru PIC. 2. dotisk 1.vyd. Praha: Nakladatelství BEN, 2001.72 s. B. ISBN. Internetové adresy 1. ASIX s.r.o., 1991-2006 Dostupný z WWW: <http://www.asix.cz> 2. Microchip Technology Inc., 2006 Dostupný z WWW: <http://microchip.com> -29-