/* * irtrans.c * * Created: 2012/11/17 1:10:51 * Author: TOMO */ /* PD0 I TxD PB0 O LED_K PB1 O LED_K PB2 O LED_K PB3 O LED_K PB4 O LED_K ==== ATtiny2313 ==== Low: 01100100 ||||++++-- CKSEL[3:0] システムクロック選択 ||++-- SUT[1:0] 起動時間 |+-- CKOUT (0:PD2にシステムクロックを出力) +-- CKDIV8 クロック分周初期値 (1:1/1, 0:1/8) High:11-11111 |||||||+-- RSTDISBL (RESETピン 1:有効, 0:無効(PA2)) ||||+++-- BODLEVEL[2:0] (111:Off, 110:1.8, 101:2.7, 100:4.3) |||+-- WDTON (WDT 0:常時ON, 1:通常) ||+-- SPIEN (1:ISP禁止, 0:ISP許可) ※Parallel時のみ |+-- EESAVE (消去でEEPROMを 1:消去, 0:保持) +-- DWEN (On-Chipデバッグ 1:無効, 0:有効) Ext: -------1 +-- SPMEN (SPM命令 1:無効, 0:有効) */ #include #include #include #define LED_BIT (_BV(0) |_BV(1) |_BV(2) |_BV(3) |_BV(4)) ISR(TIMER1_COMPA_vect) { if(PIND & _BV(0)) PORTB = LED_BIT; else PORTB ^= LED_BIT; } int main(void) { DDRB |= LED_BIT; // PB0-4 output DDRD &= ~_BV(0); // PD0 input PORTD |= _BV(0); // PD0 pull up TCCR1A = 0b00000000; TCCR1A = 0b00000000; TCCR1B = _BV(WGM12) | 0b001; // WGM13=0,WGM12=1:MODE4, 1/clk TIMSK = _BV(OCIE1A); OCR1A = (F_CPU / 38000 / 2) - 1; sei(); while(1) {} }