Код: Выделить всё
if(counter_lcd < calibre_lcd) // Если положение меньше калибра.
{
lock();
triger = 1; // флаг блокировки кода.
AL_config();
temp_calibre = (calibre_lcd - AL_correct_temp);
timer_COMPA_ON(); // подпрограмма включения канала А таймера 1, обновления экрана.
compare = 1;
direction_motor = 1;
nterrupt_on(); // включение прерывания.
PORTB |= (1<<4); // включение мотора на разведение cw.
while(compare == 1)
{
}
PORTB &= ~(1<<4); // выключение мотора на разведение.
PORTB |= (1<<2); // Включаем динамическое тормажение.
dinam_on = 1; // флаг выключения динамическое тормажения.
timer_COMPB_ON();
Код: Выделить всё
....
if(compare == 1)
{
if(counter_lcd >= temp_calibre) //calibre_lcd
{
compare = 0;
}
}
Код: Выделить всё
ISR(INT0_vect)
{
cli();
uint8_t int_temp = 0x02;
while(1)
{
if((PIND & (1<<2)) == 0)
{
int_temp++;
if(int_temp == 0x05)
{
енкодер++;
}
{
else
{
int_temp--;
if(int_temp == 0)
{
goto out_int;
}
}
}
out_int:
sei();
}