Probao sam taj sto si napisao sa bufferom ali ne radi.
Upalio sve diode na svim adresama 8000 8001 8002 8003 i neke ugasio opet na razlicitim..Svaki put kada startujem , neke druge diode ugasi ili upali.. ali svi portovi sa diodama su upaljeni, i zelene i zute i crvene plave. Onda kada ugasim i opet pokrenem program potpuno druge su neke upaljene, recimo plave... itd
Probao sam ja i dalje ovako
Code:
#include <reg51.h>
typedef unsigned char byte;
byte a[16]= {7,5,16,3,1,4,11,6,12,15,24,13,18,33,39,14};
byte counter;
byte frequency;
byte displ;
byte xdata display _at_ 0x8001;
byte started = 0;
int i=0;
sbit switcher=P0^0;
void Inic(void)
{
EA=1;
TMOD=1;
TH0=0x3C;
TL0=0xAF;
counter=1;
void timer0(void) interrupt 1 using 2
{
TH0 = 0x3C;
TL0 = 0xAF;
counter--;
if(counter == 0)
counter = 200;
if(started == 1)
{
while(i < 16)
{
if( (a[i] % 3) == 0)
{
display = (a[i]);
i++;
break;
}
i++;
}
if(i == 16)
{
ET0 = 0;
TR0 = 0;
started = 0;
}
}
}
}
void main(void)
{
Inic();
switcher = 1;
while(1)
{
if(switcher == 0)
if(started == 0)
{
started = 1;
i = 0;
counter = 200;
TH0=0x3C;
TL0=0xAF;
ET0=1;
TR0=1;
}
}
}
Dodao sam samo break u prekidnoj rutini. Mada to nesto ne pomaze al ajde...
I povecao sam recimo brojac na 200 i usporio je dostaprelaz ali kao da jos malkice treba da se smanji brzina ,to je mozad u mili sekundama ali ne znam kako tacno da odredim.....