atmega8 例程:定时器T1 普通模式

 
/*****************************************************************
*  函数库说明:ATMEGA8 定时器T1 普通模式
*  版本:      v1.00
*  修改:      庞辉    芜湖联大飞思卡尔工作室             									       
*  修改日期:  2011年08月11日 							   
*			   											   
*  说明:	   6M外部晶振    10ms定时
*                                                          
*  版本更新:  详见readme.txt
*
*              20110805  V1.02                                            
*                                                                                          
******************************************************************
*注意: LED   PC5
******************************************************************/

#include 
#include 

int main(void)
{
    //LED设置为输出
    DDRC |= (1 << DDC5);
    
    //6M / 8 * 7500 = 10ms
    TCNT1 = 65535 - 7500;
    //开定时器T1溢出中断
    TIMSK |= (1 << TOIE1);
    //开总中断
    sei(); 
    //T1定时器普通模式、8分频,并开启定时器
    TCCR1B |= (1 << CS11);

    while(1);

    return 0;
}  

volatile int i = 0;

SIGNAL(SIG_OVERFLOW1)
{
    i++;
    TCNT1 = 65535 - 7500;
    //LED电平取反

    //当i累加到100时,即1s
    if(i == 100)
    {
        i = 0;
        PORTC ^= (1 << PC5);
    }
}

你可能感兴趣的:(AVR单片机)