0
該代碼片段針對Atmega8編寫,取自clapper circuit using Atmega8。任何人都可以將這個代碼片段轉換爲Atmega16並附上一點解釋。由於我正在嘗試爲Atmega16實現相同的功能,並且在計時器部件上遇到了一些麻煩。將Atmega8的計時器代碼實現爲Atmega16
#define BURST_TIME 70
#define READY_TIME 150
#define TIME_OUT 300
void timer_init()
{
TIFR |= (1<<TOV0);
//set interrupt on overflow
TIMSK |= (1<<TOIE0);
TCNT0 = 223;
}
ISR (TIMER0_OVF_vect)
{
TCNT0 = 223;
timer++;
if (timer == BURST_TIME)
{
burst = 1;
ready = 0;
} else if (timer == READY_TIME)
{
burst = 0;
ready = 1;
} else if (timer == TIME_OUT)
{
timer = 0;
burst = 0;
ready = 0;
first = 0;
stop_timer();
}
}
void start_timer()
{
TCCR0 |= (1<<CS02);
}
void stop_timer()
{
TCCR0 &= ~(1<<CS02);
}