//ロック(AVR版) 2003.7.2-2005.8.29 小山智史(弘前大学) #define Tmp 3 // テンポ...L16=Tmp*26.2144ms #include #include #include #include #define LED 2 #define BZZ 3 #define Rest 0 #define DOL 19111 #define DOuL 18039 #define REL 17026 #define REuL 16071 #define MIL 15169 #define FAL 14317 #define FAuL 13514 #define SOL 12755 #define SOuL 12039 #define RAL 11364 #define RAuL 10726 #define SIL 10124 #define DO 9556 #define DOu 9019 #define RE 8513 #define REu 8035 #define MI 7584 #define FA 7159 #define FAu 6757 #define SO 6378 #define SOu 6020 #define RA 5682 #define RAu 5363 #define SI 5062 #define DOH 4778 #define DOuH 4510 #define REH 4257 #define REuH 4018 #define MIH 3792 #define FAH 3579 #define FAuH 3378 #define SOH 3189 #define SOuH 3010 #define RAH 2841 #define RAuH 2681 #define SIH 2531 #define L1 32*Tmp #define L2_ 24*Tmp #define L2 16*Tmp #define L4_ 12*Tmp #define L4 8*Tmp #define L8_ 6*Tmp #define L8 4*Tmp #define L16 2*Tmp #define L32 1*Tmp uint8_t i,s,t; prog_char FWD[]={ 3,6,12,9, 3,6,12,9, 3,6,12,9, 3,6,12,9}; prog_char BWD[]={ 9,12,6,3, 9,12,6,3, 9,12,6,3, 9,12,6,3}; SIGNAL(SIG_OVERFLOW0){t++;} // 0.1us*1024*256=26.2144ms SIGNAL(SIG_OUTPUT_COMPARE1A){TCNT1=0; PORTB^=0x08;} uint8_t b(uint16_t x,uint8_t y){ if(x>0){ DDRB|=_BV(BZZ); // Bzz out TCNT1=0; OCR1=x; // TONE set TIMSK|=_BV(OCIE1A); // TONE start TCNT0=0; for(t=0;t