#include
unsigned char led = 0xfe;
void delay_i_ms(unsigned int i)
{
do
{
while(!(TIFR & 0x04)); // TOV1 가 세트되었는지 확인
TIFR |= 0x04; /* 인터럽트 발생없이 타이머 사용했으므로 자동적으로 클리어되지 않으므로 강제로 클리어 */
TCNT1H = (65536-16000)/256; TCNT1L = (65536-16000) % 256; /* 재정의 , 1msec 초를 얻기 위한 시간정수*/
i--;
}
while(i);
}
void main(void)
{
DDRC = 0xff; // 포트C를 출력으로
TCCR1B |= 1; // 분주비를 1로 설정
TCNT1H = (65536-16000)/256;
TCNT1L = (65536-16000) % 2;
for(;;)
{
PORTC = led;
if (led != 0x7f) led = (led << 1 ) | 0x01; else led = 0xfe;
delay_i_ms(100);
} /* 100*1 msec 시간 지연 */
}