#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include "attiny2313-led.h"
uint8_t chika = 0;
uint8_t pika = 0;
uint8_t light = 0;
uint8_t flash = 0;
void timer_setup(void){
//タイマー0設定
//高速PWM動作(TOP値がOCR0A)
TCCR0A = (1<<WGM01) | (1<<WGM00);
TCCR0B = (1<<WGM02) | timer0_ck_8;
TCNT0 = 0; //TCNT0の初期値
OCR0A = 99; //TOP値(10kHzでオーバーフロー割り込み)
//タイマー1設定
//高速PWM動作(TOP値がICR1)
TCCR1A = (1<<WGM11) | (0<<WGM10);
TCCR1B = (1<<WGM13) | (1<<WGM12) | timer1_ck_1;
TCNT1 = 0; //TCNT1の初期値
ICR1 = 799; //TOP値(10kHzでオーバーフロー割り込み)
TIMSK = (1<<TOIE1) | (1<<TOIE0); //溢れ割り込み許可
TIFR = (1<<TOV1) | (1<<TOV0); //オーバーフロー割り込み許可
}
void LED_jiwa(void){ //LEDじわじわ点灯させる
if(GET(green_SW) != 0){OFF(green_LED);}
else if(GET(green_SW) == 0){
if(flash > 100){flash = 0;}
else if(chika > 100){chika = 0; flash++;}
else if(chika < flash){OFF(green_LED);}
else if(chika > flash){ON(green_LED);}
}
if(GET(red_SW) != 0){OFF(red_LED);}
else if(GET(red_SW) == 0){
if(light > 100){light = 0;}
else if(pika > 100){pika = 0; light++;}
else if(pika < light){ON(red_LED);}
else if(pika > light){OFF(red_LED);}
}
if((GET(green_SW) != 0)&&(GET(red_SW) != 0)){
OFF(green_LED);
OFF(red_LED);
}
}
//割り込み処理ハンドラ
ISR(TIMER1_OVF_vect) //オーバーフロー割り込み(タイマー1)
{
chika++;
}
ISR(TIMER0_OVF_vect) //オーバーフロー割り込み(タイマー0)
{
pika++;
}
int main()
{
set();
timer_setup();
sei(); //割り込み許可
while(1){
LED_jiwa();
}
}
このページへのコメント
where to buy levitra pwtaas car insurance quotes >:-D auto insurance online nyeal Cialis g辿n辿rique 8-PP online viagra 8-]]]
http://www.cheapinsurdealsfast.com/