Как реализовать одновременную работу индикатора (16 светодиодов для отображения времени в двоичном виде, т.е. 6 диодов на секунды, 6 на минуты и 4 на часы), кнопок и собствено подсчет времени. При этом я не втыкаю как управлять ключами на транзисторах. На сколько я понял -
нужно сделать прерывание по таймеру(быстрому, чтобы не было мерцания) и в прерывании включить первые 6 диодов, а затем вторые, т.е. если допустим светодиоды подключены к порту B а ключи к ногам 0 и 1 порта C то:
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
PORTC.0=1;//включаем первые 6 диодов (секунды)
PORTB=sec;//собсно записываем на выход значение секунд.
delay_ms(100);//ждем чтобы они немного посветили
PORTC.0=0;//выключаем первые 6 диодов (секунды)
PORTC.1=1;//включаем вторые 6 диодов (минуты)
PORTB=min;//собсно записываем на выход значение минут.
delay_ms(100);//ждем чтобы они немного посветили
PORTC.1=0;//выключаем вторые 6 диодов (минуты)
}
- но в протеусе это не работает (((
а еще одно прерывание, делаем для подсчета времени, прерывание выполняется каждую секунду.
Эскизы прикрепленных изображений