2. Этот протеус почемуто не хотит отрабатывать кнопки, хотя на плате всём номально?
Может Proteus переустановить? Хотя странно и так должно работать.
Код
volatile char key (volatile char s){
if ((s == sens_9 ) || (s == sens_10 )) //Если кнопки с порта D
{
if (PIND & (1<<s)) //Фиксируем
{
waitms(100);
if (PIND & (1<<s)){return (0);}//Если не отпустили возвращаем 0
}return (1); // Иначе 1
}else{
if (PINC & (1 << s)) //Если остальные кнопки с порта C
{
waitms(100);
if (PINC & (1<<s)){return (0);}
} return (1);
}
}
//*******************************************************
if ((key(sens_8)) == 0 ) {
PORTD |= (1<<PD0);
}else{PORTD &= ~(1<<PD0);}
if ((s == sens_9 ) || (s == sens_10 )) //Если кнопки с порта D
{
if (PIND & (1<<s)) //Фиксируем
{
waitms(100);
if (PIND & (1<<s)){return (0);}//Если не отпустили возвращаем 0
}return (1); // Иначе 1
}else{
if (PINC & (1 << s)) //Если остальные кнопки с порта C
{
waitms(100);
if (PINC & (1<<s)){return (0);}
} return (1);
}
}
//*******************************************************
if ((key(sens_8)) == 0 ) {
PORTD |= (1<<PD0);
}else{PORTD &= ~(1<<PD0);}
P.S. Я особо не сторонник всякой симуляции, но порой для отладки какого-нибудь алгоритма легче залить это в Proteus чем 20 раз прошивать контроллер.