Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

CVAVR порча переменных

Непрочитано 02.04.2017, 12:44  
Aselicon
Прохожий
 
Регистрация: 01.09.2011
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Aselicon на пути к лучшему
По умолчанию CVAVR порча переменных

добрый день! пишу проект в cvavr. Проблем вагончик, во первых, если не отключить в настройках компилятора Automatic Global Register Allocation, то значения некоторых переменных при одном из переходов становятся = 0. Если отключить, то на первый взгляд, все ок, однако при ближайшем рассмотрении можно заметить следующее: при смене последовательности объявления глобальных переменных, изменяются значения оных на 0.
получается Automatic Global Register Allocation просто смешает часть переменных в другую область памяти, а новые переменные, которые попадают в "битые ячейки" снова тупят. К слову, пробовал volatile, изменения настроек компилятора, более старую версию, ничего не помогает.
Уже были мысли пересесть наконец на atmelStudio, вроде как и повод есть, но телега получилась большая, перетаскивать не хочется, переходить, так с нового проекта уже.
Свой быдлокод пока не выкладываю, особо ничего интересного.
Помогите чем сможете

и да, отладка в железе, контроллер Atmega168pa
Реклама:

Последний раз редактировалось Aselicon; 02.04.2017 в 12:47.
Aselicon вне форума  
Непрочитано 02.04.2017, 12:56  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,394
Сказал спасибо: 85
Сказали Спасибо 672 раз(а) в 392 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: CVAVR порча переменных

Сообщение от Aselicon Посмотреть сообщение
Свой быдлокод пока не выкладываю, особо ничего интересного.
Ну а без этого никто ничем не поможет, т.к. нет никакой информации.
pambaru на форуме  
Непрочитано 02.04.2017, 13:40  
Aselicon
Прохожий
 
Регистрация: 01.09.2011
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Aselicon на пути к лучшему
По умолчанию Re: CVAVR порча переменных

код
Нажмите, чтобы открыть спойлер
Код:
/**************************************************  *****
This program was created by the
CodeWizardAVR V3.12 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : Invertor
Version : 0.1
Date    : 22.02.2017
Author  : 
Company : 
Comments: 


Chip type               : ATmega168PA
Program type            : Application
AVR Core Clock frequency: 4,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
**************************************************  *****/

#include ‹mega168a.h›
#include ‹string.h›
#include ‹alcd.h›
#include ‹stdio.h›

 
 unsigned char button;        //счетчик антидребезг
 unsigned char pressedKey; //вспомогательная переменная для работы с кнопками
 unsigned int comp;                //вспомогательная переменная для работы с кнопками
 unsigned char b;                  //
 unsigned char beep_180;            //
 unsigned char beep_rad;           //пищалка
 unsigned char ind;
 unsigned char state; 
 unsigned char expert_state;        //перемещение по экранам
 unsigned char avto_180;            //
 unsigned char avto_rad;            //
 unsigned char cycle;                //режим работы, текущий цикл
 unsigned char way;                  //направление вращения
 unsigned char res;                  //сброс на главный экран через 15сек
 unsigned char brake;               //задержка для запуска
 unsigned char sim;                 //символ паузы
 unsigned int freq;                 //
 unsigned int auto_freq_180;         //частота для загрузки в частотник
 unsigned int af_180;
 unsigned int avto_f_180;           //авто частота для 180 
 unsigned int freq_180;            //частота 180
 unsigned char temp_pcb;             //температура платы
 unsigned char tx_narast;           //время нарастания
 unsigned char tx_brake;            //время торможения
 unsigned char tx_current;          //токовая защита   
 unsigned char buffer[16];     //буффер для вывода на дисплей
 unsigned char tic;           //вспомогательная переменная для работы с секундами
 unsigned char tip;           //тип программы (180/радиалка)
 unsigned char version_chast; //версия частотного преобразователя содержится в виде десятков (1,2 = 12)
 unsigned int sec;            // секунды        
 unsigned int tic1;            // секунды  
         bit zapusk;               //первый запуск
         bit ok;                   //связь с частотником  
         bit bl;                   //мигание
         bit start;                //стартбит
         bit error;                //ошибка
         bit r;                    //разрешение индикации 
         bit revers_180;           //
         bit rev_180,rev_rad;      //реверсбит
         bit pause;                //пауза
         bit rev_a_r_180;          //автоматический реверс  
         bit q;                    //разрешение на отправку запроса температуры  
         bit expert;               //разрешение входа в экспертные опции
         

unsigned int time_180;
unsigned int avto_t_180;      //переменные для 180
unsigned int time2_180;
unsigned int freq2_180;
unsigned int time3_180;
unsigned int freq3_180; 
       
 
unsigned int time_rad;           //переменные для радиалки
unsigned int time0_rad;
unsigned int time1_rad;
unsigned int time2_rad;
unsigned int time3_rad;
unsigned int time4_rad;
unsigned int time5_rad;
unsigned int freq0_rad;
unsigned int freq1_rad;
unsigned int freq2_rad;
unsigned int freq3_rad;
unsigned int freq4_rad;
unsigned int freq5_rad;

eeprom unsigned int  eep_time0_rad; 
eeprom unsigned int  eep_time1_rad; 
eeprom unsigned int  eep_time2_rad; 
eeprom unsigned int  eep_time3_rad; 
eeprom unsigned int  eep_time4_rad;
eeprom unsigned int  eep_time5_rad;

eeprom unsigned int  eep_freq0_rad;
eeprom unsigned int  eep_freq1_rad;
eeprom unsigned int  eep_freq2_rad;
eeprom unsigned int  eep_freq3_rad;
eeprom unsigned int  eep_freq4_rad;
eeprom unsigned int  eep_freq5_rad;

eeprom unsigned char eep1_avto_rad; 
eeprom unsigned char eep2_avto_rad; 

eeprom unsigned char eep_rev_rad ;

eeprom unsigned char eep_beep_rad ;
//
eeprom unsigned int  eep1_time_180 ;
eeprom unsigned int  eep2_time_180 ;
eeprom unsigned int  eep1_freq_180 ;
eeprom unsigned int  eep2_freq_180 ;

eeprom unsigned int  eep_freq2_180;
eeprom unsigned int  eep_freq3_180;
eeprom unsigned int  eep_time2_180;
eeprom unsigned int  eep_time3_180;

eeprom unsigned char eep1_avto_180 ;
eeprom unsigned char eep2_avto_180 ;

eeprom unsigned char eep1_beep_180 ;
eeprom unsigned char eep2_beep_180 ;

eeprom unsigned int eep_avto_t_180 ;
eeprom unsigned int eep_avto_f_180 ;

eeprom unsigned char eep_rev_a_r_180;
eeprom unsigned char eep_tip;

eeprom unsigned char eep_tx_narast;
eeprom unsigned char eep_tx_brake;
eeprom unsigned char eep_tx_current;

       unsigned char eep_error;



#define VERSION_PU lcd_putsf("ЁЇMav0.1");  //текущая версия пульта     

#define but_star PIND.2      
#define but_stop PINB.4      
#define but_paus PINB.5      
#define but_decr PINC.2      
#define but_sett PINC.1      
#define but_incr PINC.0     
//#define heater_stenka    PORTD.3
//#define heater_dno       PORTD.4
#define beep_out         PORTC.3      //Buzzer


#define   decr  1
#define   sett  2
#define   incr  3
#define   star  4
#define   stop  5
#define   paus  6
#define   korr  7
#define   long_stop  8
#define   long_sett  9
#define   null  0

#define home ind=2; state=1;

#define THRESHOLD 2
#define THRESHOLD_LONG_PRESS 40
#define THRESHOLD_LONG_LONG_PRESS 60
#define THRESHOLD2 8
#define THRESHOLD_GO 5 



#define DATA_REGISTER_EMPTY (1‹‹UDRE0)
#define RX_COMPLETE (1‹‹RXC0)
#define FRAMING_ERROR (1‹‹FE0)
#define PARITY_ERROR (1‹‹UPE0)
#define DATA_OVERRUN (1‹‹DOR0)


typedef unsigned char byte; 
/* table for the user defined character 
arrow that points to the top right corner */ 
flash byte char0[8]={0x08, 0x09, 0x0A, 0x04, 0x08, 0x17, 0x07, 0x05}; 
flash byte char1[8]={0x08, 0x09, 0x0A, 0x04, 0x08, 0x17, 0x07, 0x05};
flash byte char2[8]={0x08, 0x0C, 0x0E, 0x1F, 0x0E, 0x0C, 0x08, 0x00};
flash byte char3[8]={0x02, 0x06, 0x0E, 0x1F, 0x0E, 0x06, 0x02, 0x00};
flash byte char4[8]={0x00, 0x00, 0x0A, 0x00, 0x00, 0x0E, 0x11, 0x00};
flash byte char5[8]={0x00, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00}; //pause
flash byte char6[8]={0x00, 0x08, 0x0C, 0x0E, 0x0C, 0x08, 0x00, 0x00}; //play
flash byte char7[8]={0x08, 0x14, 0x08, 0x02, 0x05, 0x04, 0x05, 0x02};
/* function used to define user characters */ 

void define_char(byte flash *pc,byte char_code) 
{ 
byte i,a; 
a=(char_code‹‹3) | 0x40; 
for (i=0; i‹8; i++) lcd_write_byte(a++,*pc++); 
}

void eeptoflash(void)                            //Функция переноса данных из ЕЕР в рабочее пространство
  { 
   if ((eep1_time_180›=5)&&(eep1_time_180‹=995)&&(eep1_time_180==eep2_time_180)&&(eep1_freq_180›=1)&&(eep1_freq_180‹=60)&&(eep1_avto_rad‹=10)) {} 
     else {eep_error=1;}   
        
  if (eep_error==0)
    { avto_t_180=eep_avto_t_180;
      avto_f_180=eep_avto_f_180;
      time_180=eep1_time_180;                      
      freq_180=eep1_freq_180; 
      
      time2_180=eep_time2_180;                      
      freq2_180=eep_freq2_180;
      time3_180=eep_time3_180;                      
      freq3_180=eep_freq3_180;
                           
      avto_180=eep1_avto_180;
      rev_a_r_180=eep_rev_a_r_180;                      
      beep_180=eep1_beep_180; 
      
      time0_rad=eep_time0_rad;  
      time1_rad=eep_time1_rad;
      time2_rad=eep_time2_rad;
      time3_rad=eep_time3_rad;
      time4_rad=eep_time4_rad; 
      time5_rad=eep_time5_rad; 
      
      freq0_rad=eep_freq0_rad;            
      freq1_rad=eep_freq1_rad;
      freq2_rad=eep_freq2_rad;
      freq3_rad=eep_freq3_rad;
      freq4_rad=eep_freq4_rad;
      freq5_rad=eep_freq5_rad;
      tip=eep_tip;                      
      avto_rad=eep1_avto_rad;
      rev_rad=eep_rev_rad;          
      beep_rad=eep_beep_rad;
      
      tx_narast=eep_tx_narast;
      tx_brake=eep_tx_brake;
      tx_current=eep_tx_current; 
    }      
   else
    {#asm("cli")
     eep1_time_180=25;
     eep2_time_180=25;
     eep1_freq_180=40;
     eep2_freq_180=40;
     eep1_avto_180=1;
     eep2_avto_180=1;
     eep_rev_a_r_180=0;
     eep_avto_t_180=5;
     eep_avto_f_180=20;
     
     eep_time2_180=5;
     eep_freq2_180=20;
     eep_time3_180=5;
     eep_freq3_180=20;
     
     eep1_beep_180=3;
     eep2_beep_180=3;
     
     
     eep_time0_rad=100;
     eep_time1_rad=25;  
     eep_time2_rad=25;
     eep_time3_rad=25;
     eep_time4_rad=25;     
     eep_time5_rad=25;
     
     eep_freq0_rad=50;
     eep_freq1_rad=16;   
     eep_freq2_rad=24;
     eep_freq3_rad=28;
     eep_freq4_rad=32;
     eep_freq5_rad=46;
     
     eep1_avto_rad=0;
     eep2_avto_rad=0; 
     
     eep_rev_rad=0;

     eep_beep_rad=3;
     eep_tip=0;  
     
     eep_tx_narast=10;
     eep_tx_brake=6;
     eep_tx_current=50; 
     
     #asm("sei")
      
      avto_t_180=eep_avto_t_180;
      avto_f_180=eep_avto_f_180; 
      
      time2_180=eep_time2_180;                      
      freq2_180=eep_freq2_180;
      time3_180=eep_time3_180;                      
      freq3_180=eep_freq3_180;
      
      time_180=eep1_time_180;                      
      freq_180=eep1_freq_180;                      
      avto_180=eep1_avto_180;
      rev_a_r_180=eep_rev_a_r_180;                      
      beep_180=eep1_beep_180;  
                               
      
      time0_rad=eep_time0_rad;
      time1_rad=eep_time1_rad;
      time2_rad=eep_time2_rad;
      time3_rad=eep_time3_rad;
      time4_rad=eep_time4_rad;
      time5_rad=eep_time5_rad;
               
      freq0_rad=eep_freq0_rad;  
      freq1_rad=eep_freq1_rad;  
      freq2_rad=eep_freq2_rad;  
      freq3_rad=eep_freq3_rad;  
      freq4_rad=eep_freq4_rad;  
      freq5_rad=eep_freq5_rad;  
      rev_rad=eep_rev_rad;
      avto_rad=eep1_avto_rad;
      beep_rad=eep_beep_rad; 
      tip=eep_tip; 
      
     tx_narast=eep_tx_narast;
     tx_brake=eep_tx_brake;
     tx_current=eep_tx_current;
     }  
                
   }
   
//-------------------------------------------------------------------------------------------------------------- 
 void flashtoeep(void)                       //Функция переноса данных из рабочего пространства в EEP
   {  
   #asm("cli")
     eep1_time_180=time_180;
     eep2_time_180=time_180;
     eep1_freq_180=freq_180;
     eep2_freq_180=freq_180;
     eep1_avto_180=avto_180;
     eep2_avto_180=avto_180;
     eep_rev_a_r_180=rev_a_r_180; 
     eep_avto_t_180=avto_t_180;
     eep_avto_f_180=avto_f_180;   
     
     eep_time2_180=time2_180;
     eep_freq2_180=freq2_180;
     eep_time3_180=time3_180;
     eep_freq3_180=freq3_180;
     
     eep1_beep_180=beep_180;
     eep2_beep_180=beep_180;  
     
     
     eep_time0_rad=time0_rad;
     eep_time1_rad=time1_rad;  
     eep_time2_rad=time2_rad;
     eep_time3_rad=time3_rad;
     eep_time4_rad=time4_rad;
     eep_time5_rad=time5_rad;
     
     eep_freq0_rad=freq0_rad;
     eep_freq1_rad=freq1_rad;   
     eep_freq2_rad=freq2_rad;
     eep_freq3_rad=freq3_rad;
     eep_freq4_rad=freq4_rad;
     eep_freq5_rad=freq5_rad;
     
     eep1_avto_rad=avto_rad;
     eep2_avto_rad=avto_rad; 
     
     eep_rev_rad=rev_rad;  
     eep_beep_rad=beep_rad; 
     
   #asm("sei")  
   }  


// USART Receiver buffer
#define RX_BUFFER_SIZE0 8
char rx_buffer0[RX_BUFFER_SIZE0];

#if RX_BUFFER_SIZE0 ‹= 256
unsigned char rx_wr_index0=0,rx_rd_index0=0;
#else
unsigned int rx_wr_index0=0,rx_rd_index0=0;
#endif

#if RX_BUFFER_SIZE0 ‹ 256
unsigned char rx_counter0=0;
#else
unsigned int rx_counter0=0;
#endif

// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow0;

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSR0A;
data=UDR0;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
   rx_buffer0[rx_wr_index0++]=data;
#if RX_BUFFER_SIZE0 == 256
   // special case for receiver buffer size=256
   if (++rx_counter0 == 0) rx_buffer_overflow0=1;
#else
   if (rx_wr_index0 == RX_BUFFER_SIZE0) rx_wr_index0=0;
   if (++rx_counter0 == RX_BUFFER_SIZE0)
      {
      rx_counter0=0;
      rx_buffer_overflow0=1;
      }
#endif
   }
}

#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter0==0);
data=rx_buffer0[rx_rd_index0++];
#if RX_BUFFER_SIZE0 != 256
if (rx_rd_index0 == RX_BUFFER_SIZE0) rx_rd_index0=0;
#endif
#asm("cli")
--rx_counter0;
#asm("sei")
return data;
}
#pragma used-
#endif

// USART Transmitter buffer
#define TX_BUFFER_SIZE0 8
char tx_buffer0[TX_BUFFER_SIZE0];

#if TX_BUFFER_SIZE0 ‹= 256
unsigned char tx_wr_index0=0,tx_rd_index0=0;
#else
unsigned int tx_wr_index0=0,tx_rd_index0=0;
#endif

#if TX_BUFFER_SIZE0 ‹ 256
unsigned char tx_counter0=0;
#else
unsigned int tx_counter0=0;
#endif

// USART Transmitter interrupt service routine
interrupt [USART_TXC] void usart_tx_isr(void)
{
if (tx_counter0)
   {
   --tx_counter0;
   UDR0=tx_buffer0[tx_rd_index0++];
#if TX_BUFFER_SIZE0 != 256
   if (tx_rd_index0 == TX_BUFFER_SIZE0) tx_rd_index0=0;
#endif
   }
}

#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter0 == TX_BUFFER_SIZE0);
#asm("cli")
if (tx_counter0 || ((UCSR0A & DATA_REGISTER_EMPTY)==0))
   {
   tx_buffer0[tx_wr_index0++]=c;
#if TX_BUFFER_SIZE0 != 256
   if (tx_wr_index0 == TX_BUFFER_SIZE0) tx_wr_index0=0;
#endif
   ++tx_counter0;
   }
else
   UDR0=c;
#asm("sei")
}
#pragma used-
#endif

 void ZAPUSK1 (void)
 {
  switch (state) {
  case 0:
    {
    putchar(0xFA);
    if(getchar()==0xFE) {
     version_chast=getchar();}


    if (sec‹2) {lcd_gotoxy(0,0); lcd_putsf("  Ёpoј          ");
                if (button==star) {state=90;}} //  
                
       else {    if ((version_chast‹100)&&(version_chast›=1)){ok=1; lcd_gotoxy(0,0); VERSION_PU sprintf(buffer,"   bv%1d.%1d",(version_chast/10),(version_chast%10)); lcd_gotoxy(0,1);lcd_puts(buffer);} 
                   else {lcd_gotoxy(0,0); lcd_putsf("  Heї    cіЗ·ё! ");}
            }                                                             
            
    
    if ((sec›=2)&&(ok)) {ind=2; zapusk=1;state=1;}  
    if (button==stop) {ok=1;}
    break; 
    }  
       
  case 90:                                       //SET тип прошивки
    { 
    if(button==decr) {res=0; if (tip›0) {tip--;}}       //tip=0 -- 180
    if(button==sett) {res=0; }                          //tip=1 -- радиал
    if(button==incr) {res=0; if (tip‹1) {tip++;}}
    if(button==stop) {eep_tip=tip; state=0; sec=2;} 
    if (tip==0) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  180     ");}   //180 
    if (tip==1) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  Paгёa»  ");}   // Радиал 
    break;    
    } 
    }  
 }   
 

void FUNC_180 (void)
{
switch (state) {

  case 1:                                      //MAIN
    {
    if ((start)&&(avto_180==2))
     {if (cycle==0){
      if(button==decr) {if ((avto_f_180›16)) {avto_f_180--;}}
      if(button==incr) {if ((avto_f_180‹60)) {avto_f_180++;}} }
      
      if (cycle==1){
      if(button==decr) {if ((freq2_180›16)) {freq2_180--;}}
      if(button==incr) {if ((freq2_180‹60)) {freq2_180++;}} }
      
      if (cycle==2){
      if(button==decr) {if ((freq3_180›16)) {freq3_180--;}}
      if(button==incr) {if ((freq3_180‹60)) {freq3_180++;}} }
      
      if(button==stop) {start=0; cycle=0; rev_180=0; revers_180=0; putchar(0xA0);putchar(0x00);}
     }   
     
    else { 
    if(button==decr) {if ((freq_180›16)&&(start)&&(avto_180!=2)) {freq_180--;}}
    if(button==incr) {if ((freq_180‹60)&&(start)&&(avto_180!=2)) {freq_180++;}}}
    if(button==sett) {if (start==0) {ind=3; state=2;}} 
    if(button==star) {if (start==0) {way=1;start=1;sec=0;}}
    if(button==stop) {start=0; cycle=0; rev_180=0; revers_180=0; putchar(0xA0);putchar(0x00);}
    if(button==paus) {if (start==0) {way=2;start=1;sec=0;}}    
    break; 
    } 
     
  case 2:                                       //SET AVTO
    { 
    if(button==decr) {res=0; if (avto_180›1) {avto_180--;}}  
    if(button==sett) {res=0; if ((avto_180==0)||(avto_180==3)) { ind=4; state=3;} if (avto_180==2) {ind=41; state=41;} if (avto_180==1) {ind=4; state=3;}}  
    if(button==incr) {res=0; if (avto_180‹3) {avto_180++;}}
    if(button==stop) {flashtoeep(); home}
    break;    
    }   
  case 3:                                       //SET TIME
    { 
    if(button==decr) {res=0; if (time_180›10) {time_180-=5;}}
    if(button==sett) {res=0; ind=5; state=4;}
    if(button==incr) {res=0; if (time_180‹=990){time_180+=5;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 4:                                       //SET SPEED
    { 
    if(button==decr) {res=0; if (freq_180›16) {freq_180--;}}
    if(button==sett) {res=0; if (avto_180==3) {ind=7; state=6;} else {ind=6; state=5;}}
    if(button==incr) {res=0; if (freq_180‹60){freq_180++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }  
    

  case 41:                                       //SET AVTO3 time
    { 
    if(button==decr) {res=0; if (avto_t_180›5) {avto_t_180-=5;}}  
    if(button==sett) {res=0;  ind=42; state=42;}  
    if(button==incr) {res=0; if (avto_t_180‹990) {avto_t_180+=5;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 42:                                       //SET AVTO3 freq
    { 
    if(button==decr) {res=0; if (avto_f_180›16) {avto_f_180--;}}  
    if(button==sett) {res=0; ind=43; state=43;}  
    if(button==incr) {res=0; if (avto_f_180‹60) {avto_f_180++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }    
    
  case 43:                                       //SET time 2
    { 
    if(button==decr) {res=0; if (time2_180›5) {time2_180-=5;}}  
    if(button==sett) {res=0;  ind=44; state=44;}  
    if(button==incr) {res=0; if (time2_180‹990) {time2_180+=5;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 44:                                       //SET  freq 3
    { 
    if(button==decr) {res=0; if (freq2_180›16) {freq2_180--;}}  
    if(button==sett) {res=0; ind=45; state=45;}  
    if(button==incr) {res=0; if (freq2_180‹60) {freq2_180++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }  
   
  case 45:                                       //SET AVTO3 time
    { 
    if(button==decr) {res=0; if (time3_180›5) {time3_180-=5;}}  
    if(button==sett) {res=0;  ind=46; state=46;}  
    if(button==incr) {res=0; if (time3_180‹990) {time3_180+=5;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 46:                                       //SET AVTO3 freq
    { 
    if(button==decr) {res=0; if (freq3_180›16) {freq3_180--;}}  
    if(button==sett) {res=0; ind=6; state=5;}  
    if(button==incr) {res=0; if (freq3_180‹60) {freq3_180++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }  
    
  case 5:                                       //SET rev
    { 
    if(button==decr) {res=0; if (rev_a_r_180›0) {rev_a_r_180--;}}  
    if(button==sett) {res=0; ind=7; state=6;}  
    if(button==incr) {res=0; if (rev_a_r_180‹1) {rev_a_r_180++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }   
    
  case 6:                                       //SET BUZZER
    { 
    if(button==decr) {res=0; if (beep_180›0) {beep_180--;}}
    if((button==sett)||(button==stop)) {res=0; flashtoeep(); home}
    if(button==incr) {res=0; if (beep_180‹9) {beep_180++;}}
   // if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 10:                                     //PROTECT
    { 

    if(button==stop) {putchar(0xA0);putchar(0x00);home}
    break; 
    } 

    }
}

void INDICATION_180 (void)
{
switch (ind) {
          
   
    case 2:
    {
    //if (error) {lcd_gotoxy(0,0); lcd_putsf("*O¬Ґ*KA*");
    //           sprintf(buffer,"   %2x   ",error); lcd_gotoxy(0,1);lcd_puts(buffer);}
    // else{
     if (revers_180) {
                  if (rev_a_r_180==0)
                                 {
                                  lcd_gotoxy(0,0); 
                                  lcd_putsf("Peіepc");
                                  if (bl){lcd_gotoxy(6,0);lcd_putchar(0x02);lcd_putchar  (0x03); }
                                    else {lcd_gotoxy(6,0); lcd_puts("  ");}
                                  if ((cycle==0)&&(avto_180==2)) {sprintf(buffer,"     %2dc",20-brake);}
                                                        else {sprintf(buffer,"     %2dc",20-brake);}
                                  lcd_gotoxy(0,1);
                                  lcd_puts(buffer);
                                 }    
                            else 
                                 {
                                  lcd_gotoxy(0,0); 
                                  lcd_putsf("Peіepc  O¶ёгaЅёe");
                                 }      
                  }     
           else {       
      if (start) {//Верхняя строка 
                  if (avto_180==0) {lcd_gotoxy(0,0); lcd_putsf("PA*OTA");}
                  if (avto_180==1) 
                     {
                      if (rev_180) {lcd_gotoxy(0,0); lcd_putsf("бёє» 2/2");}
                          else {lcd_gotoxy(0,0); lcd_putsf("бёє» 1/2");}  
                     }
                  if (avto_180==2) 
                    {
                     if (cycle==0) {
                                    lcd_gotoxy(0,0); lcd_putsf("бёє» 1/3"); 
                                    if (sec‹=(avto_t_180*3)) {auto_freq_180=(((avto_f_180-10)*sec)/(avto_t_180*3))+10;}
                                                    else {auto_freq_180=avto_f_180;}      
                                   } 
                                     
                     if (cycle==1) {
                                    lcd_gotoxy(0,0); lcd_putsf("бёє» 2/3");  
                                    auto_freq_180=freq2_180;
                                   }
                                   
                     if (cycle==2) {
                                    lcd_gotoxy(0,0); lcd_putsf("бёє» 3/3");
                                    auto_freq_180=freq3_180; 
                         
                                   }
                    }
                  if (avto_180==3) {lcd_gotoxy(0,0); lcd_putsf("PA*OTA"); auto_freq_180=(((freq_180-10)*sec)/(time_180*6))+10;} 


                  //Нижняя строка             
                  if ((bl)&&((avto_180==0)||(avto_180==3)))
                  {
                  if ((way==1)&&((avto_180==0)||(avto_180==3))) {lcd_gotoxy(6,0);lcd_putchar(0x03);lcd_putchar(0x2  D);} 
                  if ((way==2)&&((avto_180==0)||(avto_180==3))) {lcd_gotoxy(6,0);lcd_putchar(0x2D);lcd_putchar(0x0  2);}
                  }
                  if ((!bl)&&((avto_180==0)||(avto_180==3))) {lcd_gotoxy(6,0); lcd_puts("  ");}

                  
                  if (avto_180==2){if(cycle==0) sprintf(buffer, "%3d",(unsigned int)avto_f_180*5); 
                               if(cycle==1) sprintf(buffer, "%3d",(unsigned int)freq2_180*5);
                               if(cycle==2) sprintf(buffer, "%3d",(unsigned int)freq3_180*5);}
                                      else {sprintf(buffer, "%3d",(unsigned int)freq_180*5); }
                  lcd_gotoxy(0,1);                                               
                  lcd_puts(buffer);
                  lcd_gotoxy(3,1);
                  lcd_putchar(0x01);
                  
                  //времени
                 if ((cycle==0)&&(avto_180==2)) {sprintf(buffer," %2dc",((avto_t_180*6)-sec)); lcd_gotoxy(4,1);lcd_puts(buffer);} //30-sec
                
                 if ((cycle==2)&&(avto_180==2)) {if ((time3_180*6)-sec›=90) {sprintf(buffer," %2d",(((time3_180*6)-sec)/60)+1); lcd_gotoxy(4,1);lcd_puts(buffer);lcd_putchar(0xBC)  ;}
                                 else   {sprintf(buffer," %2dc",(time3_180*6)-sec); lcd_gotoxy(4,1);lcd_puts(buffer);}}
                                 
                 if ((cycle==1)&&(avto_180==2)){
                   if ((time2_180*6)-sec›=90) {sprintf(buffer," %2d",(((time2_180*6)-sec)/60)+1); lcd_gotoxy(4,1);lcd_puts(buffer);lcd_putchar(0xBC)  ;}
                                 else   {sprintf(buffer," %2dc",(time2_180*6)-sec); lcd_gotoxy(4,1);lcd_puts(buffer);}}  
                                 
                 if ((avto_180==1)||(avto_180==3)) {if ((time_180*6)-sec›=90) {sprintf(buffer," %2d",(((time_180*6)-sec)/60)+1); lcd_gotoxy(4,1);lcd_puts(buffer);lcd_putchar(0xBC)  ;}
                                 else   {sprintf(buffer," %2dc",(time_180*6)-sec); lcd_gotoxy(4,1);lcd_puts(buffer);}}               
                  
                    } //Работа
                        
       else     {lcd_gotoxy(0,0); lcd_putsf("Cїoѕ  ");
                  if (way==0) {lcd_gotoxy(6,0);lcd_putchar(0x03);lcd_putchar(0x0  2);} 
                  if (way==1) {lcd_gotoxy(6,0);lcd_putchar(0x03);lcd_putchar(0x2  D);} 
                  if (way==2) {lcd_gotoxy(6,0);lcd_putchar(0x2D);lcd_putchar(0x0  2);} 
                    
                  if (avto_180==0) {lcd_gotoxy(0,1); lcd_puts("PyАЅo№  ");}   // Ручной                  
                  if (avto_180==1) {lcd_gotoxy(0,1); lcd_puts("2 бёє»a ");}   // Автомат2
                  if (avto_180==2) {lcd_gotoxy(0,1); lcd_puts("3 бёє»a ");}   // Автомат3
                  if (avto_180==3) {lcd_gotoxy(0,1); lcd_puts("Paгёa»  ");}   // Радиал

                  }    
     }  
    break; 
    }
    
    case 3:
    {
    if (avto_180==0) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  PyАЅo№  ");}  //Автомат
    if (avto_180==1) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  2 бёє»a ");}  //2 Цикла 
    if (avto_180==2) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  3 бёє»a ");}  //3 Цикла 
    if (avto_180==3) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  Paгёa»  ");}   // Радиал 
    break; 
    }      
    
    case 4:
    { 
    lcd_gotoxy(0,0); lcd_puts("BpeјЗ   ");            //Время
    sprintf(buffer, " %2d.",time_180/10); lcd_gotoxy(0,1);lcd_puts(buffer);
    sprintf(buffer, "%1dјёЅ",time_180%10);  lcd_gotoxy(4,1);lcd_puts(buffer); 
    break; 
    } 
    
    case 5:
    { 
    lcd_gotoxy(0,0); lcd_puts("CєopocїД");          //Скорость
    sprintf(buffer,"    %3d  ",freq_180*5);
                  lcd_gotoxy(0,1);
                  lcd_puts(buffer);
                  lcd_gotoxy(7,1);
                  lcd_putchar(0x01);
    break; 
    }
    
  

    case 42:
    { 
    sprintf(buffer,"CєopocїД1е  %3d%c ",avto_f_180*5,0x01);
    lcd_gotoxy(0,0);lcd_puts(buffer);             
    break; 
    } 
    
    case 41:
    { 
    sprintf(buffer,"BpeјЗ   1е %2d.%1dј",avto_t_180/10,avto_t_180%10);
    lcd_gotoxy(0,0);lcd_puts(buffer);             
    break; 
    }  
    
    case 44:
    { 
    sprintf(buffer,"CєopocїД2е  %3d%c ",freq2_180*5,0x01);
    lcd_gotoxy(0,0);lcd_puts(buffer);             
    break; 
    } 
    
    case 43:
    { 
    sprintf(buffer,"BpeјЗ   2е %2d.%1dј",time2_180/10,time2_180%10);
    lcd_gotoxy(0,0);lcd_puts(buffer);             
    break; 
    } 
    
    case 46:
    { 
    sprintf(buffer,"CєopocїД3е  %3d%c ",freq3_180*5,0x01);
    lcd_gotoxy(0,0);lcd_puts(buffer);             
    break; 
    } 
    
    case 45:
    { 
    sprintf(buffer,"BpeјЗ   3е %2d.%1dј",time3_180/10,time3_180%10);
    lcd_gotoxy(0,0);lcd_puts(buffer);             
    break; 
    } 
    
    case 6:
    {
    if (rev_a_r_180==0) {lcd_gotoxy(0,0); lcd_puts("Peіepc: Aіїoјaї ");}  //Реверсирование
    if (rev_a_r_180==1) {lcd_gotoxy(0,0); lcd_puts("Peіepc: PyАЅo№  ");} 

    break; 
    }
    
    case 7:
    { 
    lcd_gotoxy(0,0); lcd_puts("CёґЅa»  ");          //Сигнал 
    sprintf(buffer, "       %1d ",beep_180); lcd_gotoxy(0,1);lcd_puts(buffer);
    break; 
    }

    case 10:
    { 
    if (error!=0) {lcd_gotoxy(0,0); lcd_putsf("*O¬Ґ*KA*");}
         else {lcd_gotoxy(6,1); lcd_putsf("OK");}       
    break; 
    }
    
    }; 
} 

void FUNC_RADIAL (void)
{
switch (state) {
          
    
  case 1:                                      //MAIN
    { 
    if(button==decr) {if ((freq1_rad›16)&&(start)&&(avto_rad==1)) {freq1_rad--;}}
    if(button==sett) {if (start==0) {ind=3; state=2;}}   
    if(button==incr) {if ((freq1_rad‹60)&&(start)&&(avto_rad==1)) {freq1_rad++;}}
    if(button==star) {if (start==0) {start=1;sec=0;}}
    if(button==stop) {ind=2; state=1;start=0; cycle=0; putchar(0xA0);putchar(0x00);}
    if(button==paus) {if (start==1) {pause++;} }    
    break; 
    } 
  
  case 2:                                       //SET AVTO
    { 
    if(button==decr) {res=0; if (avto_rad›0) {avto_rad--;}}  
    if(button==sett) {res=0; if (avto_rad==0) { state=3;  ind=4;}
                                     else { state=4;  ind=5;} }  
    if(button==incr) {res=0; if (avto_rad‹5) {avto_rad++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }     
        
  case 31:                                       //SET TIME0
    { 
    if(button==decr) {res=0; if (time0_rad›10) {time0_rad-=5;}}
    if(button==sett) {res=0; ind=13; state=12;}
    if(button==incr) {res=0; if (time0_rad‹=995){time0_rad+=5;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 3:                                       //SET SPEED0
    { 
    if(button==decr) {res=0; if (freq0_rad›16) {freq0_rad--;}}
    if(button==sett) {res=0; state=31;}
    if(button==incr) {res=0; if (freq0_rad‹60){freq0_rad++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }   
    
  case 41:                                       //SET TIME1
    { 
    if(button==decr) {res=0; if (time1_rad›5) {time1_rad-=5;}}
    if(button==sett) {res=0; if (avto_rad›=2) {state=5; ind=6;} else {ind=13; state=12;}}
    if(button==incr) {res=0; if (time1_rad‹=995){time1_rad+=5;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 4:                                       //SET SPEED1
    { 
    if(button==decr) {res=0; if (freq1_rad›16) {freq1_rad--;}}
    if(button==sett) {res=0;  state=41;}
    if(button==incr) {res=0; if (freq1_rad‹60){freq1_rad++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 51:                                       //SET TIME2
    { 
    if(button==decr) {res=0; if (time2_rad›5) {time2_rad-=5;}}
    if(button==sett) {res=0; if (avto_rad›=3) {state=6;ind=7;} else {ind=13; state=12;}}
    if(button==incr) {res=0; if (time2_rad‹=995){time2_rad+=5;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 5:                                       //SET SPEED2
    { 
    if(button==decr) {res=0; if (freq2_rad›16) {freq2_rad--;}}
    if(button==sett) {res=0; state=51;}
    if(button==incr) {res=0; if (freq2_rad‹60){freq2_rad++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }  
    
  case 61:                                       //SET TIME3
    { 
    if(button==decr) {res=0; if (time3_rad›5) {time3_rad-=5;}}
    if(button==sett) {res=0;if (avto_rad›=4) {state=7;ind=8;} else {ind=13; state=12;}}
    if(button==incr) {res=0; if (time3_rad‹=995){time3_rad+=5;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 6:                                       //SET SPEED3
    { 
    if(button==decr) {res=0; if (freq3_rad›16) {freq3_rad--;}}
    if(button==sett) {res=0;  state=61;}
    if(button==incr) {res=0; if (freq3_rad‹60){freq3_rad++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }   
    
  case 71:                                       //SET TIME4
    { 
    if(button==decr) {res=0; if (time4_rad›5) {time4_rad-=5;}}
    if(button==sett) {res=0;if (avto_rad›=5) {state=8;ind=9;} else {ind=13; state=12;}}
    if(button==incr) {res=0; if (time4_rad‹=995){time4_rad+=5;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 7:                                       //SET SPEED4
    { 
    if(button==decr) {res=0; if (freq4_rad›16) {freq4_rad--;}}
    if(button==sett) {res=0; state=71;} 
    if(button==incr) {res=0; if (freq4_rad‹60){freq4_rad++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }   
    
  case 81:                                       //SET TIME5
    { 
    if(button==decr) {res=0; if (time5_rad›5) {time5_rad-=5;}}
    if(button==sett) {res=0;if (avto_rad›=6) {state=12;ind=13;} else {ind=13; state=12;}}  //9 10
    if(button==incr) {res=0; if (time5_rad‹=995){time5_rad+=5;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    } 
    
  case 8:                                       //SET SPEED5
    { 
    if(button==decr) {res=0; if (freq5_rad›16) {freq5_rad--;}}
    if(button==sett) {res=0; state=81;} 
    if(button==incr) {res=0; if (freq5_rad‹60){freq5_rad++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }   
     
case 12:                                       //SET REVERS
    { 
    if(button==decr) {res=0; if (rev_rad›0) {rev_rad--;}}
    if(button==sett) {res=0; ind=14; state=13;}
    if(button==incr) {res=0; if (rev_rad‹1) {rev_rad++;}}
    if(button==stop) {flashtoeep(); home}
    break; 
    }    
    
  case 13:                                       //SET BUZZER
    { 
    if(button==decr) {res=0; if (beep_rad›0) {beep_rad--;}}
    if((button==sett)||(button==stop)) {res=0; flashtoeep(); home}
    if(button==incr) {res=0; if (beep_rad‹9) {beep_rad++;}}
    break; 
    } 
     
  case 123:                                     //PROTECT
    { 

    if(button==stop) {putchar(0xA0);putchar(0x00);home}
    break; 
    } 
   }
}

void INDICATION_RADIAL (void)
{
switch (ind) {
    case 0:       
      {     
                         sprintf(buffer,"ERROR0  s=%3d   ",sec);
                   lcd_gotoxy(0,0);lcd_puts(buffer);
      break;
      }
      
    case 2:
    {
    //if (error) {lcd_gotoxy(0,0); lcd_putsf("*O¬Ґ*KA*");
    //           sprintf(buffer,"   %2x   ",error); lcd_gotoxy(0,1);lcd_puts(buffer);}  91.1
    // else{
                                 //  sprintf(buffer,"бёє» %1d/%1d%c%3dј%2dc",cycle,avto,sim, (((time*6)-sec)/60),(((time*6)-sec)%60));
      if (start) {   if (avto_rad==1) {sprintf(buffer, "б01 %3d%c%c%3dј%2dc",freq1_rad*5,0x01,sim,(((time_rad*6)-sec)/60),(((time_rad*6)-sec)%60));}
                      else {
                     if (avto_rad) {sprintf(buffer,"бёє» %1d/%1d%c%3dј%2dc",cycle,avto_rad,sim, (((time_rad*6)-sec)/60),(((time_rad*6)-sec)%60));}
                        else {sprintf(buffer,"бёє» Aії%c%3dј%2dc",sim, (((time_rad*6)-sec)/60),(((time_rad*6)-sec)%60));} }    
                      //  sprintf(buffer,"START   %3ds%3dt",sec,tic); 
                       // if (sec›5) {start=0;}
                 } //Работа
                        
       else     {// lcd_gotoxy(0,0); lcd_putsf("Cїoѕ  ");
                  if (avto_rad==0) {sprintf(buffer,"CTOЁ Aії%3d.%1dјёЅ",((time_rad=time0_rad)/10),(time0_rad%10));}  //Автомат
                  if (avto_rad==1) {sprintf(buffer,"CTOЁ б01%3d.%1dјёЅ",((time_rad=time1_rad)/10),(time1_rad%10));}  // Цикл 01 
                  if (avto_rad==2) {sprintf(buffer,"CTOЁ б02%3d.%1dјёЅ",((time_rad=time1_rad+time2_rad)/10),((time1_rad+time2_rad)%10));}  //   ..     89.5
                  if (avto_rad==3) {sprintf(buffer,"CTOЁ б03%3d.%1dјёЅ",((time_rad=time1_rad+time2_rad+time3_rad)/10),((time1_rad+time2_rad+time3_rad)%10));}
                  if (avto_rad==4) {sprintf(buffer,"CTOЁ б04%3d.%1dјёЅ",((time_rad=time1_rad+time2_rad+time3_rad+time4_ra  d)/10),((time1_rad+time2_rad+time3_rad+time4_rad)%10)  );} 
                  if (avto_rad==5) {sprintf(buffer,"CTOЁ б05%3d.%1dјёЅ",((time_rad=time1_rad+time2_rad+time3_rad+time4_ra  d+time5_rad)/10),((time1_rad+time2_rad+time3_rad+time4_rad+time  5_rad)%10));}  
                     
                  //sprintf(buffer,"CTOЁ    %3ds%3dt",sec,tic);
                 // lcd_gotoxy(0,0);lcd_puts(buffer);  break;
                  }    
    lcd_gotoxy(0,0);lcd_puts(buffer);  break;     
    //sprintf(buffer, "state%3dind%3d  ",state,ind); lcd_gotoxy(0,0);lcd_puts(buffer);
    break;                                 
    }
      
    case 3:
    { 
    if (avto_rad==0) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  Aіїoјaї ");break;}  //Автомат
    if (avto_rad==1) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  бёє» 01 ");break;}  // Цикл 01 
    if (avto_rad==2) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  бёє» 02 ");break;}  //   ..
    if (avto_rad==3) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  бёє» 03 ");break;} 
    if (avto_rad==4) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  бёє» 04 ");break;} 
    if (avto_rad==5) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  бёє» 05 ");break;}  
    if (avto_rad==6) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  бёє» 06 ");break;} 
    if (avto_rad==7) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  бёє» 07 ");break;}  
    if (avto_rad==8) {lcd_gotoxy(0,0); lcd_puts("Pe¶ёј:  бёє» 08 ");break;}  
    } 

    case 4:
    {
    sprintf(buffer, "Aії %3d%c   %2d.%1dј",freq0_rad*5,0x01,time0_rad/10,time0_rad%10); lcd_gotoxy(0,0);lcd_puts(buffer);
    if (state==3)  {lcd_gotoxy(7,0); _lcd_write_data(0b00001101); }
    if (state==31) {lcd_gotoxy(7,1); _lcd_write_data(0b00001101); }
    break;                                                                                                        
    }   
    
    case 5:
    {
    sprintf(buffer, "01  %3d%c   %2d.%1dј",freq1_rad*5,0x01,time1_rad/10,time1_rad%10); lcd_gotoxy(0,0);lcd_puts(buffer);
    if (state==4)  {lcd_gotoxy(7,0); _lcd_write_data(0b00001101); }
    if (state==41) {lcd_gotoxy(7,1); _lcd_write_data(0b00001101); }
    break;                                                                                                        
    } 
    
    case 6:
    {
    sprintf(buffer, "02  %3d%c   %2d.%1dј",freq2_rad*5,0x01,time2_rad/10,time2_rad%10); lcd_gotoxy(0,0);lcd_puts(buffer);
    if (state==5)  {lcd_gotoxy(7,0); _lcd_write_data(0b00001101); }
    if (state==51) {lcd_gotoxy(7,1); _lcd_write_data(0b00001101); }
    break;                                                                                                        
    } 
    
    case 7:
    {
    sprintf(buffer, "03  %3d%c   %2d.%1dј",freq3_rad*5,0x01,time3_rad/10,time3_rad%10); lcd_gotoxy(0,0);lcd_puts(buffer);
    if (state==6)  {lcd_gotoxy(7,0); _lcd_write_data(0b00001101); }
    if (state==61) {lcd_gotoxy(7,1); _lcd_write_data(0b00001101); }
    break;                                                                                                        
    } 
    
    case 8:
    {
    sprintf(buffer, "04  %3d%c   %2d.%1dј",freq4_rad*5,0x01,time4_rad/10,time4_rad%10); lcd_gotoxy(0,0);lcd_puts(buffer);
    if (state==7)  {lcd_gotoxy(7,0); _lcd_write_data(0b00001101); }
    if (state==71) {lcd_gotoxy(7,1); _lcd_write_data(0b00001101); }
    break;                                                                                                        
    } 
    
    case 9:
    {
    sprintf(buffer, "05  %3d%c   %2d.%1dј",freq5_rad*5,0x01,time5_rad/10,time5_rad%10); lcd_gotoxy(0,0);lcd_puts(buffer);
    if (state==8)  {lcd_gotoxy(7,0); _lcd_write_data(0b00001101); }
    if (state==81) {lcd_gotoxy(7,1); _lcd_write_data(0b00001101); }
    break;                                                                                                        
    } 
 
    
    case 13:
    {
    if (!rev_rad) {sprintf(buffer, "Haѕpaі».B»eіo   ");}
         else {sprintf(buffer, "Haѕpaі».Bѕpaіo  ");}
    lcd_gotoxy(0,0);lcd_puts(buffer);
    break;                                                                                                        
    }   
    
    case 14:
    { 
    lcd_gotoxy(0,0); lcd_puts("CёґЅa»  ");          //Сигнал 
    sprintf(buffer, "       %1d ",beep_rad); lcd_gotoxy(0,1);lcd_puts(buffer);
    break; 
    }

    case 20:
    { 
    if (error!=0) {lcd_gotoxy(0,0); lcd_putsf("*O¬Ґ*KA*");}
         else {lcd_gotoxy(6,1); lcd_putsf("OK");}       
    break; 
    } 

    };  
} 

void START_RADIAL (void)
{
 if (avto_rad==0) {freq=(((freq0_rad-16)*sec)/(time_rad*6))+16;}
 
 if (avto_rad==1) {cycle=1; freq=freq1_rad;}  
 
 if (avto_rad==2) {if (sec/6‹time1_rad) {cycle=1; freq=freq1_rad;}
                   if (sec/6›=time1_rad) {cycle=2; freq=freq2_rad;}} 
               
 if (avto_rad==3) {if (sec/6‹time1_rad)  {cycle=1; freq=freq1_rad;}
               if (sec/6==time1_rad) {cycle=2; freq=freq2_rad;}
               if (sec/6==time1_rad+time2_rad) {cycle=3; freq=freq3_rad;}} 
               
 if (avto_rad==4) {if (sec/6‹time1_rad)  {cycle=1; freq=freq1_rad;}
               if (sec/6==time1_rad) {cycle=2; freq=freq2_rad;}
               if (sec/6==time1_rad+time2_rad) {cycle=3; freq=freq3_rad;}
               if (sec/6==time1_rad+time2_rad+time3_rad) {cycle=4; freq=freq4_rad;}}  
               
 if (avto_rad==5) {if (sec/6‹time1_rad)  {cycle=1; freq=freq1_rad;}
               if (sec/6==time1_rad) {cycle=2; freq=freq2_rad;}
               if (sec/6==time1_rad+time2_rad) {cycle=3; freq=freq3_rad;}
               if (sec/6==time1_rad+time2_rad+time3_rad) {cycle=4; freq=freq4_rad;}
               if (sec/6==time1_rad+time2_rad+time3_rad+time4_rad) {cycle=5; freq=freq5_rad;}}   
            
if (!pause) {putchar(0xA0); putchar((freq‹‹2)|0b00000001|(rev_rad‹‹1)); }
        else {putchar(0xA0);putchar(0x00);}   //11               
if (sec›=(time_rad*6)){start=0; putchar(0xA0);putchar(0x00); b=beep_rad;   cycle=0;}   

}


void START_LEFT_180 (void)
{
if (tic==1){
if ((avto_180==0)||(avto_180==1)) {putchar(0xA0);putchar((freq_180‹‹2)|0b00000001);}
if ((avto_180==2)||(avto_180==3)) {putchar(0xA0);putchar((auto_freq_180‹‹2)|0b00000001);}}
 
 if (avto_180==2) {
                 if (cycle==0) {if (sec›=avto_t_180*6) {way=2; revers_180=1; brake=0; af_180=auto_freq_180; }} 
                 if (cycle==1) {if (sec›=time2_180*6)  {way=2; revers_180=1; brake=0;  }}
                 if (cycle==2) {if (sec›=(time3_180*6)){putchar(0x00); b=beep_180; start=0; rev_180=0; revers_180=0; cycle=0;}}
                 }
                 
  else {if (sec›=time_180*6) {if ((avto_180==0)||(avto_180==3)||(rev_180==1)) 
                    {
                    putchar(0xA0);putchar(0x00); 
                    b=beep_180; 
                    start=0; rev_180=0; revers_180=0; 
                    }
             else {way=2;revers_180=1;brake=0;} }
  }
}

void START_RIGHT_180 (void)
{
if (tic==1){
if ((avto_180==0)||(avto_180==1)) {putchar(0xA0);putchar((freq_180‹‹2)|0b00000011);}
if ((avto_180==2)||(avto_180==3)) {putchar(0xA0);putchar((auto_freq_180‹‹2)|0b00000011);}} 
        
 if (avto_180==2)   {
                 if (cycle==0) {if (sec›=avto_t_180*6) {way=1; revers_180=1; brake=0; af_180=auto_freq_180; }} 
                 if (cycle==1) {if (sec›=time2_180*6)  {way=1; revers_180=1; brake=0; }}
                 if (cycle==2) {if (sec›=(time3_180*6)){putchar(0x00); b=beep_180; start=0; rev_180=0; revers_180=0; cycle=0;}}
                 }
  else {if (sec›=time_180*6) {if ((avto_180==0)||(avto_180==3)||(rev_180==1)) 
                   {
                   putchar(0xA0);putchar(0x00); 
                   b=beep_180; 
                   start=0; rev_180=0; revers_180=0;
                   }
             else {way=1;revers_180=1;brake=0;} }
  }
}

void START_REVERS_180 (void)
{
if (tic==1) {
             putchar(0xA0);
             putchar(0x00);
            }  

if (rev_a_r_180==0)
    { 
      if (avto_180==1) {if (brake›=20) {revers_180=0;rev_180=1;sec=0;}} 

      if (avto_180==2) {if (cycle==1) {if (brake›=20) {revers_180=0;sec=0;cycle++;}}
                        if (cycle==0) {if (brake›=20) {revers_180=0;sec=0;cycle++;}}} 
    } 
else
    {if (brake==0) {b=1;}
      if (avto_180==1) {if ((button==star)||(button==paus)) {revers_180=0;rev_180=1;sec=0;}} 

      if (avto_180==2) {if (cycle==1) {if ((button==star)||(button==paus)) {revers_180=0;sec=0;cycle++;}}
                        if (cycle==0) {if ((button==star)||(button==paus)) {revers_180=0;sec=0;cycle++;}}} 
    }
      
}


 void EXPERT_OPTIONS (void)
 {
  switch (expert_state) {
  case 0:
    {
     if (q==1) {putchar(0xBC);if(getchar()==0xB0) {temp_pcb=getchar();}q=0;};
    sprintf(buffer, "PCB_TEMPt=%3d%c  ",temp_pcb,0x07); lcd_gotoxy(0,0);lcd_puts(buffer);   
    if (button==sett) {expert_state=1;}
    if (button==stop) {expert=0;home}   
    break; 
    }  
       
  case 1:                                       //SET время разгона
    { 
    if(button==incr) {if (tx_narast›5) {tx_narast--;}}                        //100%-5
    if(button==sett) {putchar(0xA1);putchar(tx_narast); expert_state=2; }                          
    if(button==decr) {if (tx_narast‹20) {tx_narast++;}}
    if(button==stop) {putchar(0xA1);putchar(tx_narast); expert=0;home} 
    sprintf(buffer, "t.Ѕapacїt=%3d%%  ",125-(5*tx_narast)); lcd_gotoxy(0,0);lcd_puts(buffer);  
    break;    
    }   
    
  case 2:                                       //SET время торможения
    { 
    if(button==decr) {if (tx_brake›0) {tx_brake--;}}        
    if(button==sett) {putchar(0xA2);putchar(tx_brake); expert_state=3; }                         
    if(button==incr) {if (tx_brake‹30) {tx_brake++;}}
    if(button==stop) {putchar(0xA2);putchar(tx_brake); expert=0;home} 
    sprintf(buffer, "t.їopјo¶t=%2dceє ",tx_brake); lcd_gotoxy(0,0);lcd_puts(buffer);  
    break;    
    }     
    
  case 3:                                       //SET величина тока защиты
    { 
    if(button==decr) {if (tx_current›5) {tx_current--;}}          
    if(button==sett) {putchar(0xA3);putchar(tx_current); expert_state=0; }                          
    if(button==incr) {if (tx_current‹150) {tx_current++;}}
    if(button==stop) {putchar(0xA3);putchar(tx_current); expert=0;home} 
    sprintf(buffer, "Toє.·aж.i=%2d.%1dA ",tx_current/10,tx_current%10); lcd_gotoxy(0,0);lcd_puts(buffer);  
    break;    
    } 
                              
    }  
 }                           
 void BUT_Debrief(void)
{ 
 static unsigned char key;
                                   
 if (!but_decr) {key=decr;}
 if (!but_sett) {key=sett;}
 if (!but_incr) {key=incr;}
 if (!but_star) {key=star;}
 if (!but_stop) {key=stop;}
 if (!but_paus) {key=paus;}
 if ((!but_decr)&&(!but_incr)) {key=korr;} 
 if ((but_decr)&&(but_sett)&&(but_incr)&&(but_star)&&(but_stop)&&(but_paus)) {key=null;}   
                   
   if (key)
  {  
    if ((comp › THRESHOLD2)&&(key != sett)&&(key != star)&&(key != stop)&&(key != paus))
    {
      comp = THRESHOLD2 - THRESHOLD_GO ;
      pressedKey = key;
      return;
    }
    else comp++;
    
    if (comp == THRESHOLD) 
    {
     pressedKey = key;
    if ((!tip)&&(beep_180)){beep_out=1;} 
    if ((tip)&&(beep_rad)){beep_out=1;}
    return;  
    }  
    if (comp › THRESHOLD)
     {
      beep_out=0; 
     }
     
    if ((comp == THRESHOLD_LONG_PRESS)&&(key==stop)) 
    {beep_out=1;
     pressedKey = long_stop;
     return;
    } 
    
        if ((comp == THRESHOLD_LONG_LONG_PRESS)&&(key==sett)) 
    {beep_out=1;
     pressedKey = long_sett;
     return;
    }     
  }
  else {if (comp) {comp=0; beep_out=0; }}
  }  
  
 unsigned char BUT_GetKey(void)
{
  unsigned char key = pressedKey;
  pressedKey = null;
  return key;

} 


// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x00;
// Place your code here

  BUT_Debrief();   
  
}

// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{  static char BuzTick = 0;
// Reinitialize Timer1 value
TCNT1H=0xBDC ›› 8;
TCNT1L=0xBDC & 0xff;
// Place your code here
//beep_out^=1;
tic++;
tic1++; 
 if (tic1%8==0) {bl++; 
               if (BuzTick ‹ b*2)        //Бипер
              {
                if (BuzTick & 1) beep_out=0; else  beep_out=1;           
                BuzTick++; 
              } 
               else
              {
               //beep_out=0;      
               BuzTick = 0;
               b=0; 
              } }      
 if (tic1%2==0) {r=1;}                             
 if (tic1›=16) {q=1; if (!pause) {sec++;}  brake++;if ((state!=1)&&(state!=123)) {if (res‹15) {res++;} else{res=0;home}} tic1=0;  }
 

}


// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
// Reinitialize Timer2 value
TCNT2=0x0C;
// Place your code here

}


Нажмите, чтобы открыть спойлер
Код:
void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1


// Input/Output Ports initialization
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=Out Bit2=Out Bit1=Out Bit0=Out 
DDRB=(0‹‹DDB7) | (0‹‹DDB6) | (0‹‹DDB5) | (0‹‹DDB4) | (1‹‹DDB3) | (1‹‹DDB2) | (1‹‹DDB1) | (1‹‹DDB0);
// State: Bit7=T Bit6=T Bit5=P Bit4=P Bit3=0 Bit2=0 Bit1=0 Bit0=0 
PORTB=(0‹‹PORTB7) | (0‹‹PORTB6) | (1‹‹PORTB5) | (1‹‹PORTB4) | (0‹‹PORTB3) | (0‹‹PORTB2) | (0‹‹PORTB1) | (0‹‹PORTB0);

// Port C initialization
// Function: Bit6=In Bit5=In Bit4=In Bit3=Out Bit2=In Bit1=In Bit0=In 
DDRC=(0‹‹DDC6) | (0‹‹DDC5) | (0‹‹DDC4) | (1‹‹DDC3) | (0‹‹DDC2) | (0‹‹DDC1) | (0‹‹DDC0);
// State: Bit6=T Bit5=P Bit4=P Bit3=0 Bit2=P Bit1=P Bit0=P 
PORTC=(0‹‹PORTC6) | (1‹‹PORTC5) | (1‹‹PORTC4) | (0‹‹PORTC3) | (1‹‹PORTC2) | (1‹‹PORTC1) | (1‹‹PORTC0);

// Port D initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=In Bit1=Out Bit0=In 
DDRD=(1‹‹DDD7) | (1‹‹DDD6) | (1‹‹DDD5) | (1‹‹DDD4) | (1‹‹DDD3) | (0‹‹DDD2) | (1‹‹DDD1) | (0‹‹DDD0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=P Bit1=0 Bit0=P 
PORTD=(0‹‹PORTD7) | (0‹‹PORTD6) | (0‹‹PORTD5) | (0‹‹PORTD4) | (0‹‹PORTD3) | (1‹‹PORTD2) | (0‹‹PORTD1) | (1‹‹PORTD0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
// Timer Period: 62,464 ms
TCCR0A=(0‹‹COM0A1) | (0‹‹COM0A0) | (0‹‹COM0B1) | (0‹‹COM0B0) | (0‹‹WGM01) | (0‹‹WGM00);
TCCR0B=(0‹‹WGM02) | (1‹‹CS02) | (0‹‹CS01) | (1‹‹CS00);
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 500,000 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer Period: 62,5 ms
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0‹‹COM1A1) | (0‹‹COM1A0) | (0‹‹COM1B1) | (0‹‹COM1B0) | (0‹‹WGM11) | (0‹‹WGM10);
TCCR1B=(0‹‹ICNC1) | (0‹‹ICES1) | (0‹‹WGM13) | (0‹‹WGM12) | (0‹‹CS12) | (1‹‹CS11) | (0‹‹CS10);
TCNT1H=0x0B;
TCNT1L=0xDC;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2A output: Disconnected
// OC2B output: Disconnected
ASSR=(0‹‹EXCLK) | (0‹‹AS2);
TCCR2A=(0‹‹COM2A1) | (0‹‹COM2A0) | (0‹‹COM2B1) | (0‹‹COM2B0) | (0‹‹WGM21) | (0‹‹WGM20);
TCCR2B=(0‹‹WGM22) | (0‹‹CS22) | (0‹‹CS21) | (0‹‹CS20);
TCNT2=0x0C;
OCR2A=0x00;
OCR2B=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=(0‹‹OCIE0B) | (0‹‹OCIE0A) | (1‹‹TOIE0);

// Timer/Counter 1 Interrupt(s) initialization
TIMSK1=(0‹‹ICIE1) | (0‹‹OCIE1B) | (0‹‹OCIE1A) | (1‹‹TOIE1);

// Timer/Counter 2 Interrupt(s) initialization
TIMSK2=(0‹‹OCIE2B) | (0‹‹OCIE2A) | (1‹‹TOIE2);

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
// Interrupt on any change on pins PCINT8-14: Off
// Interrupt on any change on pins PCINT16-23: Off
EICRA=(0‹‹ISC11) | (0‹‹ISC10) | (0‹‹ISC01) | (0‹‹ISC00);
EIMSK=(0‹‹INT1) | (0‹‹INT0);
PCICR=(0‹‹PCIE2) | (0‹‹PCIE1) | (0‹‹PCIE0);

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, Even Parity
// USART Receiver: On
// USART Transmitter: On
// USART0 Mode: Asynchronous
// USART Baud Rate: 9600
UCSR0A=(0‹‹RXC0) | (0‹‹TXC0) | (0‹‹UDRE0) | (0‹‹FE0) | (0‹‹DOR0) | (0‹‹UPE0) | (0‹‹U2X0) | (0‹‹MPCM0);
UCSR0B=(1‹‹RXCIE0) | (1‹‹TXCIE0) | (0‹‹UDRIE0) | (1‹‹RXEN0) | (1‹‹TXEN0) | (0‹‹UCSZ02) | (0‹‹RXB80) | (0‹‹TXB80);
UCSR0C=(0‹‹UMSEL01) | (0‹‹UMSEL00) | (1‹‹UPM01) | (0‹‹UPM00) | (0‹‹USBS0) | (1‹‹UCSZ01) | (1‹‹UCSZ00) | (0‹‹UCPOL0);
UBRR0H=0x00;
UBRR0L=0x19;

// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1‹‹ACD) | (0‹‹ACBG) | (0‹‹ACO) | (0‹‹ACI) | (0‹‹ACIE) | (0‹‹ACIC) | (0‹‹ACIS1) | (0‹‹ACIS0);
ADCSRB=(0‹‹ACME);
// Digital input buffer on AIN0: On
// Digital input buffer on AIN1: On
DIDR1=(0‹‹AIN0D) | (0‹‹AIN1D);

// ADC initialization
// ADC disabled
ADCSRA=(0‹‹ADEN) | (0‹‹ADSC) | (0‹‹ADATE) | (0‹‹ADIF) | (0‹‹ADIE) | (0‹‹ADPS2) | (0‹‹ADPS1) | (0‹‹ADPS0);

// SPI initialization
// SPI disabled
SPCR=(0‹‹SPIE) | (0‹‹SPE) | (0‹‹DORD) | (0‹‹MSTR) | (0‹‹CPOL) | (0‹‹CPHA) | (0‹‹SPR1) | (0‹‹SPR0);

// TWI initialization
// TWI disabled
TWCR=(0‹‹TWEA) | (0‹‹TWSTA) | (0‹‹TWSTO) | (0‹‹TWEN) | (0‹‹TWIE);

// Bit-Banged I2C Bus initialization
// I2C Port: PORTC
// I2C SDA bit: 4
// I2C SCL bit: 5
// Bit Rate: 100 kHz
// Note: I2C settings are specified in the
// Project|Configure|C Compiler|Libraries|I2C menu.
//i2c_init();

// LM75 Temperature Sensor initialization
// thyst: 75°C
// tos: 80°C
// O.S. polarity: 0
//lm75_init(0,75,80,0);

// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 5
// RD - PORTD Bit 6
// EN - PORTD Bit 7
// D4 - PORTB Bit 1
// D5 - PORTB Bit 0
// D6 - PORTB Bit 3
// D7 - PORTB Bit 2
// Characters/line: 8
lcd_init(8);

define_char(char0,0x00); 

define_char(char1,0x01); 

define_char(char2,0x02); 

define_char(char3,0x03); 

define_char(char4,0x04); 

define_char(char5,0x05); 

define_char(char6,0x06); 

define_char(char7,0x07); 


eeptoflash();
putchar(0xA1);putchar(tx_narast);
putchar(0xA2);putchar(tx_brake);
putchar(0xA3);putchar(tx_current);
#asm("sei")

while (1)
      {             
      button=BUT_GetKey();
      if((button==long_stop)||(button==long_sett)) {expert=1;}     
        
      if (expert==0)
                 {
                 if (zapusk==1) 
                  {
                    if (tip==0)
                            {
                            FUNC_180();  if (!start) {rev_180=0;}
                            if ((start)&&(way==1)&&(!revers_180)) {START_LEFT_180();  }
                            if ((start)&&(way==2)&&(!revers_180)) {START_RIGHT_180(); }
                            if ((start)&&(revers_180)) {START_REVERS_180();} 
                            if(r) {INDICATION_180();   r=0;}
                            }
                    if (tip==1) 
                            {     
                             FUNC_RADIAL(); 
                             
                             if (pause) {sim=0x05;} else {sim=0x06;}
                             if (start) {START_RADIAL();} 
                             if(r) {INDICATION_RADIAL();r=0;}
                              }
                  }   
                  if (zapusk==0) 
                       {
                       ZAPUSK1();
                       }
                  }
      if (expert==1) 
               {
                EXPERT_OPTIONS();
               }  
                           
                      /*       FUNC_RADIAL();
                            // INDICATION_RADIAL();  
                             if (pause) {sim=0x05;} else {sim=0x06;}
                             if (start) {START_RADIAL();}    
                          //  sprintf(buffer, "start=%2dst%3di%2d",start,state,ind);  lcd_gotoxy(0,0);lcd_puts(buffer); 
                             if(r) {INDICATION_RADIAL();r=0;} 
                       */       
      }
}

Последний раз редактировалось Aselicon; 02.04.2017 в 13:44.
Aselicon вне форума  
Непрочитано 06.04.2017, 22:03  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: CVAVR порча переменных

Сообщение от Aselicon Посмотреть сообщение
#include
#include
#include
#include
И вы хотите чтобы, что то работало?

Сообщение от Aselicon Посмотреть сообщение
#define DATA_REGISTER_EMPTY (1‹=5)&&(eep1_time_180‹=995)&&(eep1_time_180==eep2 _time_180)&&(eep1_freq_180›=1)&&(eep1_freq_180‹=60 )&&(eep1_avto_rad‹=10)) {}
else {eep_error=1;}
Что тут получится хз.
CodeNameHawk вне форума  
Непрочитано 06.04.2017, 22:04  
CodeNameHawk
Вид на жительство
 
Регистрация: 21.10.2009
Сообщений: 349
Сказал спасибо: 181
Сказали Спасибо 65 раз(а) в 57 сообщении(ях)
CodeNameHawk на пути к лучшему
По умолчанию Re: CVAVR порча переменных

Нижний спойлер к чему относится?
CodeNameHawk вне форума  
Непрочитано 06.04.2017, 22:18  
МВА
Гражданин KAZUS.RUN
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 841
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
МВА на пути к лучшему
По умолчанию Re: CVAVR порча переменных

Сообщение от CodeNameHawk Посмотреть сообщение
Нижний спойлер к чему относится?
А то такая программа и есть, без задней скобки и одной недописанной строкой, а все остальное - определения функций и переменных.

А это:
#define DATA_REGISTER_EMPTY (1‹=5)&&(eep1_time_180‹=995)&&(eep1_time_180==eep2 _time_180)&&(eep1_freq_180›=1)&&(eep1_freq_180‹=60 )&&(eep1_avto_rad‹=10)) {}
else {eep_error=1;}
наверное, попытка написать многострочный макрос без обратного слэша.

В общем, я думаю, что никто не отвечает, что ничего нет... никакой программы и даже инициализации.
МВА вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Софтовый i2c в cvavr day177 AVR 3 01.05.2014 14:50
Attiny13\2313 и генератор импульсов на CVAVR deeman30rus AVR 31 22.11.2012 19:20
Как правильно объявлять булевый тип переменных для МК Atmel? sanstan Микроконтроллеры, АЦП, память и т.д 10 08.04.2011 16:22
Помогите с записью в память по заданному адресу в cvavr begun Микроконтроллеры, АЦП, память и т.д 5 06.04.2011 11:32
Знатоки CVAVR. АЙ НИД ХЕЛП!!! Nikopol Микроконтроллеры, АЦП, память и т.д 3 06.06.2008 12:18


Часовой пояс GMT +4, время: 11:59.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.