/************************************************** *****
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
} |