본문 바로가기

프로테우스/타이머 / 카운터

타이머 LED 점멸 2번째


#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 시간 지연 */

}

'프로테우스 > 타이머 / 카운터' 카테고리의 다른 글

PWM을 이용한 LED 밝기제어  (0) 2011.10.04
500msec 간격이로 LED 이동  (0) 2011.10.04
타이머를 이용한 LED  (0) 2011.10.04