Jak efektywnie wprowadzić opóźnienie w programie dla AT89C52 z użyciem nop?
keil i nop'y - problem.
From: "InFix" <infix_at_nospam_poczta.onet.pl>
Subject: keil i nop'y - problem.
Date: Wed, 10 Sep 2003 20:52:11 +0200
potrzebowalbym zatrzymac program na chwile. Nie bardzo chcialbym realizowac
to przez liczniki wiec chcialem to zrobic tak:
delay(int ile){
int i = 0;
int k = 0;
int j = 0;
for (i=255; i==0; --i){
for (k=0; k==255; k++){
for (j=0; j==255; j++){
nop ();
nop ();
nop ();
nop ();
}
}
}
}
To juz po przerobkach poczatkowo przy pierwszej petli bylo:
for (i=ile; i==0; --i){
...
kwarc 11.0592 procesor AT89C52
wszystko kompiluje sie prawidlowo, ale mimo wywolania procedury program sie
nie zatrzymuje. (wg. moich obliczen taka procedura powinna zatrzymac sie na
15-30sek? Czy to sie liczy tak?: 1/11059200 * takt_na_cykl (ZTCP 6?)* ilosc
nopow? = czas w sekundach?)
Moze problemem jest z optymalizacja? Wszystko mam ustawione domyslnie.
pozdrawiam,
bartek.
========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!not-for-mai
From: "entroper" <entroper_at_nospam_CWD.spamerom.poczta.onet.pl>
Subject: Re: keil i nop'y - problem.
Date: Wed, 10 Sep 2003 21:17:52 +0200
InFix napisał(a) w wiadomości: ...
potrzebowalbym zatrzymac program na chwile. Nie bardzo chcialbym realizowac
to przez liczniki wiec chcialem to zrobic tak:
delay(int ile){
int i = 0;
int k = 0;
int j = 0;
for (i=255; i==0; --i){
for (k=0; k==255; k++){
for (j=0; j==255; j++){
nop ();
nop ();
nop ();
nop ();
}
}
}
}
w petli for drugi element to warunek kontynuacji petli.
powinno byc na przyklad for(i = 0; i < 255; i++)
oczywiscie nalezy uwazac na wpadki typu i >= 0 lub i <= 255 (jesli dana jest
jednobajtowa)
entrop3r
========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Krzysztof Skoroniak" <ananass_at_nospam_wpp.pll>
Subject: Re: keil i nop'y - problem.
Date: Wed, 10 Sep 2003 22:47:56 +0200
Użytkownik "entroper" <entroper_at_nospam_CWD.spamerom.poczta.onet.pl> napisał w
wiadomości news:bjnssk$evg$1_at_nospam_SunSITE.icm.edu.pl...
InFix napisał(a) w wiadomości: ...
potrzebowalbym zatrzymac program na chwile. Nie bardzo chcialbym
realizowac
to przez liczniki wiec chcialem to zrobic tak:
delay(int ile){
int i = 0;
int k = 0;
int j = 0;
for (i=255; i==0; --i){
for (k=0; k==255; k++){
for (j=0; j==255; j++){
nop ();
nop ();
nop ();
nop ();
}
}
}
}
w petli for drugi element to warunek kontynuacji petli.
powinno byc na przyklad for(i = 0; i < 255; i++)
oczywiscie nalezy uwazac na wpadki typu i >= 0 lub i <= 255 (jesli dana
jest
jednobajtowa)
jeszcze jedno bym dodal ze nigdzie w ciele procedury nie
wykorzystujesz przekazywaneog parametru, to wprawdzie
na pewno nie ma znaczenia ze procedura Ci nie zatrzymuje
programu ale taka mala uwaga, a to ze program sie nie
zatrzymuje to jak najbardziej z powodu takiego jak przedstawil
kolega powyzej, te nopy nie zostana wykonane ani razu
pamietaj kolejnosc wykonywania instrukcji w petli for jest
taka:
1. inicjalizacja zmiennej interacyjnej
2. sprawdzenie warunku
3. jesli jest prawdziwy to wykonanie ciala petli, zmiana wartosci
zmiennej interacyjnej a nastepnie powrot do pk. 2
4. jesli sie nie zgadza to wyjscie za petle
pozdr
Krzysztof
========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai
From: "InFix" <infix_at_nospam_poczta.onet.pl>
Subject: Re: keil i nop'y - problem.
Date: Wed, 10 Sep 2003 23:18:13 +0200
</ciach>
jeszcze jedno bym dodal ze nigdzie w ciele procedury nie
wykorzystujesz przekazywaneog parametru, to wprawdzie
na pewno nie ma znaczenia ze procedura Ci nie zatrzymuje
</ciach>
Zaznaczylem w wiadomosci, ze poczatkowo bylo inaczej:
for (i=ile; i==0; --i){
ale powycinalem wszystko to co wydawalo mi sie podejzane.
dzieki za odpowiedzi!
pozdrawiam,
Bartek.
========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!news2.icm.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Krzysztof Skoroniak" <ananass_at_nospam_wpp.pll>
Subject: Re: keil i nop'y - problem.
Date: Thu, 11 Sep 2003 00:12:16 +0200
Użytkownik "InFix" <infix_at_nospam_poczta.onet.pl> napisał w wiadomości
news:bjo4mp$ju6$1_at_nospam_news.onet.pl...
Zaznaczylem w wiadomosci, ze poczatkowo bylo inaczej:
for (i=ile; i==0; --i){
ale powycinalem wszystko to co wydawalo mi sie podejzane.
no tak sorki nie zauwazylem tego jakos po prostu patrzylem
na sam kod :-)
pozdr
Krzysztof
========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.gazeta.pl!wsisiz.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai