gpt4 book ai didi

c - 如何在Atemga128中使用定时器/计数器2...?

转载 作者:行者123 更新时间:2023-11-30 16:27:48 26 4
gpt4 key购买 nike

我在使用计时器/计数器 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;

}

最佳答案

首先,在中断例程中切换 LED。我认为你的意图是切换它。

其次,计数器必须是 volatile 的。

关于c - 如何在Atemga128中使用定时器/计数器2...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52625724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com