100 likes | 216 Views
Digitální učební materiál. přerušení. Mikroprocesory PIC 16Fxx. Obvod přerušení – INT RB0 (Změna rychlosti blikání LED pomocí tlačítka). Mikroprocesory PIC 16Fxx. přerušení. Obvod přerušení. Mikroprocesor PIC16F84A má několik zdrojů, které mohou vyvolat přerušení. přetečení TMR0
E N D
přerušení Mikroprocesory PIC 16Fxx Obvod přerušení – INT RB0 (Změna rychlosti blikání LED pomocí tlačítka)
Mikroprocesory PIC 16Fxx přerušení Obvod přerušení Mikroprocesor PIC16F84A má několik zdrojů, které mohou vyvolat přerušení. • přetečení TMR0 • ukončení zápisu do EEPROM • změna stavu na RB7-4 • impulz na RB0 Po přijetí přerušení program skočí na adresu 004h programové paměti. Po resetu nebo zapnutí napájecího napětí začne program na adrese 000h. Do adresy programu přerušení zbývají 4 adresové místa, kam se ukládají instrukce skoku na začátek hlavního programu.
Mikroprocesory PIC 16Fxx INTCON 0Ch, 8Ch GIE - povolení jakéhokoli přerušení EEIE - přerušení po dokončení zápisu do EEPROM TOIE - přerušení po přetečení časovače TMR0 INTE - přerušení od vývodu INT - RB0 RBIE - přerušení od změny na portu B TOIF - příznak přetečení TMR0 (ručně nulovat) INTF - příznak vnějšího přerušení (ručně nulovat) RBIF - příznak přerušení od portu B (ručně nulovat) Povolení - enable 0 - zakázat 1 - povolit Příznak - flag 0 - nebyl 1 - byl
Mikroprocesory PIC 16Fxx přerušení Vlastní sytém přerušení vypadá takto: TOIF & TOIE SLEEP INTF & INTE požadavek na vykonání přerušení 1 & RBIF & RBIE EEIF GIE & EEIE
Mikroprocesory PIC 16Fxx přerušení Program pro změnu rychlosti blikání LED pomocí přerušení od vstupu RB0: Po stisku tlačítka připojeného na RB0 začne LED blikat dvojnásobnou rychlostí. Pro blikání LED využijeme program z lekce o přerušení pomocí TMR0. ;******************************************************************* ;Přerušení od INT RB0 - PIC 16F84A ;******************************************************************* goto main ;jdi na hlavní program nop nop nop nop ;tady začíná přerušení goto obsluha ;první instrukce přerušení obsluha btfsc intcon,1 ;test zda přišlo přerušení od tlačítka goto tlac ;vykonej akci stisku tlačítka btfsc intcon,2 ; test zda přišlo přerušení od časovače goto blik ;vykonej akci časovače return ;vrať se do hlavního programu
Mikroprocesory PIC 16Fxx přerušení Program pro změnu rychlosti blikání LED pomocí přerušení od vstupu RB0: main bsf status,5 ;hlavní program movlw ffh movwf trisa clrf trisb bsf portb,0 movlw d7h movwf option ;povolení timeru s předděličkou bcf status,5 movlw b0h movwf intcon ;povolení přerušení - obecné + timer + intRB0 nekon goto nekon ;nekonečná smyčka
Mikroprocesory PIC 16Fxx přerušení Program pro změnu rychlosti blikání LED pomocí přerušení od vstupu RB0: tlac nop btfsc portb,0 ;test stisku tlačítka goto rych goto pom rych bsf status,5 movlw 96h ;nastaví přerušení sestupnou hranou + dělič movwf option goto int pom bsf status,5 movlw d7h ;nastaví přerušení náběžnou hranou + dělič movwf option int bcf status,5 bcf 0Bh,1 bsf 0Bh,7 retfie ;návrat z přerušení
Mikroprocesory PIC 16Fxx přerušení Program pro změnu rychlosti blikání LED pomocí přerušení od vstupu RB0: blik nop ;akce časovače btfss portb,1 ;test, jestli svítí LED goto rozsvit goto zhasni zpet bcf 0Bh,2 ;výmaz příznaku bsf 0Bh,7 ;znovupovolení generálního přerušení retfie ;návrat z přerušení rozsvit bsf portb,1 goto zpet zhasni bcf portb,1 goto zpet
Použité zdroje: HRBÁČEK, Jiří. Moderní učebnice programování jednočipových mikrokontrolérů PIC - 1. díl. 1. vyd. Praha: BEN – technická literatura, 2004. ISBN 80-7300-136-5. HRBÁČEK, Jiří. Moderní učebnice programování jednočipových mikrokontrolérů PIC.- 2. díl 1. vyd.Praha: BEN - technická literatura, 2007, 141 s. ISBN 978-80-7300-137-7. PIC16F84A Data Sheet 18-pin Enhanced FLASH/EEPROM 8-bit Microcontroller [on line]. 2004 [cit. 2013-02-03]. Dostupné z: http://www.microchip.com/TechDoc.aspx?type=datasheet Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Peter Podoba.