Прошу...
[code h=200]unsigned char PORTD;
unsigned char PORTB;
unsigned char Ugol;
int main(void)
{
unsigned char rab;
unsigned char a;
//инициализация
Ugol = 0; //проинициируем угол
PORTD = 0xff; //все выключено
PORTB = 0xff;
while (1) //основной бесконечный цикл
{
do //считываем состояние КН3
{
a = PORTD;
}while (a & 0x20); //ждем PD.5=0
a = PORTB; //считываем PB.0
if (a & 0x01) //PB.0 = 0 ?
{ //нет
do
{
a = PORTD; //считываем PD.1
}while (a & 0x02); //ждем PD.1= 0
PORTD &= 0xe7; //PD.3 = 0, PD.4 = 0
}
else //PB.0 = 0
{
do
{
rab = PORTD; //считываем rab = PIND
rab >>= 2; //rab = rab>>2
}while (rab == 0); //ждем rab != 0 (т.е. PD7-PD2 не 0)
do
{
a = PORTD; //считываем PD.0
}while (a & 0x01); //ждем PD.0 = 0
PORTD &= 0xeb; //PD.2 = 0, PD.4 = 0
while(1) //бесконечный цикл, пока Ugol < rab
{
do
{
a = PORTB; //считываем PB.1
}while (a & 0x02); //ждем PB.1 = 0
Ugol++; //Ugol = Ugol + 1
if (Ugol < rab) //проверяем
{
do
{
a = PORTB; //считываем PB.1
}while (0 == (a & 0x02)); //ждем PB.1 = 1
//и на повтор
}
else
break; //если Ugol >= rab, то выходим из цикла while(1)
}
PORTD |= 0x04; //выключаем PD.2
do
{
a = PORTD; //считываем PD.1
}while (a & 0x02); //ждем PD.1 = 0
PORTD &= 0xf7; //включаем PD.3
}
do
{
a = PORTB; //считываем PB.0
}while (a & 0x01); //ждем PB.0 = 0
PORTD |= 0x18; //выключаем PD.3, PD.4
} //на бесконечный основной цикл
return(0);
}[/code]
Кстати, когда пишите сообщение, то выбирайте адресата не как цитировать, а из списка "Кому:" .
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен