{"id":219773,"date":"2014-04-17T13:35:02","date_gmt":"2014-04-17T09:35:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=219773"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=219773","title":{"rendered":"<span class=\"post_title\">\u0423\u043c\u043d\u044b\u0435 \u0447\u0430\u0441\u044b \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u0437\u0430 1500 \u0440\u0443\u0431\u043b\u0435\u0439. \u0427\u0430\u0441\u0442\u044c 3 \u2013 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430 \u041c\u041a<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/360\/bd3\/ba4\/360bd3ba4c7bb3ef7f59a435330e4b1d.jpg\" align=\"right\"\/><\/p>\n<p>  \u0412\u043e\u0442 \u0438 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u041c\u041a, \u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u0442\u044c <a href=\"http:\/\/habrahabr.ru\/users\/bigbee\/\" class=\"user_link\">bigbee<\/a> \u0437\u0430 \u043d\u043e\u0432\u0435\u043d\u044c\u043a\u0438\u0439 \u043a\u043e\u0440\u043f\u0443\u0441 \u0434\u043b\u044f \u043c\u043e\u0438\u0445 \u0447\u0430\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u0430\u043b \u0438 \u0432\u044b\u0441\u043b\u0430\u043b \u043c\u043d\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. \u0422\u0430\u043a \u0436\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e <a href=\"http:\/\/habrahabr.ru\/users\/chameleonka\/\" class=\"user_link\">Chameleonka<\/a> \u0437\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u043a\u043e\u0440\u043f\u0443\u0441.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 Code Compmser Studio V 5.3.0<br \/>  \u0420\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043e\u0441\u043a\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u043d\u043e \u0432\u0430\u0436\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b (\u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434) \u0440\u0430\u0441\u043f\u0438\u0448\u0443.<br \/>  \u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430 \u0438 \u043d\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c<\/p>\n<p>  \u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0444\u0430\u0439\u043b Symbols.h, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0438\u043a\u043e\u043d\u043a\u0438 \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439, \u0446\u0438\u0444\u0440\u044b \u0434\u043b\u044f \u0447\u0430\u0441\u043e\u0432. \u0412\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u043f\u0438\u043a\u0441\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435.<br \/>  \u0422\u0430\u043a \u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0444\u0430\u0439\u043b TI_USCI_I2C_master.h. \u042d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043e\u0442 TI \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c USCI \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 I2C master \u0434\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0430 \u2014 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">#include &lt;msp430g2553.h&gt; #include &quot;Symbols.h&quot; #include &quot;TI_USCI_I2C_master.h&quot;  \/* Bit operations *\/ #define BIT_SET(lval, mask)     ((lval) |= (mask)) #define BIT_CLR(lval, mask)     ((lval) &= ~(mask)) #define BIT_TEST(val, mask)     (((val) & (mask))==(mask)) \/* BSL *\/ #define TXD\t\tBIT1\t\t\/\/ P1.1: BSL TxD #define RXD\t\tBIT5\t\t\/\/ P1.5: BSL RxD \/* BT *\/ #define BT_TXD    \tBIT1\t\t\/\/ P2.1: UART BT TxD #define BT_RXD    \tBIT0\t\t\/\/ P2.0: UART BT RxD #define BT_PWR    \tBIT2\t\t\/\/ P2.2, P3.2 #define BT_LED    \tBIT3\t\t\/\/ P3.3 \/* LCD *\/ #define PIN_RESET \tBIT2\t\t\/\/ P1.2  RESET #define PIN_SCE \tBIT3\t\t\/\/ P1.3  CS #define PIN_SDIN \tBIT4\t\t\/\/ P1.4  SDA \/\/mosi #define PIN_SCLK \tBIT1\t\t\/\/ P3.1  SCK #define PIN_LED \tBIT0\t\t\/\/ P3.0  \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f #define LCD_C\t\t0\t\t\/\/ Command #define LCD_D\t\t1\t\t\/\/ Data \/* Buttons & vibro *\/ #define B_CENT\t\tBIT4\t\t\/\/ P2.4 #define B_UP\t\tBIT3\t\t\/\/ P2.3 #define B_DOWN\t\tBIT5\t\t\/\/ P2.5 #define vibro\t\tBIT4\t\t\/\/ P3.4 \/* System configuration *\/ #define TIMER1A_CLOCK\t1000000L\t\t\t\/\/ Timer1_A clock rate (1 MHz) #define UART_BAUD\t9600\t\t\t\t\/\/ desired UART baud rate #define BT_BITTIME\t(TIMER1A_CLOCK\/UART_BAUD)\t\/\/ Bit interval #define BT_HALF_BT\t((BT_BITTIME+1)\/2)\t\t\/\/ Half-bit interval #define Slave_Address\t0x68\t\t\t\t\/\/ address RTC <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">void check_akkum(void);\t\t\t\t\t\/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 void check_bluetooth(void);\t\t\t\t\/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f BT  void uart_tx_bt(char c);\t\t\t\t\/\/ \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043f\u043e BT void uart_puts_bt(char const* s);\t\t\t\/\/ \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e BT  void get_time_from_rtc(void);\t\t\t\t\/\/ \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u0427\u0420\u0412 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u043e FLASH void set_time_to_rtc(void);\t\t\t\t\/\/ \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0427\u0420\u0412  void LcdCharacter(char character);\t\t\t\/\/ \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0438\u043c\u0432\u043e\u043b void LcdClear(void);\t\t\t\t\t\/\/ \u043e\u0442\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d void clear_1(void);\t\t\t\t\t\/\/ \u043e\u0442\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u044d\u043a\u0440\u0430\u043d, \u043a\u0440\u043e\u043c\u0435 \u0441\u0442\u0430\u0442\u0443\u0441 \u0431\u0430\u0440\u0430 void Lcd_set_pos(unsigned char c, unsigned char r);\t\/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 void Lcd_set_pos_pix(unsigned char c, unsigned char r);\t\/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 void lcd_contrast(unsigned char contrast2);\t\t\/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0430 void lcd_dig(unsigned char num, unsigned char pos_x, unsigned char pos_y);\t\/\/ \u0446\u0438\u0444\u0440\u044b \u0447\u0430\u0441\u043e\u0432 void lcd_dot(unsigned char num, unsigned char pos_x, unsigned char pos_y);\t\/\/ \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u0447\u0430\u0441\u043e\u0432 void LcdWrite(unsigned char dc, unsigned char data);\t\/\/ \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043a\u043e\u043c\u043c\u0430\u043d\u0434\u044b\/\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d void LcdString(char *characters);\t\t\t\/\/ \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0443 void lcd_show_sms(unsigned char a);\t\t\t\/\/ \u0437\u043d\u0430\u0447\u0435\u043a \u0441\u043c\u0441 void lcd_show_call(unsigned char a);\t\t\t\/\/ \u0437\u043d\u0430\u0447\u0435\u043a \u0437\u0432\u043e\u043d\u043a\u0430 void lcd_show_bt(unsigned char a);\t\t\t\/\/ \u0437\u043d\u0430\u0447\u0435\u043a BT void lcd_show_bat(unsigned char proc);\t\t\t\/\/ \u0437\u043d\u0430\u0447\u0435\u043a \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 void lcd_set_time_big(void);\t\t\t\t\/\/ \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0447\u0430\u0441\u044b void lcd_set_time_small(void);\t\t\t\t\/\/ \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043c\u0430\u043b\u044b\u0435 \u0447\u0430\u0441\u044b (\u0432 \u0441\u0442\u0430\u0442\u0443\u0441 \u0431\u0430\u0440\u0435) void lcd_show_main(void);\t\t\t\t\/\/ \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d (\u0434\u0430\u0442\u0430 \u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0447\u0430\u0441\u044b)  void menu_setting(unsigned char submenu);\t\t\/\/ \u043c\u0435\u043d\u044e void down_sub_menu(void);\t\t\t\t\/\/ \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u043c\u0435\u043d\u044e void up_sub_menu(void);\t\t\t\t\t\/\/\t\t\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u0434\u043c\u0435\u043d\u044e void parse_string(void);\t\t\t\t\/\/ \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0438 \u041c\u041a \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438 \u0447\u0430\u0441\u043e\u0432:   <\/p>\n<ul>\n<li> DCO \u2014 \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 8MHz;<\/li>\n<li> Timer0 \u2014 \u0428\u0418\u041c \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0434\u0438\u0441\u043f\u043b\u0435\u044f;<\/li>\n<li> Timer1 \u2014 \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 UART \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 BT;<\/li>\n<li> WDT+ \u2014 \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0447\u0430\u0441\u043e\u0432;<\/li>\n<li> FLASH \u2014 \u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0434\u0430\u0442\u044b\/\u0432\u0440\u0435\u043c\u0435\u043d\u0438;<\/li>\n<li> ADC10 \u2014 \u0410\u0426\u041f \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435.<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\tWDTCTL = WDTPW + WDTHOLD;\t\t\/\/ \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432\u0430\u0442\u0447\u0434\u043e\u0433 \t\/\/ init clocks \tBCSCTL1 = CALBC1_8MHZ; \tDCOCTL = CALDCO_8MHZ; \tBCSCTL2 = 0;\t\t\t\/\/ MCLK = 8MHz\/1,SMCLK = 8MHz\/1 \tBCSCTL3 = LFXT1S_2;\t\t\t\/\/ Mode 2 for LFXT1 : VLO = 12kHz  \t__delay_cycles(800000);  \t\/\/ \u0441\u0430\u0436\u0430\u0435\u043c BSL \u043d\u043e\u0433\u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0438 \u043b\u043e\u0433. 0 \tBIT_SET(P1DIR, TXD | RXD); \tBIT_CLR(P1OUT, TXD | RXD);  \tedit_time = 0; \t\/\/ \u0431\u0435\u0440\u0435\u043c \u0438\u043d\u0444\u0443 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u044d\u043a\u0440\u0430\u043d\u0430 \u0438\u0437 FLASH'\u0430 \tchar *a; \ta = (char*) 0x104d; \tcontrast = *a++; \tpwm_width = 0x00ff | (*a++) &lt;&lt; 8; \ttimer_off = ((*a++) & 0x00ff) &lt;&lt; 8; \ttimer_off |= ((*a++) & 0x00ff);  \t\/\/ \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f LCD \tBIT_SET(P1DIR, PIN_RESET + PIN_SCE + PIN_SDIN); \tBIT_SET(P3DIR, PIN_SCLK); \tBIT_CLR(P1OUT, PIN_RESET + PIN_SDIN); \tBIT_CLR(P3OUT, PIN_SCLK); \tBIT_SET(P1OUT, PIN_SCE); \tBIT_SET(P3DIR, PIN_LED); \tBIT_SET(P3OUT, PIN_LED); \tBIT_SET(P1OUT, PIN_RESET);  \t\/\/ \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 LCD \tLcdWrite(LCD_C, 0xE2); \t\t\t\t\t\/\/ \u0441\u0431\u0440\u043e\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043d\u044b\u0439 \tLcdWrite(LCD_C, 0x3D); \t\t\t\t\t\/\/ Charge pump ON \tLcdWrite(LCD_C, 0x01); \t\t\t\t\t\/\/ Charge pump=4 \tLcdWrite(LCD_C, 0xA4); \t\t\t\t\t\/\/ \tLcdWrite(LCD_C, 0x2F); \t\t\t\t\t\/\/ \tLcdWrite(LCD_C, 0xC0); \t\t\t\t\t\/\/ \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0435\u0440\u0445-\u043d\u0438\u0437 \tLcdWrite(LCD_C, 0xA0); \t\t\t\t\t\/\/ \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043b\u0435\u0432\u043e-\u043f\u0440\u0430\u0432\u043e \t__delay_cycles(800000); \tLcdWrite(LCD_C, 0xAF); \t\t\t\t\t\/\/ Display ON  \tLcdClear(); \tlcd_contrast(contrast); \tBIT_SET(P3SEL, PIN_LED); \tBIT_SET(P3DIR, PIN_LED);  \t\/\/ \u0442\u0430\u0439\u043c\u0435\u0440 \u0428\u0418\u041c \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \tTACTL = TASSEL_2 + ID_0 + MC_1 + TACLR;\t\/\/ SMCLK\/1 + \u043f\u0440\u044f\u043c\u043e\u0439 \u0441\u0447\u0435\u0442 \u0434\u043e TACCR0 + counter clear \tTACCR0 = 0x0fff;\t\t\t\t\/\/ \u043f\u0435\u0440\u0438\u043e\u0434 \u0428\u0418\u041c \tTACCR2 = pwm_width;\t\t\t\t\/\/ \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0428\u0418\u041c \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \tTACCTL2 = OUTMOD_6;\t\t\t\t\/\/ \u0432\u044b\u0445\u043e\u0434 \u0428\u0418\u041c  \t\/\/ init Bluetooth \tBIT_SET(P3DIR, BT_PWR); \tBIT_CLR(P3REN, BT_PWR); \tBIT_SET(P3OUT, BT_PWR); \tBIT_SET(P2DIR, BT_PWR); \tBIT_CLR(P2REN, BT_PWR); \tBIT_SET(P2OUT, BT_PWR);\t\t\t\t\/\/\u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u0411\u0422 ON \tBIT_CLR(P3DIR, BT_LED);\t\t\t\t\/\/\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0442 \tbt_on = 1; \tlcd_show_bt(1);  \t\/\/Timer1 \u0434\u043b\u044f uart \tTA1CTL = TASSEL_2 + ID_3 + MC_2 + TAIE;\t\/\/SMCLK\/8 + Continous up + interrupt enable \tTA1CCTL1 = OUT; \t\t\t\t\/\/Tx \tTA1CCTL0 = CM_2 + SCS + CAP + CCIE; \t\/\/Rx  \t\/\/\u041f\u043e\u0440\u0442\u044b Rx \u0438 TX \u0434\u043b\u044f \u0411\u0422 \tBIT_SET(P2SEL, BT_TXD + BT_RXD); \tBIT_SET(P2DIR, BT_TXD);  \t\/\/\u0442\u0430\u0439\u043c\u0435\u0440 \u0434\u043b\u044f \u0432\u044b\u043a\u043b. \u044d\u043a\u0440\u0430\u043d\u0430 \tBIT_SET(TA1CCTL2, CCIE);  \t\/\/ \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043a\u043d\u043e\u043f\u043e\u043a \tBIT_CLR(P2DIR, B_CENT|B_UP|B_DOWN); \t\/\/ \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0438\u043d\u043e\u0432 - IN \tBIT_SET(P2REN, B_CENT|B_UP|B_DOWN); \t\/\/ \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \tBIT_SET(P2IE, B_CENT|B_UP|B_DOWN); \t\/\/ \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \tBIT_SET(P2IES, B_CENT|B_UP|B_DOWN); \t\/\/ \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e 1\/0 (\u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044e\/\u043d\u0430\u0436\u0430\u0442\u0438\u044e) \tBIT_CLR(P2IFG, B_CENT|B_UP|B_DOWN); \t\/\/ \u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0444\u043b\u0430\u0433\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439  \t\/\/ WDT+ \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0430\u0439\u043c\u0435\u0440, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 12 \u041a\u0413\u0446 - ACLK - VLO \tWDTCTL = WDTPW + WDTTMSEL + WDTSSEL; \tBIT_SET(IE1, WDTIE);  \t\/\/ vibro - \u0432\u044b\u0445\u043e\u0434 \tBIT_SET(P3DIR, vibro); \tBIT_CLR(P3OUT, vibro);  \tlcd_show_main();\t\t\t\/\/ \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \t__enable_interrupt(); \tedit_time = 0; \tget_time = 0; \tset_time = 0; \tget_time_from_rtc();\t\t\/\/ \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0432\u0440\u0435\u043c\u044f \t__delay_cycles(8000000); \tset_time_to_rtc();\t\t\t\/\/ \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0432\u0440\u0435\u043c\u044f  \t\/\/ init ADC \tADC10CTL0 = SREF_1 + ADC10SR + REF2_5V + ADC10SHT_2 + REFON + ADC10ON + ADC10IE; \tADC10CTL1 = INCH_0;  \tADC10AE0 |= 0x01; \/\/ \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c 0-\u043e\u0439 \u043f\u0438\u043d \u043a\u0430\u043a \u0432\u0445\u043e\u0434 \u0434\u043b\u044f \u0410\u0426\u041f <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f<br \/>  \u0412\u043e \u0432\u0441\u0435\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u0445 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<br \/>  \u041f\u0440\u0438 \u043f\u0440\u0438\u0435\u043c\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e BT \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043b\u0438\u0431\u043e Timer1 \u0435\u0441\u043b\u0438 \u0447\u0430\u0441\u044b \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043b\u0438\u0431\u043e P2, \u0435\u0441\u043b\u0438 \u0447\u0430\u0441\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u044d\u043d\u0435\u0440\u0433\u043e\u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f.<br \/>  \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 LPM3 SMCLK \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0442\u0430\u0439\u043c\u0435\u0440 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0430 P2 \u043e\u0442 BT, \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u041c\u041a \u0432 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u043f\u0438\u043d BT_RXD \u043d\u0430 \u0432\u0445\u043e\u0434 Timer1. <br \/>  \u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u0435\u043c\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0441\u0438\u043c\u0432\u043e\u043b \u043a\u043e\u043d\u0446\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f 0x00) \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0441\u0442\u0440\u043e\u043a\u0438 \u2014 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440. \u00ab1\u00bb \u2014 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u043a \u0447\u0430\u0441\u0430\u043c; \u00ab2\u00bb \u2014 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0441\u043c\u0441; \u00ab3\u00bb \u2014 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0437\u0432\u043e\u043d\u043e\u043a; \u00ab4\u00bb \u2014 \u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0447\u0430\u0441\u043e\u0432; \u00ab5\u00bb \u2014 \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043c\u044f.   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0430\u0437\u0431\u043e\u0440 \u0441\u0442\u0440\u043e\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\tunsigned int il; \tunsigned char z,k;  \tswitch (inputString[0]) { \t\tcase '1': {\t\t\t\t\t\/\/ \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u043a BT \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \t\t\tBIT_SET(P3OUT, vibro); \t\t\t__delay_cycles(1600000); \t\t\tBIT_CLR(P3OUT, vibro); \t\t\t__delay_cycles(1600000); \t\t\tBIT_SET(P3OUT, vibro); \t\t\t__delay_cycles(1600000); \t\t\tBIT_CLR(P3OUT, vibro); \t\t\t__delay_cycles(1600000); \t\t\tBIT_SET(P3OUT, vibro); \t\t\t__delay_cycles(1600000); \t\t\tBIT_CLR(P3OUT, vibro); \t\t\tlcd_show_bt(2); \t\t\tbt_connect = 1; \t\t\tbreak; \t\t} \t\tcase '2': {\t\t\t\t\t\/\/ \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0441\u043c\u0441 \t\t\tcurrent_screen = 1; \t\t\tlcd_show_sms(1); \t\t\tlcd_show_call(0); \t\t\tclear_1(); \t\t\tLcd_set_pos(0, 1); \t\t\tz = 1; \t\t\til = 1; \t\t\tk = 15; \t\t\tif (multiscreen) { \t\t\t\tcurrent_screen = 4; \t\t\t\twhile (il &lt; 105) { \t\t\t\t\tLcdCharacter(inputString[il]); \t\t\t\t\tif (++il &gt; k){ \t\t\t\t\t\tLcd_set_pos(0, ++z); \t\t\t\t\t\tk += 15; \t\t\t\t\t} \t\t\t\t} \t\t\t\tLcdCharacter(0x7f); \t\t\t} else \t\t\t\twhile (inputString[il] != 0x00) { \t\t\t\t\tLcdCharacter(inputString[il]); \t\t\t\t\tif (++il &gt; k){ \t\t\t\t\t\tLcd_set_pos(0, ++z); \t\t\t\t\t\tk += 15; \t\t\t\t\t} \t\t\t\t} \t\t\tBIT_SET(P3OUT, vibro); \t\t\t__delay_cycles(2800000); \t\t\tBIT_CLR(P3OUT, vibro); \t\t\t__delay_cycles(2400000); \t\t\tBIT_SET(P3OUT, vibro); \t\t\t__delay_cycles(8000000); \t\t\tBIT_CLR(P3OUT, vibro); \t\t\tbreak; \t\t} \t\tcase '3': {\t\t\t\t\t\/\/ \u0438\u043d\u0434\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0437\u0432\u043e\u043d\u043a\u0430 \t\t\tcurrent_screen = 1; \t\t\tlcd_show_sms(0); \t\t\tlcd_show_call(1); \t\t\tclear_1(); \t\t\tLcd_set_pos(0, 2); \t\t\til = 1; \t\t\tz = 2; \t\t\tk = 15; \t\t\twhile (inputString[il] != 0x00) { \t\t\t\tLcdCharacter(inputString[il]); \t\t\t\tif (++il &gt; k){ \t\t\t\t\tLcd_set_pos(0, ++z); \t\t\t\t\tk += 15; \t\t\t\t} \t\t\t} \t\t\tcall_true = 1; \t\t\tBIT_SET(P3OUT, vibro); \t\t\t__delay_cycles(1600000); \t\t\tBIT_CLR(P3OUT, vibro); \t\t\t__delay_cycles(800000); \t\t\tBIT_SET(P3OUT, vibro); \t\t\t__delay_cycles(8000000); \t\t\tBIT_CLR(P3OUT, vibro); \t\t\t__delay_cycles(1600000); \t\t\tBIT_SET(P3OUT, vibro); \t\t\t__delay_cycles(1600000); \t\t\tBIT_CLR(P3OUT, vibro); \t\t\t__delay_cycles(800000); \t\t\tBIT_SET(P3OUT, vibro); \t\t\t__delay_cycles(8000000); \t\t\tBIT_CLR(P3OUT, vibro); \t\t\tbreak; \t\t} \t\tcase '4': {\t\t\t\t\t\/\/ \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0441\u043b\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \t\t\tcurrent_screen = 1; \t\t\tlcd_show_sms(0); \t\t\tlcd_show_call(0); \t\t\tclear_1(); \t\t\tLcd_set_pos(0, 1); \t\t\til = 1; \t\t\tz = 1; \t\t\tk = 15; \t\t\tif (multiscreen) { \t\t\t\tcurrent_screen = 4; \t\t\t\twhile (il &lt; 105) { \t\t\t\t\tLcdCharacter(inputString[il]); \t\t\t\t\tif (++il &gt; k){ \t\t\t\t\t\tLcd_set_pos(0, ++z); \t\t\t\t\t\tk += 15; \t\t\t\t\t} \t\t\t\t} \t\t\t\tLcdCharacter(0x7f); \t\t\t} else \t\t\t\twhile (inputString[il] != 0x00) { \t\t\t\t\tLcdCharacter(inputString[il]); \t\t\t\t\tif (++il &gt; k){ \t\t\t\t\t\tLcd_set_pos(0, ++z); \t\t\t\t\t\tk += 15; \t\t\t\t\t} \t\t\t\t} \t\t\tbreak; \t\t} \t\tcase '5': {\t\t\t\t  \/\/ \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0441\u043b\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \t\t\tedit_time = 1; \t\t\ts10 = inputString[1] & 0x0f; \t\t\ts1 = inputString[2] & 0x0f; \t\t\tm10 = inputString[3] & 0x0f; \t\t\tm1 = inputString[4] & 0x0f; \t\t\th10 = inputString[5] & 0x0f; \t\t\th1 = inputString[6] & 0x0f; \t\t\tdw = (inputString[7] & 0x0f) + 1 ; \t\t\td10 = inputString[8] & 0x0f; \t\t\td1 = inputString[9] & 0x0f; \t\t\tmo10 = inputString[10] & 0x0f; \t\t\tmo1 = inputString[11] & 0x0f; \t\t\tye10 = inputString[14] & 0x0f; \t\t\tye1 = inputString[15] & 0x0f; \t\t\tset_time = 1; \t\t\tbreak; \t\t} \t\tdefault: { \t\t\tbreak; \t\t} \t} \tif (!multiscreen) \t\tfor (il = 313; il &gt; 0; il--) \t\t\tinputString[il] = 0; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f P2 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043d\u043e\u043f\u043e\u043a. \u0415\u0441\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0430, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0440\u0435\u0436\u0438\u043c\u0430 \u044d\u043d\u0435\u0440\u0433\u043e\u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a \u0436\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f P2 \u0435\u0441\u0442\u044c \u0446\u0438\u043a\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u00ab\u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e\u00bb \u043d\u0430\u0436\u0430\u0442\u0438\u044f.<br \/>  \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f WDT+ \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 BT, \u0434\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u0427\u0420\u0412, \u0434\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0410\u0426\u041f.<br \/>  \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f ADC10 \u0434\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u043a\u043a\u0443\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430. \u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 ADC10 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 FLASH<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\t\/\/ \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e FLASH \tchar *Flash_ptrC;\t\t\t\t\t \tFlash_ptrC = (char *) 0x1040;             \t\/\/ Point to beginning of seg C \tFCTL2 = FWKEY + FSSEL_1 + FN1;      \t\/\/ MCLK\/3 for Flash Timing Generator \tFCTL1 = FWKEY + ERASE;                    \t\/\/ Set Erase bit \tFCTL3 = FWKEY ;                    \t\t\/\/ Clear LOCK  \t*Flash_ptrC = 0x00;                  \t\/\/ Dummy write to erase Flash seg C \tFCTL1 = FWKEY + WRT;                  \t\/\/ Set WRT bit for write operation \tFlash_ptrC = (char *) 0x1040;        \t\/\/ Point to beginning \t*Flash_ptrC++ = s10;\t\t\t\/\/ 0x1040 \t*Flash_ptrC++ = s1;\t\t\t\t\/\/ 0x1041 \t*Flash_ptrC++ = m10;\t\t\t\/\/ 0x1042 \t*Flash_ptrC++ = m1;\t\t\t\t\/\/ 0x1043 \t*Flash_ptrC++ = h10;\t\t\t\/\/ 0x1044 \t*Flash_ptrC++ = h1;\t\t\t\t\/\/ 0x1045 \t*Flash_ptrC++ = dw;\t\t\t\t\/\/ 0x1046 \t*Flash_ptrC++ = d10;\t\t\t\/\/ 0x1047 \t*Flash_ptrC++ = d1;\t\t\t\t\/\/ 0x1048 \t*Flash_ptrC++ = mo10;\t\t\t\/\/ 0x1049 \t*Flash_ptrC++ = mo1;\t\t\t\/\/ 0x104a \t*Flash_ptrC++ = ye10;\t\t\t\/\/ 0x104b \t*Flash_ptrC++ = ye1;\t\t\t\/\/ 0x104c \t*Flash_ptrC++ = contrast;\t\t\t\/\/ 0x104d \t*Flash_ptrC++ = (pwm_width & 0xff00) &gt;&gt; 8;\t\/\/ 0x104e \t*Flash_ptrC++ = (timer_off & 0xff00) &gt;&gt; 8;\t\/\/ 0x104f \t*Flash_ptrC++ = (timer_off & 0x00ff);\t\/\/ 0x1050 \tFCTL1 = FWKEY;                            \t\/\/ Clear WRT bit \tFCTL3 = FWKEY + LOCK;             \t\t\/\/ Set LOCK   \t\/\/ \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 FLASH \tchar *a;\t\t\t\t\t\t\t \ta = (char*) 0x1040; \ts10 = *a++; \ts1 = *a++; \tm10 = *a++; \tm1 = *a++; \th10 = *a++; \th1 = *a++; \tdw = *a++; \td10 = *a++; \td1 = *a++; \tmo10 = *a++; \tmo1 = *a++; \tye10 = *a++; \tye1 = *a++; \tcontrast = *a++; \tpwm_width = 0x00ff | (*a++) &lt;&lt; 8; \ttimer_off = ((*a++) & 0x00ff) &lt;&lt; 8; \ttimer_off |= ((*a++) & 0x00ff); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <a href=\"https:\/\/github.com\/winkingsl\/smatr-watch-on-msp430\">\u0442\u0443\u0442<\/a><\/p>\n<p>  \u0418 \u0435\u0449\u0435 \u0444\u043e\u0442\u043e \u043d\u043e\u0432\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u043a\u043e\u0440\u043f\u0443\u0441\u0430:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ff1\/197\/fa7\/ff1197fa73a6b045edc6b7198b7e94ff.jpg\"\/><br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/870\/9e0\/523\/8709e0523425c51c37603ca4082df26d.jpg\"\/><\/p>\n<p>  <a href=\"http:\/\/habrahabr.ru\/post\/218495\/\">\u0427\u0430\u0441\u0442\u044c 1 \u2014 \u041d\u0430\u0447\u0430\u043b\u043e<\/a><br \/>  <a href=\"http:\/\/habrahabr.ru\/post\/218645\/\">\u0427\u0430\u0441\u0442\u044c 2 \u2014 \u041f\u043b\u0430\u0442\u0430 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b <\/a>    \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\/219773\/\"> http:\/\/habrahabr.ru\/post\/219773\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/360\/bd3\/ba4\/360bd3ba4c7bb3ef7f59a435330e4b1d.jpg\" align=\"right\"\/><\/p>\n<p>  \u0412\u043e\u0442 \u0438 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u041c\u041a, \u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u0442\u044c <a href=\"http:\/\/habrahabr.ru\/users\/bigbee\/\" class=\"user_link\">bigbee<\/a> \u0437\u0430 \u043d\u043e\u0432\u0435\u043d\u044c\u043a\u0438\u0439 \u043a\u043e\u0440\u043f\u0443\u0441 \u0434\u043b\u044f \u043c\u043e\u0438\u0445 \u0447\u0430\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u0430\u043b \u0438 \u0432\u044b\u0441\u043b\u0430\u043b \u043c\u043d\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. \u0422\u0430\u043a \u0436\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e <a href=\"http:\/\/habrahabr.ru\/users\/chameleonka\/\" class=\"user_link\">Chameleonka<\/a> \u0437\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u043a\u043e\u0440\u043f\u0443\u0441.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 Code Compmser Studio V 5.3.0<br \/>  \u0420\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043e\u0441\u043a\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u043d\u043e \u0432\u0430\u0436\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b (\u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434) \u0440\u0430\u0441\u043f\u0438\u0448\u0443.<br \/>  \u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u0430 \u0438 \u043d\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430.  <\/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-219773","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/219773","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=219773"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/219773\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=219773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=219773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=219773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}