// 『昼夜逆転』工作室 http://jsdiy.web.fc2.com/ // ATtiny2313 // 7セグ4桁テストボード(アノードコモン) // // ダイナミックドライブ // スイッチA0:一時停止 A1:一時的にスタティックドライブで全桁点灯 // // 2008/10/09 v1.00 初版 /* ポート対応 [ATtiny2313] bit 7 6 5 4 3 2 1 0 PORTA - - - - - - swL swR PORTB - - - DP 桁4 桁3 桁2 桁1 LEDボードでは左から桁1-桁4 PORTD - G F E D C B A 7セグのセグメント(下図) 7セグのセグメント図 +-A-+ F B +-G-+ E C +-D-+ DP */ #define F_CPU 1000000UL //1MHz #include #include int main(void) { uint8_t n, sw; DDRD = 0b01111111; //7seg A-G = D0-D6 DDRB = 0b00011111; //7seg 桁(左から) = B0-B3, 7seg DP = B4 PORTA = 0b00000011; //スイッチが2個(右から) A0-A1 PORTD = 0b00000000; //点灯パターンは「8」の字 n = 0; while (1) { //ダイナミックドライブ n = (n + 1) % 4; PORTB = ~(1 << n) & 0b00011111; //DPは消灯 sw = PINA; //一時停止 //どれか1桁しか点灯していないことからダイナミックドライブであることがわかる if (~sw & 0b00000001) { _delay_ms(1000); } //全桁点灯(スタティックドライブ) if (~sw & 0b00000010) { PORTB = 0b00010000; //DPは消灯 _delay_ms(1000); } } return 0; }