/**********************************************************************************  led.c 2008/12/05 ok BCDスイッチを読み、1時間前にLEDを点灯し始め、10分毎に6段階に増加する、2時間後消灯。 立ち上げエッジ割り込み・・押しボタンスイッチを押すと25秒間LEDを点灯し消灯する 15v,10φ5LED 15mA,820Ω3mA *********************************************************************************** */ #include #include static void tim(long x); uint8_t xx; SIGNAL(SIG_INTERRUPT0) { long i1,jj; cli(); //割込み禁止 PORTB = 0x01; for(i1 = 0;i1 < 1000;i1++){ for(jj = 0;jj < 7100;jj++){jj = jj;} } PORTB = 0x03; for(i1 = 0;i1 < 1000;i1++){ for(jj = 0;jj < 7100;jj++){jj = jj;} } PORTB = 0x07; for(i1 = 0;i1 < 1000;i1++){ for(jj = 0;jj < 7100;jj++){jj = jj;} } PORTB = 0x0F; for(i1 = 0;i1 < 1000;i1++){ for(jj = 0;jj < 7100;jj++){jj = jj;} } PORTB = 0x1F; for(i1 = 0;i1 < 1000;i1++){ for(jj = 0;jj < 7100;jj++){jj = jj;} } PORTB=0x3F; for(i1 = 0;i1 < 20000;i1++){/* 20000=20sec */ for(jj = 0;jj < 7100;jj++){jj = jj;} } PORTB=xx; sei(); } /* メインルーチン */ int main (void) { uint8_t da,n; long i,m; DDRA=0x00; //入力設定 PORTA=0xff; DDRB=0x3f; //0011 1111設定 PORTB=0x40; MCUCR = 0x03; //INT0立ち上げエッジ GIMSK = _BV(INT0); //INT0割込みマスクレジスタ tim(2000); PORTB=0x3F; tim(200); PORTB=0; tim(200); PORTB=0x3F; tim(200); PORTB=0; tim(2000); da = PINA; da ^= 0xff; // not da &= 0x0F; // BCDスイッチデータ for(n=1;n