diff --git a/articles/2011/avr-led-panel-priklad-tlacitko-s-prerusenim.md b/articles/2011/avr-led-panel-priklad-tlacitko-s-prerusenim.md new file mode 100644 index 0000000000000000000000000000000000000000..7ba5a228ea496ba69748fed02abede40acf6e789 --- /dev/null +++ b/articles/2011/avr-led-panel-priklad-tlacitko-s-prerusenim.md @@ -0,0 +1,78 @@ ++++ + +title = "AVR - LED panel - PĹ™Ăklad - TlaÄŤĂtko s pĹ™erušenĂm" +perex_e = " + +KompatibilnĂ zapojenĂ: LED panel s ATmega8 + +Ke staĹľenĂ: LED_Tlacitko-preruseni.c == LED_Tlacitko-preruseni.pdf == LED_Tlacitko-preruseni.htm +. +. +" +tags = ["ÄŚlánek"] ++++ + + + +KompatibilnĂ zapojenĂ: LED panel s ATmega8 + +Ke staĹľenĂ: LED_Tlacitko-preruseni.c == LED_Tlacitko-preruseni.pdf == LED_Tlacitko-preruseni.htm +. +. + +* * * + +<title>Untitled</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="generator" content="SynEdit HTML exporter"> <style type="text/css">&amp;lt;!-- body { color: #000000; background-color: #FFFFFF; } .cpp1-assembler { } .cpp1-brackets { } .cpp1-comment { color: #008000; font-style: italic; } .cpp1-float { color: #000080; } .cpp1-hexadecimal { color: #000080; } .cpp1-character { } .cpp1-identifier { } .cpp1-illegalchar { } .cpp1-number { color: #000080; } .cpp1-octal { color: #0000FF; } .cpp1-preprocessor { } .cpp1-reservedword { font-weight: bold; } .cpp1-space { color: #008080; } .cpp1-string { color: #800000; } .cpp1-symbol { } --&amp;gt;</style> + +``` +/* +Popis: +PĹ™i stisku tlaÄŤĂtka se rozsvĂtĂ vybranĂ© ledky. Po uvolnÄ›nĂ tohoto tlaÄŤĂtka ledky +opÄ›t zhasnou. + +Ledky kterĂ© se majĂ rozsvÄ›cet jsou vybrány konstantou "LED". + +TlaÄŤĂtka jsou pĹ™ipojena k portu "D" K tlaÄŤĂtkĹŻm jsou pĹ™ipojeny "pull up" rezistory +na 5 V, takĹľe pokud nenĂ stisknutĂ© tlaÄŤĂtko, je na danĂ©m pinu 5 V (log. 1). +PĹ™i stisku tlaÄŤĂtka se danĂ˝ pin uzemnĂ a je na nÄ›m tedy 0 V (log 0). + +TlaÄŤĂtko je pĹ™ipojeno k pinu PD2 (INT0). +PĹ™i stisku tlaÄŤĂtka bude vyvoláno pĹ™erušenĂ ve kterĂ©m dojde k rozsvĂcenĂ ledek. +*/ + +#include <avr/io.h> //VloĹľ knihovnu vstupĹŻ a vĂ˝stupĹŻ (PORT, DDR, PIN) +#include <avr/interrupt.h> //VloĹľ knihovnu vektorĹŻ pĹ™erušenĂ (ISR(), sei() ) + +#define LED 0b01010101; //Ledky, kterĂ© se majĂ rozsvĂtit pĹ™i stisku tlaÄŤĂtka + //(kaĹľdá lichá) + +/********************Obsluha pĹ™erušenĂ***********************/ +ISR(INT0_vect) //obsluha vnÄ›jšĂho pĹ™erušenĂ 0 +{ +PORTB = LED; //RozsviĹĄ vybranĂ© ledky (zhasnou se v hlavnĂ smyÄŤce) + //aĹľ pĹ™estane bĂ˝t voláno pĹ™erušenĂ +} + +/**********************HLAVNĂŤ FUNKCE*************************/ + +int main (void) //hlavnĂ funkce +{ +GIMSK = 0b01000000; //vybereme pĹ™erušenĂ od INT0 +sei(); //povol pĹ™erušenĂ + +DDRB = 0xff; //(0xff = 0b11111111) -> Piny 0 - 7 portu "B" budou vĂ˝stupnĂ +DDRD = 0; //Port "D" bude vstupnĂ (tlaÄŤĂtko je pĹ™ipojeno k portu "D") + +while (1) // NekoneÄŤná smyÄŤka (dokud 1 = pořád) + { + + PORTB = 0; //zhasni všechny ledky (rozsvicujĂ se v pĹ™erušenĂ) + //Pokud nenĂ stisknutĂ© tlaÄŤĂtko, program v hlavnĂ smyÄŤce neustále + //zhasĂná ledky. + + } //Konec cyklu "while (1)" - program skoÄŤĂ zpÄ›t na jeho začátek + +}//konec funkce main() - sem se program nikdy nedostane + //(závorka tu však musĂ bĂ˝t jinak by pĹ™ekladaÄŤ nahlásil chybu) + +``` \ No newline at end of file