{"id":205972,"date":"2013-12-13T18:29:03","date_gmt":"2013-12-13T14:29:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=205972"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=205972","title":{"rendered":"<span class=\"post_title\">\u0412\u044b \u0435\u0449\u0435 \u043d\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b? \u0422\u043e\u0433\u0434\u0430 \u043c\u044b \u0438\u0434\u0435\u043c \u043a \u0432\u0430\u043c!<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t<img decoding=\"async\" align=\"left\" src=\"http:\/\/habr.habrastorage.org\/post_images\/331\/381\/52d\/33138152d2bad64e00aa658ca021aedf.png\"\/>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0425\u0430\u0431\u0440\u0430\u0436\u0438\u0442\u0435\u043b\u0438!<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0438 \u0447\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. <\/p>\n<p>  \u0422\u0435\u043c\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043c\u0435\u043d\u044f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e, \u0433\u043e\u0434\u0443 \u044d\u0442\u0430\u043a \u0432 2001. \u041d\u043e \u0442\u043e\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 \u043f\u043e \u043c\u0435\u0441\u0442\u0443 \u0436\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e, \u0430 \u043e \u043f\u043e\u043a\u0443\u043f\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u0440\u0435\u0447\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0434\u043e \u043b\u0443\u0447\u0448\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d. \u0418 \u0432\u043e\u0442, \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0434\u0435\u043d\u044c \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e <s>\u043b\u0443\u0447\u0448\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u043f\u0440\u0438\u0448\u043b\u0438<\/s> \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u044f \u0438\u0437 \u0434\u043e\u043c\u0430 \u043c\u043e\u0436\u043d\u043e \u043a\u0443\u043f\u0438\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e. \u0420\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f:<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h6>1. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440<\/h6>\n<p>  \u041d\u0430 \u0440\u044b\u043d\u043a\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u2014 \u043e\u0442 \u0441\u0430\u043c\u044b\u0445 \u0434\u0435\u0448\u0435\u0432\u044b\u0445 ISP (In-System Programming) \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u0432 \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432, \u0434\u043e \u043c\u043e\u0449\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u043e\u0432-\u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u0432 \u0437\u0430 \u043f\u0430\u0440\u0443 \u0441\u043e\u0442\u0435\u043d. \u041d\u0435 \u0438\u043c\u0435\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430 \u0432 \u044d\u0442\u043e\u043c \u0434\u0435\u043b\u0435, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0438 \u0434\u0435\u0448\u0435\u0432\u044b\u0445 \u2014 USBasp. \u041a\u0443\u043f\u0438\u043b \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 eBay \u0437\u0430 $12, \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0434\u0430\u0436\u0435 \u0437\u0430 $3-4. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u043e\u0442 <a href=\"http:\/\/www.fischl.de\/usbasp\/\">Thomas Fischl<\/a>. \u0427\u0442\u043e \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0435\u0433\u043e? \u0422\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u2014 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e AVR \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u0435\u0440\u0438\u0439 ATmega \u0438 ATtiny. \u041f\u043e\u0434 Linux \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"http:\/\/habr.habrastorage.org\/post_images\/621\/c68\/9f3\/621c689f345cc0224cf6c67009389d44.jpg\"\/><\/div>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043d\u0430\u0434\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0432\u044b\u0445\u043e\u0434\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 <code>VCC, GND, RESET, SCK, MOSI, MISO<\/code> \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0432\u044b\u0445\u043e\u0434\u0430\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"http:\/\/habr.habrastorage.org\/post_images\/db2\/cbf\/34a\/db2cbf34a9ea3a2a71c34741f5d032de.png\" alt=\"image\"\/><\/div>\n<p>  \u0421\u043b\u0435\u0432\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 \u2014 \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c.<\/p>\n<h6>2. \u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440<\/h6>\n<p>  \u0421 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u044f \u043e\u0441\u043e\u0431\u043e \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b\u0441\u044f \u0438 \u0432\u0437\u044f\u043b ATmega8 \u043e\u0442 Atmel \u2014 23 \u043f\u0438\u043d\u0430 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430, \u0434\u0432\u0430 8-\u0431\u0438\u0442\u043d\u044b\u0445 \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u043e\u0434\u0438\u043d 16-\u0431\u0438\u0442\u043d\u044b\u0439, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u2014 \u0434\u043e 16 \u041c\u0433\u0446, \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 (1-3.6 \u043c\u0410), \u0434\u0435\u0448\u0435\u0432\u044b\u0439 ($2). \u0412 \u043e\u0431\u0449\u0435\u043c, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u2014 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"http:\/\/habr.habrastorage.org\/post_images\/952\/88a\/73b\/95288a73b35e64176f808de9b038797d.jpg\" alt=\"image\"\/><\/div>\n<p>  \u041f\u043e\u0434 Linux \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0432\u044f\u0437\u043a\u0430 avr-gcc + avrdude. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f. \u0421\u043b\u0435\u0434\u0443\u044f <a href=\"http:\/\/www.timteatro.net\/2012\/03\/22\/beginning-atmel-avr-development-in-linux-using-avr-eclipse-avr-gcc-and-avrdude\/\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/a>, \u043c\u043e\u0436\u043d\u043e \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u041f\u041e. \u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u044c\u044e\u0430\u043d\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u2014 avrdude (\u041f\u041e \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440) \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0441\u0443\u043f\u0435\u0440-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0443. \u0412\u044b\u0445\u043e\u0434 \u2014 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 sudo (\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0434\u0435\u044f), \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 udev \u043f\u0440\u0430\u0432\u0430. \u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u041e\u0421, \u043d\u043e \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 (Linux Mint 15) \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0432 \u0444\u0430\u0439\u043b <code>\/etc\/udev\/rules.d\/41-atmega.rules<\/code>:<\/p>\n<pre><code class=\"bash\"># USBasp programmer SUBSYSTEM==&quot;usb&quot;, ATTR{idVendor}==&quot;16c0&quot;, ATTR{idProduct}==&quot;05dc&quot;, GROUP=&quot;plugdev&quot;, MODE=&quot;0666&quot; <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0430   <\/p>\n<pre><code class=\"bash\">service udev restart <\/code><\/pre>\n<p>  \u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 (\u043a\u0442\u043e \u0431\u044b \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u043b\u0441\u044f), \u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043c\u043d\u043e\u0433\u043e, \u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d <a href=\"http:\/\/avr-eclipse.sourceforge.net\/wiki\/index.php\/The_AVR_Eclipse_Plugin\">AVR Eclipse<\/a> \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u0440\u0435\u0434\u044b Eclipse. <\/p>\n<p>  \u041f\u043e\u0434 Windows \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440. \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435\u0442. \u0420\u0430\u0434\u0438 \u043d\u0430\u0443\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0441\u0432\u044f\u0437\u043a\u0443 AVR Studio + eXtreme Burner \u0432 Windows. \u041e\u043f\u044f\u0442\u044c-\u0442\u0430\u043a\u0438, \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0443\u0440\u0430.<\/p>\n<h3>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/h3>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c AVR \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 (AVR assembler), \u0442\u0430\u043a \u0438 \u043d\u0430 \u0421\u0438. \u0422\u0443\u0442, \u0434\u0443\u043c\u0430\u044e, \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u0441\u0430\u043c \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0439. \u041b\u0438\u0447\u043d\u043e \u044f \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430\u0447\u0430\u043b \u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440. \u041f\u0440\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u0435\u0435 \u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043a\u043e\u043f\u0430\u0435\u0448\u044c\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0432 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u0437\u043d\u0430\u043d\u0438\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f. \u041f\u043e\u0441\u043b\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0441 AVR \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c \u044f \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u0437 \u043d\u0430 \u0421\u0438. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438, \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u0422\u0443\u0442 \u043c\u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u0434\u043e\u0447\u0443\u0440\u043a\u0430, \u043e\u043d\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0448\u0430\u0445\u043c\u0430\u0442\u0430\u043c\u0438 \u0438 \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0432\u0435\u0447\u0435\u0440 \u0437\u0430\u044f\u0432\u0438\u043b\u0430, \u0447\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0447\u0430\u0441\u044b-\u0442\u0430\u0439\u043c\u0435\u0440 \u0434\u043b\u044f \u043f\u0430\u0440\u0442\u0438\u0439 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f. \u0411\u0410\u0426! \u0412\u043e\u0442 \u043e\u043d\u0430 \u2014 \u0438\u0434\u0435\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430! \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0437\u0430\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 eBay, \u043d\u043e \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u044b, \u0441 \u0431\u043b\u044d\u043a\u2026 \u044d\u044d\u044d\u2026 \u0441 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u0438 \u043a\u043d\u043e\u043f\u043e\u0447\u043a\u0430\u043c\u0438. \u0421\u043a\u0430\u0437\u0430\u043d\u043e \u2014 \u0441\u0434\u0435\u043b\u0430\u043d\u043e!<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0440\u0435\u0448\u0435\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0430 7-\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0445 \u0434\u0438\u043e\u0434\u043d\u044b\u0445 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430. \u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u043b\u043e 5 \u043a\u043d\u043e\u043f\u043e\u043a \u2014 <code>\u201c\u0418\u0433\u0440\u043e\u043a 1\u201d<\/code>, <code>\u201c\u0418\u0433\u0440\u043e\u043a 2\u201d<\/code>, <code>\u201c\u0421\u0431\u0440\u043e\u0441\u201d<\/code>, <code>\u201c\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u201d<\/code> \u0438 <code>\u201c\u041f\u0430\u0443\u0437\u0430\u201d<\/code>. \u041d\u0443 \u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e \u0437\u0432\u0443\u043a\u043e\u0432\u0443\u044e \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0438\u0433\u0440\u044b. \u0412\u0440\u043e\u0434\u0435 \u0432\u0441\u0435. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u0431\u0449\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043a \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430\u043c \u0438 \u043a\u043d\u043e\u043f\u043a\u0430\u043c. \u041e\u043d\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043d\u0430\u043c \u043f\u0440\u0438 \u0440\u0430\u0437\u0431\u043e\u0440\u0435 \u0438\u0441\u0445\u043b\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"http:\/\/habr.habrastorage.org\/post_images\/67a\/d1a\/092\/67ad1a092172f113fe1ab3608176fd4d.png\"\/><\/div>\n<h3>\u0420\u0430\u0437\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0442\u0430<\/h3>\n<p>  \u041d\u0430\u0447\u043d\u0435\u043c, \u043a\u0430\u043a \u0438 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>main<\/code>. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432 \u043d\u0435\u0439 \u043d\u0435\u0442 \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0440\u0442\u043e\u0432, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u043a\u043d\u043e\u043f\u043e\u043a. \u041d\u0443 \u0438 \u0432\u044b\u0437\u043e\u0432 <code>sei()<\/code> \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u043e \u043d\u0438\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0437\u0436\u0435.<\/p>\n<pre><code class=\"cpp\">int main(void) { \tinit_io(); \tinit_data(); \tsound_off(); \tsei();  \twhile(1) \t{ \t\thandle_buttons(); \t} \treturn 0; } <\/code><\/pre>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<pre><code class=\"cpp\">void init_io() { \t\/\/ set output \tDDRB = 0xFF; \tDDRD = 0xFF;  \t\/\/ set input \tDDRC = 0b11100000;  \t\/\/ pull-up resistors \tPORTC |= 0b00011111;  \t\/\/ timer interrupts \tTIMSK = (1&lt;&lt;OCIE1A) | (1&lt;&lt;TOIE0);  \tTCCR0 |= (1 &lt;&lt; CS01) | (1 &lt;&lt; CS00);  \tTCCR1B = (1&lt;&lt;CS12|1&lt;&lt;WGM12);  \t\/\/OCRn =  (clock_speed \/ prescaler) * seconds - 1 \tOCR1A = (F_CPU \/ 256) * 1 -1; } <\/code><\/pre>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 \u0432\u0432\u043e\u0434\u0430\/\u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 DDRx (\u0433\u0434\u0435 x \u2014 \u0431\u0443\u043a\u0432\u0430, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0430\u044f \u043f\u043e\u0440\u0442) \u0437\u0430\u043f\u0438\u0441\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e, \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0438\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0431\u0443\u0434\u0435\u0442 \u043b\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043f\u0438\u043d \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0432\u0432\u043e\u0434\u0430 (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 0) \u043b\u0438\u0431\u043e \u0432\u044b\u0432\u043e\u0434\u0430 (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 1). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0437\u0430\u0441\u043b\u0430\u0432 \u0432 DDRB \u0438 DDRD \u0447\u0438\u0441\u043b\u043e 0xFF, \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 B \u0438 D \u043f\u043e\u0440\u0442\u0430\u043c\u0438 \u0432\u044b\u0432\u043e\u0434\u0430. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <code>DDRC = 0b11100000;<\/code> \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0435 5 \u043f\u0438\u043d\u043e\u0432 \u043f\u043e\u0440\u0442\u0430 C \u0432\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u043f\u0438\u043d\u044b, \u0430 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u2014 \u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>PORTC |= 0b00011111;<\/code> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u044b \u043d\u0430 5 \u0432\u0445\u043e\u0434\u0430\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0445\u0435\u043c\u0435, \u043a \u044d\u0442\u0438\u043c \u0432\u0445\u043e\u0434\u0430\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a\u043d\u043e\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u0437\u0430\u043c\u043a\u043d\u0443\u0442 \u0438\u0445 \u043d\u0430 \u0437\u0435\u043c\u043b\u044e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0430. <\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u0432\u0443\u0445 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432, Timer0 \u0438 Timer1. \u041f\u0435\u0440\u0432\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u0441\u0447\u0435\u0442\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0432 \u0435\u0433\u043e \u043d\u0430 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0438 \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a ATmega8. <\/p>\n<p>  <b>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439<\/b><\/p>\n<pre><code class=\"cpp\">ISR (TIMER0_OVF_vect) { \tdisplay();  \tif (_buzzer &gt; 0) \t{ \t\t_buzzer--; \t\tif (_buzzer == 0) \t\t\tsound_off(); \t} }  ISR(TIMER1_COMPA_vect) { \tif (ActiveTimer == 1 && Timer1 &gt; 0) \t{ \t\tTimer1--; \t\tif (Timer1 == 0) \t\t\tprocess_timeoff(); \t}  \tif (ActiveTimer == 2 && Timer2 &gt; 0) \t{ \t\tTimer2--; \t\tif (Timer2 == 0) \t\t\tprocess_timeoff(); \t} } <\/code><\/pre>\n<p>  \u041f\u0440\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a TIMER0_OVF_vect, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b, \u0438 TIMER1_COMPA_vect, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043e\u0442\u0441\u0447\u0435\u0442.<\/p>\n<p>  <b>\u0412\u044b\u0432\u043e\u0434 \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b<\/b><\/p>\n<pre><code class=\"cpp\">void display() { \tdisplay_number((Timer1\/60)\/10, 0b00001000); \t_delay_ms(0.25);  \tdisplay_number((Timer1\/60)%10, 0b00000100); \t_delay_ms(0.25);  \tdisplay_number((Timer1%60)\/10, 0b00000010); \t_delay_ms(0.25);  \tdisplay_number((Timer1%60)%10, 0b00000001); \t_delay_ms(0.25);  \tdisplay_number((Timer2\/60)\/10, 0b10000000); \t_delay_ms(0.25);  \tdisplay_number((Timer2\/60)%10, 0b01000000); \t_delay_ms(0.25);  \tdisplay_number((Timer2%60)\/10, 0b00100000); \t_delay_ms(0.25);  \tdisplay_number((Timer2%60)%10, 0b00010000); \t_delay_ms(0.25);  \tPORTD = 0; }  void display_number(int number, int mask) { \tPORTB = number_mask(number); \tPORTD = mask; } <\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>display <\/code>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u0438. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u044b\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u043c\u0435\u0435\u0442 9 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 (7 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438, 1 \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438 \u0438 1 \u0434\u043b\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f). \u0414\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f 4 \u0446\u0438\u0444\u0440\u0430\u043c\u0438 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0431\u044b 36 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0440\u0430\u0441\u0442\u043e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0432\u043e\u0434 \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432 \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0446\u0438\u0444\u0440\u0430\u043c\u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"http:\/\/habrastorage.org\/storage3\/47d\/93c\/64e\/47d93c64e1fe82795c545a87fa6d96f7.gif\"\/><\/div>\n<p>  \u041d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e \u043f\u043e\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043e\u0431\u0449\u0438\u0445 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0441\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0435 \u043d\u0443\u0436\u043d\u0443\u044e \u0446\u0438\u0444\u0440\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 8 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432. \u041f\u0440\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0434\u043b\u044f \u0433\u043b\u0430\u0437\u0430 \u043a\u0430\u043a \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435 8 \u043f\u0438\u0442\u0430\u044e\u0449\u0438\u0445 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u043e\u0431\u043e\u0438\u0445 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a 8 \u0432\u044b\u0445\u043e\u0434\u0430\u043c \u043f\u043e\u0440\u0442\u0430 D, \u0430 16 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u043f\u043e\u043f\u0430\u0440\u043d\u043e \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a 8 \u0432\u044b\u0445\u043e\u0434\u0430\u043c \u043f\u043e\u0440\u0442\u0430 B. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0444\u0443\u043d\u043a\u0446\u0438\u044f display \u0441 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0432 0.25 \u043c\u0441 \u043f\u043e\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043d\u0443\u0436\u043d\u0443\u044e \u0446\u0438\u0444\u0440\u0443 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432. \u041f\u043e\u0434 \u043a\u043e\u043d\u0435\u0446 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0432\u044b\u0445\u043e\u0434\u044b, \u043f\u043e\u0434\u0430\u044e\u0449\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b (\u043a\u043e\u043c\u0430\u043d\u0434\u0430 <code>PORTD = 0;<\/code>). \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u0430\u044f \u0446\u0438\u0444\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0433\u043e\u0440\u0435\u0442\u044c \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 display, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0435\u0435 \u0431\u043e\u043b\u0435\u0435 \u044f\u0440\u043a\u043e\u043c\u0443 \u0441\u0432\u0435\u0447\u0435\u043d\u0438\u044e \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438. <\/p>\n<p>  <b>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 <\/b><\/p>\n<pre><code class=\"cpp\">void handle_buttons() { \thandle_button(KEY_SETUP); \thandle_button(KEY_RESET); \thandle_button(KEY_PAUSE); \thandle_button(KEY_PLAYER1); \thandle_button(KEY_PLAYER2); }  void handle_button(int key) { \tint bit; \tswitch (key) \t{ \t\tcase KEY_SETUP: \tbit = SETUP_BIT; break; \t\tcase KEY_RESET: \tbit = RESET_BIT; break; \t\tcase KEY_PAUSE: \tbit = PAUSE_BIT; break; \t\tcase KEY_PLAYER1: \tbit = PLAYER1_BIT; break; \t\tcase KEY_PLAYER2: \tbit = PLAYER2_BIT; break; \t\tdefault: return; \t}  \tif (bit_is_clear(BUTTON_PIN, bit)) \t{ \t\tif (_pressed == 0) \t\t{ \t\t\t_delay_ms(DEBOUNCE_TIME); \t\t\tif (bit_is_clear(BUTTON_PIN, bit)) \t\t\t{ \t\t\t\t_pressed |= key;  \t\t\t\t\/\/ key action \t\t\t\tswitch (key) \t\t\t\t{ \t\t\t\t\tcase KEY_SETUP: \tprocess_setup(); break; \t\t\t\t\tcase KEY_RESET: \tprocess_reset(); break; \t\t\t\t\tcase KEY_PAUSE: \tprocess_pause(); break; \t\t\t\t\tcase KEY_PLAYER1: \tprocess_player1(); break; \t\t\t\t\tcase KEY_PLAYER2: \tprocess_player2(); break; \t\t\t\t}  \t\t\t\tsound_on(15); \t\t\t} \t\t} \t} \telse \t{ \t\t_pressed &= ~key; \t} } <\/code><\/pre>\n<p>  \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 5 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u0435, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u041d\u0430\u0436\u0430\u0442\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 <code>bit_is_clear(BUTTON_PIN, bit)<\/code>, \u0442.\u0435. \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0430 \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0435\u0439 \u0432\u0445\u043e\u0434 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d \u0441 \u0437\u0435\u043c\u043b\u0435\u0439, \u0447\u0442\u043e \u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0445\u0435\u043c\u0435, \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438. \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e <code>DEBOUNCE_TIME<\/code> \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0443\u0436\u043d\u0430 \u0432\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u0438\u0437-\u0437\u0430 \u0434\u0440\u0435\u0431\u0435\u0437\u0433\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432. \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0431\u0438\u0442\u0430\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>_pressed<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443. <br \/>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b \u0438 \u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f. <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#define F_CPU \t\t\t\t\t\t4000000UL  #include &lt;avr\/io.h&gt; #include &lt;util\/delay.h&gt; #include &lt;avr\/interrupt.h&gt;   #define DEBOUNCE_TIME \t\t\t\t\t20  #define BUTTON_PIN \t\t\t\t\tPINC #define SETUP_BIT \t\t\t\t\tPC0 #define RESET_BIT \t\t\t\t\tPC1 #define PAUSE_BIT \t\t\t\t\tPC2 #define PLAYER1_BIT \t\t\t\t\tPC3 #define PLAYER2_BIT \t\t\t\t\tPC4  #define KEY_SETUP\t\t\t\t\t0b00000001 #define KEY_RESET\t\t\t\t\t0b00000010 #define KEY_PAUSE\t\t\t\t\t0b00000100 #define KEY_PLAYER1\t\t\t\t\t0b00001000 #define KEY_PLAYER2\t\t\t\t\t0b00010000   volatile int ActiveTimer = 0; volatile int Timer1 = 0; volatile int Timer2 = 0;  volatile int _buzzer = 0; volatile int _pressed = 0;   \/\/ function declarations  void init_io(); void init_data(); int number_mask(int num); void handle_buttons(); void handle_button(int key); void process_setup(); void process_reset(); void process_pause(); void process_timeoff(); void process_player1(); void process_player2(); void display(); void display_number(int mask, int number); void sound_on(int interval); void sound_off();  \/\/ interrupts  ISR (TIMER0_OVF_vect) { \tdisplay();  \tif (_buzzer &gt; 0) \t{ \t\t_buzzer--; \t\tif (_buzzer == 0) \t\t\tsound_off(); \t} }  ISR(TIMER1_COMPA_vect) { \tif (ActiveTimer == 1 && Timer1 &gt; 0) \t{ \t\tTimer1--; \t\tif (Timer1 == 0) \t\t\tprocess_timeoff(); \t}  \tif (ActiveTimer == 2 && Timer2 &gt; 0) \t{ \t\tTimer2--; \t\tif (Timer2 == 0) \t\t\tprocess_timeoff(); \t} }   int main(void) { \tinit_io(); \tinit_data();  \tsound_off();  \tsei();  \twhile(1) \t{ \t\thandle_buttons(); \t} \treturn 0; }  void init_io() { \t\/\/ set output \tDDRB = 0xFF; \tDDRD = 0xFF;  \t\/\/ set input \tDDRC = 0b11100000;  \t\/\/ pull-up resistors \tPORTC |= 0b00011111;  \t\/\/ timer interrupts \tTIMSK = (1&lt;&lt;OCIE1A) | (1&lt;&lt;TOIE0);  \tTCCR0 |= (1 &lt;&lt; CS01) | (1 &lt;&lt; CS00);  \tTCCR1B = (1&lt;&lt;CS12|1&lt;&lt;WGM12);  \t\/\/OCRn =  (clock_speed \/ prescaler) * seconds - 1 \tOCR1A = (F_CPU \/ 256) * 1 -1; }  void init_data() { \tTimer1 = 0; \tTimer2 = 0; \tActiveTimer = 0; }  int number_mask(int num) { \tswitch (num) \t{ \t\tcase 0 : return 0xC0; \t\tcase 1 : return 0xF9; \t\tcase 2 : return 0xA4; \t\tcase 3 : return 0xB0; \t\tcase 4 : return 0x99; \t\tcase 5 : return 0x92; \t\tcase 6 : return 0x82; \t\tcase 7 : return 0xF8; \t\tcase 8 : return 0x80; \t\tcase 9 : return 0x90; \t};  \treturn 0; }  void process_setup() { \tTimer1 += 60; \tTimer2 += 60;  \t\/\/ overflow check (5940 seconds == 99 minutes) \tif (Timer1 &gt; 5940 || Timer2 &gt; 5940) \t{ \t\tTimer1 = 0; \t\tTimer2 = 0; \t} }  void process_reset() { \tinit_data(); }  void process_timeoff() { \tinit_data();  \tsound_on(30); }  void process_pause() { \tActiveTimer = 0; }  void process_player1() { \tActiveTimer = 2; }  void process_player2() { \tActiveTimer = 1; }  void handle_button(int key) { \tint bit; \tswitch (key) \t{ \t\tcase KEY_SETUP: \tbit = SETUP_BIT; break; \t\tcase KEY_RESET: \tbit = RESET_BIT; break; \t\tcase KEY_PAUSE: \tbit = PAUSE_BIT; break; \t\tcase KEY_PLAYER1: \tbit = PLAYER1_BIT; break; \t\tcase KEY_PLAYER2: \tbit = PLAYER2_BIT; break; \t\tdefault: return; \t}  \tif (bit_is_clear(BUTTON_PIN, bit)) \t{ \t\tif (_pressed == 0) \t\t{ \t\t\t_delay_ms(DEBOUNCE_TIME); \t\t\tif (bit_is_clear(BUTTON_PIN, bit)) \t\t\t{ \t\t\t\t_pressed |= key;  \t\t\t\t\/\/ key action \t\t\t\tswitch (key) \t\t\t\t{ \t\t\t\t\tcase KEY_SETUP: \tprocess_setup(); break; \t\t\t\t\tcase KEY_RESET: \tprocess_reset(); break; \t\t\t\t\tcase KEY_PAUSE: \tprocess_pause(); break; \t\t\t\t\tcase KEY_PLAYER1: \tprocess_player1(); break; \t\t\t\t\tcase KEY_PLAYER2: \tprocess_player2(); break; \t\t\t\t}  \t\t\t\tsound_on(15); \t\t\t} \t\t} \t} \telse \t{ \t\t_pressed &= ~key; \t} }  void handle_buttons() { \thandle_button(KEY_SETUP); \thandle_button(KEY_RESET); \thandle_button(KEY_PAUSE); \thandle_button(KEY_PLAYER1); \thandle_button(KEY_PLAYER2); }  void display() { \tdisplay_number((Timer1\/60)\/10, 0b00001000); \t_delay_ms(0.25);  \tdisplay_number((Timer1\/60)%10, 0b00000100); \t_delay_ms(0.25);  \tdisplay_number((Timer1%60)\/10, 0b00000010); \t_delay_ms(0.25);  \tdisplay_number((Timer1%60)%10, 0b00000001); \t_delay_ms(0.25);  \tdisplay_number((Timer2\/60)\/10, 0b10000000); \t_delay_ms(0.25);  \tdisplay_number((Timer2\/60)%10, 0b01000000); \t_delay_ms(0.25);  \tdisplay_number((Timer2%60)\/10, 0b00100000); \t_delay_ms(0.25);  \tdisplay_number((Timer2%60)%10, 0b00010000); \t_delay_ms(0.25);  \tPORTD = 0; }  void display_number(int number, int mask) { \tPORTB = number_mask(number); \tPORTD = mask; }  void sound_on(int interval) { \t_buzzer = interval;  \t\/\/ put buzzer pin high \tPORTC |= 0b00100000; }  void sound_off() { \t\/\/ put buzzer pin low \tPORTC &= ~0b00100000; } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0431\u044b\u043b \u0441\u043e\u0431\u0440\u0430\u043d \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"http:\/\/habrastorage.org\/storage3\/267\/1cf\/d40\/2671cfd40ca07f5910d827dbdf937c1d.jpg\"\/><\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u0431\u0440\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u043a\u043e\u0440\u043f\u0443\u0441\u0435, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u0438 \u0442.\u0434. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"http:\/\/habrastorage.org\/storage3\/a6c\/696\/d3a\/a6c696d3aee3c67320f154a78c546e24.jpg\"\/><\/div>\n<p>  \u041d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0427\u0430\u0441\u044b \u043f\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0442 9-\u0432\u043e\u043b\u044c\u0442\u043e\u0432\u043e\u0439 \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043a\u0438 \u0442\u0438\u043f\u0430 \u201c\u041a\u0440\u043e\u043d\u0430\u201d. \u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0430 \u2014 55 \u043c\u0410. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\"  src=\"http:\/\/habrastorage.org\/storage3\/a6c\/354\/d32\/a6c354d32fae0c7485b646174ac77b99.jpg\"\/><\/div>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u041f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 $20-25 \u043d\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0430\u0440\u0443 \u0432\u0435\u0447\u0435\u0440\u043e\u0432 \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0441 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u044b, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 DIY \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u043a\u0442\u043e, \u043a\u0430\u043a \u0438 \u044f \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0434\u0443\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e, \u0434\u043e\u043b\u0433\u043e \u0438\u043b\u0438 \u0434\u043e\u0440\u043e\u0433\u043e. \u041f\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u043d\u0430\u0447\u0430\u0442\u044c \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u2014 \u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435, \u043d\u0435 \u043f\u043e\u0436\u0430\u043b\u0435\u0442\u0435!<\/p>\n<p>  \u0423\u0434\u0430\u0447\u043d\u043e\u0433\u043e \u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f!<\/p>\n<p>  P.S. \u041d\u0443 \u0438 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0432\u0438\u0434\u0435\u043e-\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430:<\/p>\n<p>  <iframe loading=\"lazy\" width=\"560\" height=\"349\" src=\"\/\/www.youtube.com\/embed\/KyOOOAfcelk?wmode=opaque\" frameborder=\"0\" allowfullscreen><\/iframe> \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/205972\/\"> http:\/\/habrahabr.ru\/post\/205972\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t<img decoding=\"async\" align=\"left\" src=\"http:\/\/habr.habrastorage.org\/post_images\/331\/381\/52d\/33138152d2bad64e00aa658ca021aedf.png\"\/>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0425\u0430\u0431\u0440\u0430\u0436\u0438\u0442\u0435\u043b\u0438!<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0438 \u0447\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. <\/p>\n<p>  \u0422\u0435\u043c\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043c\u0435\u043d\u044f \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e, \u0433\u043e\u0434\u0443 \u044d\u0442\u0430\u043a \u0432 2001. \u041d\u043e \u0442\u043e\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 \u043f\u043e \u043c\u0435\u0441\u0442\u0443 \u0436\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e, \u0430 \u043e \u043f\u043e\u043a\u0443\u043f\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u0440\u0435\u0447\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u043b\u043e\u0436\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0434\u043e \u043b\u0443\u0447\u0448\u0438\u0445 \u0432\u0440\u0435\u043c\u0435\u043d. \u0418 \u0432\u043e\u0442, \u0432 \u043e\u0434\u0438\u043d \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0434\u0435\u043d\u044c \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e <s>\u043b\u0443\u0447\u0448\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u043f\u0440\u0438\u0448\u043b\u0438<\/s> \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u044f \u0438\u0437 \u0434\u043e\u043c\u0430 \u043c\u043e\u0436\u043d\u043e \u043a\u0443\u043f\u0438\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043d\u0443\u0436\u043d\u043e. \u0420\u0435\u0448\u0438\u043b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u0418\u0442\u0430\u043a, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f:  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-205972","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/205972","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=205972"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/205972\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=205972"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=205972"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=205972"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}