我如何在Atemga128中使用Timer / Counter2 ...?

时间:2018-10-03 11:08:27

标签: c

使用计时器02有麻烦 我使用Atmega128 8位处理器,它具有16MHz晶体。 我知道如何使用Timer00,但不能使用Timer02

我了解到计时器00和02非常相似。

下面是我的短代码。 请查看代码。我需要您的帮助。

谢谢

#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 16000000UL
#include <avr/delay.h>

#define FALSE 0
#define TRUE 1

/*COUNT VARIABLE, SWITCH VARIABLE*/
unsigned int cnt_LED= 0; //LED TIMER0 COUNT 
unsigned int cnt_FND= 0; // FND TIMER2 COUNT
unsigned short FND_sw=0;
/********************************/


/*Function List*/
void LED();
void FND_TURN_ON();
/***************/



/**** LED TIMER2 ****/
ISR(TIMER2_OVF_vect) // 0.002*1500= 3s
{
    TCNT2 = 0x82;
    if(++cnt_LED ==1500) {
       PORTA = 0x00;
       cnt_LED = 0;
    }
}
/*******************/

int main()
{
    sei();
    LED();
    while(1)
    {

    }

}
    void LED()
    {
        /*LED Register*/
        DDRA = 0xff;
        TCCR2 = 0x06; //B 0000 0101
        TCNT2 = 0x82;

        /*************/

    PORTA = 0xff; //led on
        TIMSK = 0x40;

 }

1 个答案:

答案 0 :(得分:0)

首先,您在中断程序中切换led。我认为您的意图是切换它。

第二,计数器必须是易失性的。