Witam koledzy
Przerobiłem program na atmegę tak aby mi świeciła dioda led ok 3 minut
Jak zrobić aby tym samym przyciskiem w razie konieczności wcześniej ją wyłączyć.
Przerobiłem program na atmegę tak aby mi świeciła dioda led ok 3 minut
Jak zrobić aby tym samym przyciskiem w razie konieczności wcześniej ją wyłączyć.
/*zdefiniowanie Pinu wyjściowego*/
#define OUT_ON DDRB|=_BV(1); PORTB|=_BV(1);
#define OUT_OFF DDRB=_BV(1); PORTB&=~_BV(1);
/*zdefiniowanie pinów B0 jako wyjścia i podciągnięcie go do "1")*/
#define N1 DDRB|=_BV(0); PORTB|=_BV(0);
/* zdefiniowanie pinów B0 jako wejścia*/
#define IN1 DDRB&=~_BV(0);
/******************************************************************************/
void delay(unsigned int us)
{
unsigned int delay_loops;
register unsigned int i;
delay_loops = (us+3)/5*CYCLES_PER_US; // +3 for rounding up (dirty)
for (i=0; i < delay_loops; i++) {};
}
void delayms(unsigned int ms)
{
unsigned int i;
for (i=0;i<ms;i++)
{
delay(999);
asm volatile (
"WDR"::);
}
}
/************************************************************************************/
void pulse2(void)
{
int i;
for(i=0;i<200;i++)
{
OUT_ON;
delayms(1000);
OUT_OFF;
delayms(0);
}
}
int main (void)
{
for(;;)
{
N1; /*ustawienie pinU B0 wyjścia i w stan wysoki (podciągniecie do "1") */
delay(10); /*czas na "przeładowanie" kondensatorów */
IN1; /*ustawienie pinu B0 jako wejścia */
if(bit_is_clear(PINB, PB0)) pulse2();
}
return (0);
}