Страница 1 из 1

Подскажите в чем ошибка

Добавлено: Пн янв 27, 2014 17:17:38
grega1
#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=0x3f;

PORTC=0x3f;
}
for (i=0;i<8;i++) {
if (t>=l) PORTD&=~(1<<i);

if (t>=l) PORTC&=~(1<<i);
}
t++;
}


void main(void) {
char n;
#pragma optsize-
CLKPR=0x60;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;

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_us(200);

}
}


Нужно чтоб поочередно загорались и гасли. а тут получается что все немного но светятся

Re: Подскажите в чем ошибка

Добавлено: Пн янв 27, 2014 20:02:19
Шурики
Задержка в каких единицах?..
Вот и посчитайте. Люди не мухи.

Re: Подскажите в чем ошибка

Добавлено: Вт янв 28, 2014 09:58:08
grega1
а можете привети правильный пример чтоб было от чего оттолкнутьсяя и понять ошибки :shock:

Re: Подскажите в чем ошибка

Добавлено: Вт янв 28, 2014 10:55:26
kobzar
delay_us(200); >>_delay_ms(200);

Re: Подскажите в чем ошибка

Добавлено: Вт янв 28, 2014 16:32:51
DruidCat
Если всетодиоды немного горят и все разом, значит они все загораются и гаснут. Просто это происходит с очень большой скоростью. Поэтому ты видишь слабое горение. Сделай паузу побольше в миллисекундах, как написано выше.