Цитата(Владимир_КПИ @ Feb 15 2008, 13:25)

Хочу сам сообразить.
При появлении на выводе нуля (нажатия кнопки) выполняется проверка - если значение яркости меньше 100% значит увеличить его на 10%, в противном случае ничего не делать. После этого сделать задержку в 2 мс. Вы хотите сказать, что кнопку я держу более 2 мс? Сейчас попробую сделать задержку на 2 с.
Вроде всё правильно.
Почему не пользуетесь таймерами?
Я недавно делал где-то вот так, тоже на лампочке
Код
// Timer/Counter 2 initialization
// Clock source: System Clock 16МГц
// Clock value: 62,500 kHz
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x06;
TCNT2=0xC2;
OCR2=0x00;
#define key PINC.0
#define minPWM 1
#define maxPWM 1023
unsigned int T2count = 0;
unsigned char flag = 0;
int pwm = 0;
// Timer 2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
// Reinitialize Timer 2 value
TCNT2=194;
//0.992 milisecond:
if (T2count <= 1007) //default 1007
{
T2count++;
if ((!key)&&(!flag))
{
if (pwm <= maxPWM) pwm++;
else flag = 1;
}
else if ((!key)&&(flag))
{
if (pwm >= minPWM) pwm--;
else flag = 0;
}
}
else
{
//0,999936 second:
T2count=0;
}
}
Слышал здесь интерактивный курс по Си, поругайте и меня
Сообщение отредактировал BigCoster - Feb 15 2008, 13:32