Dominik
Guest
Fri Nov 19, 2004 8:38 pm
Mam problem z najszybszym stoperem na swiecie. Mimo wielu prob nie udalo mi
sie go zwolnic. Moze ktos doswiadczony wiedzialby co robie zle. Oto
fragmenty kodu:
void obs_T0(void) interrupt 1
{
a++;
TL0=0xff;
TH0=0x4b;
if (a>20)
{
a=0;
SekundyJedn++;
itd..}
}
void wyswietl(unsigned char pozycja, unsigned char cyfra)
{
pozycja=pozycja<<4;
pozycja=pozycja|cyfra;
P0=pozycja;
}
void main(void)
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=0x4b;
TL0=0xff;
TR0=1;
while (1)
{...
}
Ja juz kompletnie nie wiem co moze byc zle. Czasami Keil wyswietla taki
komunikat:
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_WYSWIETL?STOPER
Za pomoc bede bardzo wdzieczny. Pozdrawiam
Dominik
Sebastian Bialy
Guest
Fri Nov 19, 2004 8:40 pm
Dominik wrote:
Quote:
void obs_T0(void) interrupt 1
{
a++;
if (a>20)
Nie znam się na keilu, ale czy zdefiniowałeś zmienną "a" jako "volatile" ?
--
Sebastian Bialy - heby@poczta.onet.pl
Dominik
Guest
Fri Nov 19, 2004 8:50 pm
Quote:
Nie znam się na keilu, ale czy zdefiniowałeś zmienną "a" jako "volatile"
?
Niestety niczego to nie zmienia, nadal smiga jak szalony. Pozdrawiam
Dominik
A.Grodecki
Guest
Fri Nov 19, 2004 8:56 pm
Użytkownik Dominik napisał:
Quote:
Mam problem z najszybszym stoperem na swiecie. Mimo wielu prob nie udalo mi
sie go zwolnic. Moze ktos doswiadczony wiedzialby co robie zle. Oto
fragmenty kodu:
void obs_T0(void) interrupt 1
....
A używanie C ma PODOBNO życie upraszczać...
Niestety, gdyby było w asm to bym Ci powiedział...
--
Pozdrawiam,
A. Grodecki
Johnny
Guest
Fri Nov 19, 2004 9:37 pm
Użytkownik "Dominik" <dbebik@op.pl> napisał w wiadomości
news:cnllj8$msd$1@atlantis.news.tpi.pl...
Quote:
Mam problem z najszybszym stoperem na swiecie. Mimo wielu prob nie udalo
mi
Ja juz kompletnie nie wiem co moze byc zle. Czasami Keil wyswietla taki
komunikat:
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_WYSWIETL?STOPER
Za pomoc bede bardzo wdzieczny. Pozdrawiam
To jest ostrzezenie, ktore mowi, ze nigdzie w swoim programie nie wywolujesz
funkcji "wyswietl". I faktycznie w zamieszczonym listingu nie ma tego
wywolania.
pozdrawiam
JD
Dominik
Guest
Fri Nov 19, 2004 9:53 pm
Quote:
To jest ostrzezenie, ktore mowi, ze nigdzie w swoim programie nie
wywolujesz
funkcji "wyswietl". I faktycznie w zamieszczonym listingu nie ma tego
wywolania.
pozdrawiam
JD
Fakt, w calym zamieszaniu mialem je przez chwile pominiete. Ale zauważylem
inna rzecz Jezeli w petli while(1) wpisze:
P0=SekundyJedn;
P1=SekundyDzies;
P2=MinutyJedn;
P3=MinutyDzies;
i nie wywoluje wyswietl() to czas odmierza mi prawidlowo. Jezeli dodam 1 lub
wiecej wywolan wyswietl(); to proporcjonalnie mi przyspiesza. Moze, po
prostu keil zle symuluje procesor? Wczesniej nie mialem takich problemow, a
niestety nie mam mozliwosci wgrania hexa do uC i sprawdzenia jak to by
dzialalo w rzeczywistosci.
Pozdrawiam
Dominik
Zbych
Guest
Sun Nov 21, 2004 10:51 pm
Pewnego dnia A.Grodecki przemówił ludzkim głosem:
Quote:
A używanie C ma PODOBNO życie upraszczać...
I upraszcza ! Tylko jak każdym narzędziem tak i c trzeba umieć się
posługiwać i kontrolować to co wypluwa z siebie kompilator.
--
*Warning*: Dates in Calendar are closer than they appear.
### /mail: bzb<at>poczta<dot>onet<dot>pl/ ###
Dominik
Guest
Thu Nov 25, 2004 10:37 pm
Dla potomnych - to byla wina Keila, czyli nie zawsze warto sugerowac sie
symulatorami. W rzeczywistosci, na procku program chodzil ok.
Pozdrawiam
Dominik