unsigned char i=0,hour = 0, min = 0, sec = 0;
interrupt [TIM0_OVF] void timer0_ovf_isr(void) //오버플로우 인터럽트 시계.
{
i++;
if(i==100)
{
sec++;
i=0;
if(sec==60)
{
sec = 0;
min = min+1;
}
if(min ==60)
{
min = 0;
hour = hour+1;
hour = hour%24;
}
}
}
void main(void)
{
PORTD=0x00;
DDRD=0xff;
TCCR0=0x07;
TCNT0=0xff-157;
TIMSK=0x01;
TIFR|=0x01;
#asm("sei");
while (1)
{
if(hour>=20 || hour <= 24 || hour >= 1 || hour <= 7) (밤 20시 부터 24시, 새벽 1시부터 7시까지 LED 끔)
(LED OFF)
}
}
타이머 인터럽트를 이용해 LED를 작동시키는 소스인데요ㅠㅠ
이거 제가 맞ㄱㅔ 짠건가요? 조언좀부탁드립니다ㅠㅠ
10 ms 단위로 동작하는 건가 보군요.
우선 INT 루틴 안의 if (i==100) 이라는 문장은
if (i%100 == 0) 으로 바꾸어야 겠군요.