Da li moze neko da mi da konkretan savet u vezi jednog problema? Naime, program treba da na displeju prikaze odredjenu poruku. Kada testiram program u simulatoru, sve savrseno radi, ali kada se program izvrsava na fizickom hardveru, dolazi do problema, ne ukljucuju se svi segmenti, samim tim poruka se ne prikazuje kako treba. Procesor je 80C32. DIP Switch su povezani na ulaz 74HC573, 74HC573 je povezan na P1 port procesora, takodje na P1 port procesora preko ULN2803 povezani su i displeji. Kombinacijom DipSWitch - eva prikazuje se odredjena poruka. Da li moze neko da mi pomogne oko datog problema, posto mi je potrebna pomoc? Hvala unapred svima na savetima i odgovorima.
ispleji su sa zajednickom anodom. Ima ih 6, ali se samo 5 ukljucuju i na njima se ispisuje poruka.
Navedeni program gde se ispisuje poruka izgleda ovako:
U prilogu dostavljam i semu
ispleji su sa zajednickom anodom. Ima ih 6, ali se samo 5 ukljucuju i na njima se ispisuje poruka.
Navedeni program gde se ispisuje poruka izgleda ovako:
Code:
void timer0(void) interrupt 1
{
TH0=0xFC;
TL0=0x66;
switch(disp)
{
case 1:
C=1;
BB=1; // OE=0 kod 573
A=1;
if(e0==1 && q4==0 && q5==0 && q6==0) // proveri koji je switch pristisnut
pom=1;
break;
case 2:
C=1;
BB=0;
A=1;
if(pom==1)
displayDigit('S');
delay(5);
break;
case 3:
C=1;
BB=0;
A=0;
if(pom==1)
displayDigit('T');
delay(5);
break;
case 4:
C=0;
BB=1;
A=1;
if(pom==1)
displayDigit('A');
delay(5);
break;
case 5:
C=0;
BB=1;
A=0;
if(pom==1)
displayDigit('R');
delay(5);
break;
case 6:
C=0;
BB=0;
A=1;
if(pom==1)
displayDigit('T');
delay(5);
break;
}
disp++;
if(disp>6)
disp=1;
}
// funkcija koja ukljucuje masku
void displayDigit(unsigned char cifra)
{
switch(cifra)
{
case 'S': P1=0x6D; break;
case 'T': P1=0x78; break;
case 'A': P1=0x77; break;
case 'R': P1=0x50; break;
}
}
void delayTimer()
{
TMOD&=0xF0;
TMOD|=0x01;
TH0=0xFC;
TL0=0x66;
TR0=1;
}
void timer0(void) interrupt 1
{
TH0=0xFC;
TL0=0x66;
switch(disp)
{
case 1:
C=1;
BB=1; // OE=0 kod 573
A=1;
if(e0==1 && q4==0 && q5==0 && q6==0) // proveri koji je switch pristisnut
pom=1;
break;
case 2:
C=1;
BB=0;
A=1;
if(pom==1)
displayDigit('S');
delay(5);
break;
case 3:
C=1;
BB=0;
A=0;
if(pom==1)
displayDigit('T');
delay(5);
break;
case 4:
C=0;
BB=1;
A=1;
if(pom==1)
displayDigit('A');
delay(5);
break;
case 5:
C=0;
BB=1;
A=0;
if(pom==1)
displayDigit('R');
delay(5);
break;
case 6:
C=0;
BB=0;
A=1;
if(pom==1)
displayDigit('T');
delay(5);
break;
}
disp++;
if(disp>6)
disp=1;
}
// funkcija koja ukljucuje masku
void displayDigit(unsigned char cifra)
{
switch(cifra)
{
case 'S': P1=0x6D; break;
case 'T': P1=0x78; break;
case 'A': P1=0x77; break;
case 'R': P1=0x50; break;
}
}
void delayTimer()
{
TMOD&=0xF0;
TMOD|=0x01;
TH0=0xFC;
TL0=0x66;
TR0=1;
}
U prilogu dostavljam i semu