Onko hyviä vinkkejä kuinka tehdä delay silmukka assemblerillä? Esim jos haluaa 1 sek viive. ja piiri on 4Mhz
ASSEMBLERILLA delay?
Kelloseppä
71491
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 7
Vanhimmat
Väärä palsta.
Joku vois kuitenkin alkaa siitä mitä assembler komentoja kyseiseen looppiin tarvitaan ja laskea niiden viemät kellojaksot..
fiksu käyttää timereita
Minnekköhän tämän olisi muualle voinut laittaa? ajattelin, että kun jos joku osaa c-ohjelmointia, niin kyllä hän osaa myös assembleria, mutta taisin olla väärässä. Anteeksi kauheasti jos vaivasin :-(
Kyllä c-palsta on lähinnä asm koodia tarjolla olevista vaihtoehdoista.
Jos haluut koodata timerin ja käytössä on ohjelmoitavat interruptit niin tee niiden avulla ihmeessä. Ellei ole niin aja vaikka jotain käskyä sopivan kauan luupissa (luuppien määrä: niin monta kertaa kuin haluat kuluttaa ajattuna jattuna sillä ajalla jonka yksi luuppi vie aikaa)
Jep, se looppi on mielessä, mut yksi käsky kestää 1 mikro sek, niin jos haluaa sekunnin viiveen, niin 1000 000 riviö nop-käskyä :-)
Koitan jotain kikkailla, kiitos, kiitos.
no niin 1000 000 riviö nop-käskyä ei ole looppi, vaan tee oikea looppi, eli annat rekisteriin lasketun arvon mitä se sekunnin viive vaatii, ja ajat sen. Mutta tämähän ei ole oikea tapa tehdä viive, koska haukkaa prossutehoa, oikea on ohjelmoida keskeytys (oletan että teet PC:n tätä), tämän voi varmaan tehdä C kielellä... jota minä ymmärrän tasan yhtä paljon kun Bushmanni naisten vapautusliikkeestä.
... Niin tällanen timer-juttu muistaakseni toimi:
void foursec_delay(void)
{
unsigned long preTime;
preTime = *systemTimer;
while((preTime 73) > *systemTimer) //odotetaan 73/18.2= 4 sekuntia
{
}
}