рддреЛ рдПрдордХреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдмрд┐рдЫрд╛рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдореИрдВ рдЕрдкрдиреА рдШрдбрд╝реА рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдВрдб-рдирдП рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдмрд┐рдЧрдмреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреНрд░рд┐рдВрдЯ рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐: рд╢реБрд▓реНрдХ рднреЗрдЬрд╛ред рдорд╛рдорд▓реЗ рдХреЛ рдЫрд╛рдкрдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЧрд┐рд░рдЧрд┐рдЯрдХрд╛ рдХреЛ рднреА рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреЛрдб рдХреЙрдореНрдкрдорд░ рд╕реНрдЯреВрдбрд┐рдпреЛ V 5.3.0 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛
рдореИрдВ рдХреЛрдб рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ рдкрд░ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ) рд▓рд┐рдЦреВрдВрдЧрд╛ред
рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рд╣реИред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкреНрд░рддреАрдХ рддрд╛рд▓рд┐рдХрд╛, рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдмрд╛рд░ рдЖрдЗрдХрди рдФрд░ рдШрдбрд╝реА рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╡рд╛рд▓реА рдПрдХ рдкреНрд░рддреАрдХ рдЪрд┐рд╣реНрди рдлрд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд┐рдХреНрд╕реЗрд▓-рдмрд╛рдп-рдкрд┐рдХреНрд╕реЗрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ TI_USCI_I2C_master.h рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ I2C рдорд╛рд╕реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ USCI рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TI рд╕реЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖ рдФрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ
#include <msp430g2553.h> #include "Symbols.h" #include "TI_USCI_I2C_master.h" /* 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 BIT1 // P1.1: BSL TxD #define RXD BIT5 // P1.5: BSL RxD /* BT */ #define BT_TXD BIT1 // P2.1: UART BT TxD #define BT_RXD BIT0 // P2.0: UART BT RxD #define BT_PWR BIT2 // P2.2, P3.2 #define BT_LED BIT3 // P3.3 /* LCD */ #define PIN_RESET BIT2 // P1.2 RESET #define PIN_SCE BIT3 // P1.3 CS #define PIN_SDIN BIT4 // P1.4 SDA //mosi #define PIN_SCLK BIT1 // P3.1 SCK #define PIN_LED BIT0 // P3.0 #define LCD_C 0 // Command #define LCD_D 1 // Data /* Buttons & vibro */ #define B_CENT BIT4 // P2.4 #define B_UP BIT3 // P2.3 #define B_DOWN BIT5 // P2.5 #define vibro BIT4 // P3.4 /* System configuration */ #define TIMER1A_CLOCK 1000000L // Timer1_A clock rate (1 MHz) #define UART_BAUD 9600 // desired UART baud rate #define BT_BITTIME (TIMER1A_CLOCK/UART_BAUD) // Bit interval #define BT_HALF_BT ((BT_BITTIME+1)/2) // Half-bit interval #define Slave_Address 0x68 // address RTC
рдХрд╛рд░реНрдп рдХреА рдкрд░рд┐рднрд╛рд╖рд╛
void check_akkum(void); // void check_bluetooth(void); // BT void uart_tx_bt(char c); // BT void uart_puts_bt(char const* s); // BT void get_time_from_rtc(void); // FLASH void set_time_to_rtc(void); // void LcdCharacter(char character); // void LcdClear(void); // void clear_1(void); // , void Lcd_set_pos(unsigned char c, unsigned char r); // void Lcd_set_pos_pix(unsigned char c, unsigned char r); // void lcd_contrast(unsigned char contrast2); // void lcd_dig(unsigned char num, unsigned char pos_x, unsigned char pos_y); // void lcd_dot(unsigned char num, unsigned char pos_x, unsigned char pos_y); // void LcdWrite(unsigned char dc, unsigned char data); // / void LcdString(char *characters); // void lcd_show_sms(unsigned char a); // void lcd_show_call(unsigned char a); // void lcd_show_bt(unsigned char a); // BT void lcd_show_bat(unsigned char proc); // void lcd_set_time_big(void); // void lcd_set_time_small(void); // ( ) void lcd_show_main(void); // ( ) void menu_setting(unsigned char submenu); // void down_sub_menu(void); // void up_sub_menu(void); // void parse_string(void); //
рд╣рдо рдмрд╛рд╣рд░реА рдШрдбрд╝реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдордХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:
- рдбреАрд╕реАрдУ - рдирд┐рд░реНрдорд┐рдд рдЬрдирд░реЗрдЯрд░ рдХреА рдЖрд╡реГрддреНрддрд┐ 8 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ;
- рдЯрд╛рдЗрдорд░ 0 - рдкреНрд░рджрд░реНрд╢рди рдмреИрдХрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреАрдбрдмреНрд▓реВрдПрдо;
- рдЯрд┐рдорд░ 1 - рдмреАрдЯреА рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдпреВрдПрдЖрд░рдЯреА;
- WDT + - рдШрдВрдЯреЗ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░рд╛рд▓ рдЯрд╛рдЗрдорд░;
- рдлреНрд▓реИрд╢ - рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рджрд┐рдирд╛рдВрдХ / рд╕рдордп рдХрд╛ рднрдВрдбрд╛рд░рдг;
- ADC10 - рдмреИрдЯрд░реА рдкрд░ рд╡реЛрд▓реНрдЯреЗрдЬ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ADCред
рдкреНрд░рд╛рд░рдВрдн
WDTCTL = WDTPW + WDTHOLD; // // init clocks BCSCTL1 = CALBC1_8MHZ; DCOCTL = CALDCO_8MHZ; BCSCTL2 = 0; // MCLK = 8MHz/1,SMCLK = 8MHz/1 BCSCTL3 = LFXT1S_2; // Mode 2 for LFXT1 : VLO = 12kHz __delay_cycles(800000); // BSL . 0 BIT_SET(P1DIR, TXD | RXD); BIT_CLR(P1OUT, TXD | RXD); edit_time = 0; // FLASH' char *a; a = (char*) 0x104d; contrast = *a++; pwm_width = 0x00ff | (*a++) << 8; timer_off = ((*a++) & 0x00ff) << 8; timer_off |= ((*a++) & 0x00ff); // LCD BIT_SET(P1DIR, PIN_RESET + PIN_SCE + PIN_SDIN); BIT_SET(P3DIR, PIN_SCLK); BIT_CLR(P1OUT, PIN_RESET + PIN_SDIN); BIT_CLR(P3OUT, PIN_SCLK); BIT_SET(P1OUT, PIN_SCE); BIT_SET(P3DIR, PIN_LED); BIT_SET(P3OUT, PIN_LED); BIT_SET(P1OUT, PIN_RESET); // LCD LcdWrite(LCD_C, 0xE2); // LcdWrite(LCD_C, 0x3D); // Charge pump ON LcdWrite(LCD_C, 0x01); // Charge pump=4 LcdWrite(LCD_C, 0xA4); // LcdWrite(LCD_C, 0x2F); // LcdWrite(LCD_C, 0xC0); // - LcdWrite(LCD_C, 0xA0); // - __delay_cycles(800000); LcdWrite(LCD_C, 0xAF); // Display ON LcdClear(); lcd_contrast(contrast); BIT_SET(P3SEL, PIN_LED); BIT_SET(P3DIR, PIN_LED); // TACTL = TASSEL_2 + ID_0 + MC_1 + TACLR; // SMCLK/1 + TACCR0 + counter clear TACCR0 = 0x0fff; // TACCR2 = pwm_width; // TACCTL2 = OUTMOD_6; // // init Bluetooth BIT_SET(P3DIR, BT_PWR); BIT_CLR(P3REN, BT_PWR); BIT_SET(P3OUT, BT_PWR); BIT_SET(P2DIR, BT_PWR); BIT_CLR(P2REN, BT_PWR); BIT_SET(P2OUT, BT_PWR); // ON BIT_CLR(P3DIR, BT_LED); // bt_on = 1; lcd_show_bt(1); //Timer1 uart TA1CTL = TASSEL_2 + ID_3 + MC_2 + TAIE; //SMCLK/8 + Continous up + interrupt enable TA1CCTL1 = OUT; //Tx TA1CCTL0 = CM_2 + SCS + CAP + CCIE; //Rx // Rx TX BIT_SET(P2SEL, BT_TXD + BT_RXD); BIT_SET(P2DIR, BT_TXD); // . BIT_SET(TA1CCTL2, CCIE); // BIT_CLR(P2DIR, B_CENT|B_UP|B_DOWN); // - IN BIT_SET(P2REN, B_CENT|B_UP|B_DOWN); // BIT_SET(P2IE, B_CENT|B_UP|B_DOWN); // BIT_SET(P2IES, B_CENT|B_UP|B_DOWN); // 1/0 (/) BIT_CLR(P2IFG, B_CENT|B_UP|B_DOWN); // // WDT+ , 12 - ACLK - VLO WDTCTL = WDTPW + WDTTMSEL + WDTSSEL; BIT_SET(IE1, WDTIE); // vibro - BIT_SET(P3DIR, vibro); BIT_CLR(P3OUT, vibro); lcd_show_main(); // __enable_interrupt(); edit_time = 0; get_time = 0; set_time = 0; get_time_from_rtc(); // __delay_cycles(8000000); set_time_to_rtc(); // // init ADC ADC10CTL0 = SREF_1 + ADC10SR + REF2_5V + ADC10SHT_2 + REFON + ADC10ON + ADC10IE; ADC10CTL1 = INCH_0; ADC10AE0 |= 0x01; // 0-
рдмреАрдЪ рдореЗрдВ рдЖрддрд╛ рд╣реИ
рд╕рднреА рд░реБрдХрд╛рд╡рдЯ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдореЗрдВ, рдЕрдиреНрдп рд╡реНрдпрд╡рдзрд╛рди рдкрд╣рд▓реЗ рдЕрдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ, рдЬрдм рд╣реИрдВрдбрд▓рд░ рдЦрддреНрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдЪрд╛рд▓реВ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмреАрдЯреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп, рдпрд╛ рддреЛ рдШрдбрд╝реА рдмрд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИ рдЕрдЧрд░ рдШрдбрд╝реА рд╕рдХреНрд░рд┐рдп рдореЛрдб рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдпрд╛ рдпрджрд┐ рдШрдбрд╝реА рдмрд┐рдЬрд▓реА рдмрдЪрдд рдореЛрдб рдореЗрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдкреА 2ред
LPM3 рдореЛрдб рдореЗрдВ, SMCLK рдЕрдХреНрд╖рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ BT рд╕реЗ P2 рдкреЛрд░реНрдЯ рдмрд╛рдзрд┐рдд рд╣реИ, рддреЛ MK рдХреЛ рд╕рдХреНрд░рд┐рдп рдореЛрдб рдореЗрдВ рд░рдЦреЗрдВ рдФрд░ BT_RXD рдкрд┐рди рдХреЛ Timer1 рдЗрдирдкреБрдЯ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВред
рдбреЗрдЯрд╛ рд░рд┐рд╕реЗрдкреНрд╢рди (рд╕рдВрджреЗрд╢ рдЕрдВрдд рд╡рд░реНрдг 0x00) рдХреЗ рдЕрдВрдд рдореЗрдВ, рдкреНрд░рд╛рдкреНрдд рдкрдВрдХреНрддрд┐ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реИред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкрд╣рд▓рд╛ рд╡рд░реНрдг рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред "1" - рдлреЛрди рдШрдбрд╝реА рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ; "2" - рдЖрдиреЗ рд╡рд╛рд▓реЗ рдПрд╕рдПрдордПрд╕; "3" - рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓; "4" рд╡рд╣ рдкрд╛рда рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдШрдбрд╝реА рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; "5" - рддрд╛рд░реАрдЦ рдФрд░ рд╕рдордп рдлреЛрди рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред
рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд┐рдВрдЧ
unsigned int il; unsigned char z,k; switch (inputString[0]) { case '1': { // BT BIT_SET(P3OUT, vibro); __delay_cycles(1600000); BIT_CLR(P3OUT, vibro); __delay_cycles(1600000); BIT_SET(P3OUT, vibro); __delay_cycles(1600000); BIT_CLR(P3OUT, vibro); __delay_cycles(1600000); BIT_SET(P3OUT, vibro); __delay_cycles(1600000); BIT_CLR(P3OUT, vibro); lcd_show_bt(2); bt_connect = 1; break; } case '2': { // current_screen = 1; lcd_show_sms(1); lcd_show_call(0); clear_1(); Lcd_set_pos(0, 1); z = 1; il = 1; k = 15; if (multiscreen) { current_screen = 4; while (il < 105) { LcdCharacter(inputString[il]); if (++il > k){ Lcd_set_pos(0, ++z); k += 15; } } LcdCharacter(0x7f); } else while (inputString[il] != 0x00) { LcdCharacter(inputString[il]); if (++il > k){ Lcd_set_pos(0, ++z); k += 15; } } BIT_SET(P3OUT, vibro); __delay_cycles(2800000); BIT_CLR(P3OUT, vibro); __delay_cycles(2400000); BIT_SET(P3OUT, vibro); __delay_cycles(8000000); BIT_CLR(P3OUT, vibro); break; } case '3': { // current_screen = 1; lcd_show_sms(0); lcd_show_call(1); clear_1(); Lcd_set_pos(0, 2); il = 1; z = 2; k = 15; while (inputString[il] != 0x00) { LcdCharacter(inputString[il]); if (++il > k){ Lcd_set_pos(0, ++z); k += 15; } } call_true = 1; BIT_SET(P3OUT, vibro); __delay_cycles(1600000); BIT_CLR(P3OUT, vibro); __delay_cycles(800000); BIT_SET(P3OUT, vibro); __delay_cycles(8000000); BIT_CLR(P3OUT, vibro); __delay_cycles(1600000); BIT_SET(P3OUT, vibro); __delay_cycles(1600000); BIT_CLR(P3OUT, vibro); __delay_cycles(800000); BIT_SET(P3OUT, vibro); __delay_cycles(8000000); BIT_CLR(P3OUT, vibro); break; } case '4': { // current_screen = 1; lcd_show_sms(0); lcd_show_call(0); clear_1(); Lcd_set_pos(0, 1); il = 1; z = 1; k = 15; if (multiscreen) { current_screen = 4; while (il < 105) { LcdCharacter(inputString[il]); if (++il > k){ Lcd_set_pos(0, ++z); k += 15; } } LcdCharacter(0x7f); } else while (inputString[il] != 0x00) { LcdCharacter(inputString[il]); if (++il > k){ Lcd_set_pos(0, ++z); k += 15; } } break; } case '5': { // edit_time = 1; s10 = inputString[1] & 0x0f; s1 = inputString[2] & 0x0f; m10 = inputString[3] & 0x0f; m1 = inputString[4] & 0x0f; h10 = inputString[5] & 0x0f; h1 = inputString[6] & 0x0f; dw = (inputString[7] & 0x0f) + 1 ; d10 = inputString[8] & 0x0f; d1 = inputString[9] & 0x0f; mo10 = inputString[10] & 0x0f; mo1 = inputString[11] & 0x0f; ye10 = inputString[14] & 0x0f; ye1 = inputString[15] & 0x0f; set_time = 1; break; } default: { break; } } if (!multiscreen) for (il = 313; il > 0; il--) inputString[il] = 0;
рдкреА 2 рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓рд░ рдмрдЯрди рдкреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдП рднреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд╛рд╡рд░ рд╕реЗрд╡рд┐рдВрдЧ рдореЛрдб рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреА 2 рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмрдЯрди рдХреЗ рд▓рд┐рдП, рдПрдХ "рд▓реЙрдиреНрдЧ" рдкреНрд░реЗрд╕ рдЯреЗрд╕реНрдЯ рдЪрдХреНрд░ рд╣реИред
WDT + рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓рд░ рдмреАрдЯреА рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдЖрд░рдЯреАрд╕реА рд╕реЗ рд╕рдордп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рджреЗрддрд╛ рд╣реИ, рдПрдбреАрд╕реА рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рджреЗрддрд╛ рд╣реИред
ADC10 рдЗрдВрдЯрд░рдкреНрдЯ рд╣реИрдВрдбрд▓рд░ рдмреИрдЯрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рджреЗрддрд╛ рд╣реИред рд░реВрдкрд╛рдВрддрд░рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж ADC10 рдХреЛ рдмрд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдлреНрд▓реИрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
// FLASH char *Flash_ptrC; Flash_ptrC = (char *) 0x1040; // Point to beginning of seg C FCTL2 = FWKEY + FSSEL_1 + FN1; // MCLK/3 for Flash Timing Generator FCTL1 = FWKEY + ERASE; // Set Erase bit FCTL3 = FWKEY ; // Clear LOCK *Flash_ptrC = 0x00; // Dummy write to erase Flash seg C FCTL1 = FWKEY + WRT; // Set WRT bit for write operation Flash_ptrC = (char *) 0x1040; // Point to beginning *Flash_ptrC++ = s10; // 0x1040 *Flash_ptrC++ = s1; // 0x1041 *Flash_ptrC++ = m10; // 0x1042 *Flash_ptrC++ = m1; // 0x1043 *Flash_ptrC++ = h10; // 0x1044 *Flash_ptrC++ = h1; // 0x1045 *Flash_ptrC++ = dw; // 0x1046 *Flash_ptrC++ = d10; // 0x1047 *Flash_ptrC++ = d1; // 0x1048 *Flash_ptrC++ = mo10; // 0x1049 *Flash_ptrC++ = mo1; // 0x104a *Flash_ptrC++ = ye10; // 0x104b *Flash_ptrC++ = ye1; // 0x104c *Flash_ptrC++ = contrast; // 0x104d *Flash_ptrC++ = (pwm_width & 0xff00) >> 8; // 0x104e *Flash_ptrC++ = (timer_off & 0xff00) >> 8; // 0x104f *Flash_ptrC++ = (timer_off & 0x00ff); // 0x1050 FCTL1 = FWKEY; // Clear WRT bit FCTL3 = FWKEY + LOCK; // Set LOCK // FLASH char *a; a = (char*) 0x1040; s10 = *a++; s1 = *a++; m10 = *a++; m1 = *a++; h10 = *a++; h1 = *a++; dw = *a++; d10 = *a++; d1 = *a++; mo10 = *a++; mo1 = *a++; ye10 = *a++; ye1 = *a++; contrast = *a++; pwm_width = 0x00ff | (*a++) << 8; timer_off = ((*a++) & 0x00ff) << 8; timer_off |= ((*a++) & 0x00ff);
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕реВрддреНрд░ рдпрд╣рд╛рдВ
рдФрд░ рдмреНрд░рд╛рдВрдб рдирдП рдорд╛рдорд▓реЗ рдХреА рдПрдХ рдФрд░ рддрд╕реНрд╡реАрд░:
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдореИрдВ рд╕рд╡рд╛рд▓реЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реВрдВред
рднрд╛рдЧ 1 - рд╢реБрд░реВ рдХрд░рдирд╛
рднрд╛рдЧ 2 - рдмреЛрд░реНрдб рдФрд░ рдШрдЯрдХ