position_laser(0x80,i);
delay;
}
shutter(close);
PORTB=0x00; //включает красные светодиоды индикатора
break;
case 0xFF: //PA4 - Правая пила под углом 45 градусов
// с Юго-Запада на СВ
PORTB = 0x10; // подсвечивает светодиод порта PORTB
position_laser(0x00,0x00);
shutter(open);
for(i=0; i=255; i++) {
i = (unsigned char)(i);
position_laser(i, i);
delay;
}
shutter(close);
PORTB=0x00; //включает красные светодиоды индикатора
break;
case 0xF7: //PA3 - Левая пила под углом 45 градусов
//с ЮВ на СЗ
PORTB = 0x08; // подсвечивает светодиод порта PORTB
delay;
PORTB=0x00; // включает красные светодиоды индикатора
break;
case 0xFB: //PA2 Окружность
PORTB = 0x04; // подсвечивает светодиод порта PORTB
delay;
PORTB=0x00; //включает красные светодиоды индикатора
break;
case 0xFD: //PA1 Синусоида
PORTB = 0x02; // подсвечивает светодиод порта PORTB
delay;
PORTB=0x00; // включает красные светодиоды индикатора
break;
case 0xFE: //PA0 Остановка
PORTB = 0x01; // подсвечивает светодиод порта PORTB
position_laser(0x00,0x00);
shutter(close);
delay;
PORTB=0x00; // включает красные светодиоды индикатора
go = 0;
break;
case 0xFF:
break;
default:
; //все остальные случаи
}//конец switch(new_PORTA)
old_PORTA = new_PORTA;
}//конец if(new_PORTA ! = old_PORTA)
}//конец while(go)
}//конец main
//********************************************************************
// initialize_ports: производится конфигурация портов в качестве
//входных/выходных
//********************************************************************
void initialize_ports(void)
{
DDRA=0x00; //установить PORTA в качестве входного порта
DDRB=0xFF; //установить PORTB в качестве выходного порта
PORTB=0x00; //включить красные светодиоды индикатора
DDRS=0xFF; //установить PORTT в качестве выходного порта
DDRP=0xFF; //установить PORTP в качестве выходного порта
}
//********************************************************************
/// /shutter(int action) : открытие и закрытие затвора
//********************************************************************
void shutter(int action) {
if (action == open) PORTP = 0x01;
if (action == close) PORTP = 0x00;
}
//********************************************************************
//position_laser(unsigned char x_pos, unsigned char y_pos): посылает
//сигнал управления для каналов X и Y гальванометра из портов PORTS
//и PORTT соответственно.
//********************************************************************
void position_laser(char x_pos,char y_pos) {
PORTS = x_pos;
PORTT = y_pos;
}
//********************************************************************