使用计时器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;
}
答案 0 :(得分:0)
首先,您在中断程序中切换led。我认为您的意图是切换它。
第二,计数器必须是易失性的。