Схема: Проект тестировался на 8-и свето-диодах не известного происхождения, при питании 3.3V. Резисторы на 22Ом, конденсаторы на 4.7мкф. Файлы к статье: 8led.rar Code #include <mega48.h> #include <delay.h>
char l[8]={0,0,0,0,0,0,0,0}; char l2[8]={0,0,0,0,0,0,0,0};
char t=0; char ln=0; char i; char tb[16]={7,10,11,12,13,14,15,17,20,24,29,45,70,100,140,180}; char tn=0;
interrupt [TIM0_OVF] void timer0_ovf_isr(void) { if (t==0) { PORTD=0xff; } for (i=0;i<8;i++) { if (t>=l[i]) PORTD&=~(1<<i); } t++; }
void main(void) { char n; #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif
PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0xff;
TCCR0A=0x00; TCCR0B=0x01; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00;
TIMSK0=0x01;
#asm("sei")
while (1) { l2[ln]=15;
for (n=0;n<8;n++) { if (l2[n]>0&&n!=ln) l2[n]--; }
for (n=0;n<8;n++) l[n]=tb[l2[n]];
tn++; if (tn==5) { ln++; if (ln>7) ln=0; tn=0; } //delay_ms(1); } }
|