Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

kako narediti Interrupt

 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Za začetnike
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
malovrh4
Mojster


Pridružen/-a: Sob Sep 2007 21:14
Prispevkov: 22
Kraj: Polhov Gradec

PrispevekObjavljeno: Pon Sep 17, 2007 9:08 pm    Naslov sporočila: kako narediti Interrupt Odgovori s citatom

Zanima me naslednje, zakaj mi hardware prekinitev tako kot je napisana spodaj deluje samo enkrat,
pri ponovni postavitvi pina P3.2 (ki je pri at89c52 definiran kot INT0) pa se ne zgodi nič.

Kako bi napisal program, da bi se ob vsaki prekinitvi začel izvajati določen podprogram (recimo krit:), neglede na to, kje bi se izvajal ostali program


'centralna.bas

dim a as byte .......itd.

Enable Interrupts
Enable Int0
On Int0 Krit 'ko je temperatura v kotlu kritična

do
... ' glavni del programa
zac2:
...
loop


Krit:

Cls
Lcd "tempertura kriticna"
Do
P2.0 = 0
P2.1 = 0
P2.2 = 0

If P0.2 = 0 Then
Locate 1 , 1
Lcd "nazaj "
P2.0 = 1
P2.1 = 1
P2.2 = 1

Goto Zac2
End If
Loop


lp
uroš
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
dkone
Profesionalec


Pridružen/-a: Sob Dec 2005 17:03
Prispevkov: 176
Kraj: Krško

PrispevekObjavljeno: Pon Sep 17, 2007 9:23 pm    Naslov sporočila: Odgovori s citatom

A imaš pull up upor na INT0?
_________________
Lp,Denis
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
malovrh4
Mojster


Pridružen/-a: Sob Sep 2007 21:14
Prispevkov: 22
Kraj: Polhov Gradec

PrispevekObjavljeno: Pon Sep 17, 2007 9:30 pm    Naslov sporočila: Odgovori s citatom

Da, 47kR, napetost se lepo postavi nazaj na 4,99V

lp
uroš
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Jure
Urednik


Pridružen/-a: Pon Jan 2004 12:51
Prispevkov: 2132
Kraj: Ljubljana

PrispevekObjavljeno: Tor Sep 18, 2007 7:17 am    Naslov sporočila: Odgovori s citatom

Uroš,

poglej si program. V prekinitveni rutini ti manjka stavek Return. Nadalje si v prekinitveni rutini uporabil Goto stavek - ki te vrže ven iz rutine in potem pristaneš v programu nekje naključno. Ker imaš Do-Loop stavek v rutini moraš na nek način priti ven iz tega. Jaz se izogibam Do-Loop v prekinitvenih rutinah - razen če lahko narediš tako, da napišeš Loop until (pogoj - recimo P0.2=0). Popravi to troje.

Lp
Jure
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Sre Sep 19, 2007 3:12 am    Naslov sporočila: Če že hočeš. Odgovori s citatom

Če že hočeš. potem seveda lahko delaš tudi z interruptom, tako za šolo programiranja.
Sicer pa je bi jaz tak problem rajši reševal v glavni zanki, saj reakcija ni nujno tako zelo hitra, da bi bi morali v ta namen prekiniti zanko glavnega programa.
Interrupt se uporablja za nujne zadeve, kadar je glavni program zelo zaseden z drugim delom, recimo, če je treba prestreči kak signal, ki traja silno kratek čas, in bi ga 'preslišali', če bi ga analizirali samo občasno v glavni zanki z IF.

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
malovrh4
Mojster


Pridružen/-a: Sob Sep 2007 21:14
Prispevkov: 22
Kraj: Polhov Gradec

PrispevekObjavljeno: Čet Sep 20, 2007 7:42 pm    Naslov sporočila: Odgovori s citatom

Zadeva rešena in že deluje po načrtih. Upošteval sem Juretov nasvet in predelal rutino tako da sem vstavil že ukaz Return in do-loop - until.

Za interrupt sem se odločil, ker glavni program teče v dveh ali več različnih zankah in se mi je zdelo enostavneje uporabiti interrupt,
pa še malo sem se zraven tega naučil

hvala vsem za pomoč in se priporočam še za naprej
lp
uroš
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Za začetnike Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group