 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
marko11 Član



Pridružen-a: Ned 14 Dec 2003 17:47 Prispevkov: 893 Aktiv.: 3.77 Kraj: Dobrepolje
|
Objavljeno: Tor Avg 10, 2004 4:36 pm Naslov sporočila: Prekinitev v BASCOM |
|
|
Pozdrav!
V Bascom8051 sem napisal spodnji programček. Rad pa bi napravil prekinitev, ko
pritisnem na Tipko2 v bilo katerem trenutku, da bi se If Tipka1 program ustavil-končal, ter se izvedel drugi del programa, naprimer , da postavi port P3.3 = 0.
Kako napisati ta del programa?
Koda: |
Tipka1 Alias P3.0
Tipka2 Alias P3.1
Do
If Tipka1 = 0 Then
P3.3 = 1
Wait 5
P3.3 = 0
End if
Loop
|
LP,marko _________________ Če ne veš kam greš, se ne moreš zgubiti. |
|
Nazaj na vrh |
|
 |
marko11 Član



Pridružen-a: Ned 14 Dec 2003 17:47 Prispevkov: 893 Aktiv.: 3.77 Kraj: Dobrepolje
|
Objavljeno: Sre Avg 11, 2004 8:35 pm Naslov sporočila: |
|
|
Probal sem še tako kot je spodaj napisan program, pa ko pritisnem Tipko1 bi se morala izvest prekinitev v Do Loop zanki, pa se NIČ ne zgodi, kje sem napravil napako? Uporabljam procesor AT89c2051.
LP,marko
Koda: |
------------------------------------------------------------
Enable Interrupts
On Int0 Tipka
Enable Int0
Tipka1 Alias P3.0
Tipka2 Alias P3.2
Do
If Tipka2 = 0 Then
P3.3 = 0
Wait 5
P3.3 = 1
End If
Loop
End
Tipka:
Disable Int0
If Tipka1 = 0 Then
P3.4 = 1
P3.5 = 0
End If
Enable Int0
Return |
_________________ Če ne veš kam greš, se ne moreš zgubiti. |
|
Nazaj na vrh |
|
 |
G-Lab Član


Pridružen-a: Sob 12 Jul 2003 9:44 Prispevkov: 179 Aktiv.: 0.76 Kraj: Jesenice
|
Objavljeno: Sre Avg 11, 2004 11:17 pm Naslov sporočila: |
|
|
Če hočeš Pri Atmelu uporabljati vhode, tipka ali kaj drugega moraš najprej na pine vpisati 1. Ko je tipka pritisnjena steče mislim da 18mA, pri tem se napetost na izhodu sesede in zaznaš kot logično 0, če tipka ni sklenjena pa dobimo logično 1(seveda dobiš negirana stanja). Omenil bi še tole, če želiš uporabiti pine P1.0, P1.1 kot vhode, moraš obvezno vezati zunanje pull-up upore, ker sta pri procesorju AT89C2051 ta 2 pina uporabljena kot vhoda komparatorja in zato ni pull-up uporov vezanih že znottraj uP, kot na ostalih pinih.
Svetoval bi, da pred branjem tipke postaviš Tipka1=1 in Tipka2=1 potem pa prebereš tipke.
LP |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3359 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Čet Avg 12, 2004 12:16 pm Naslov sporočila: Prekinitve |
|
|
Stvari, ki jih lahko naredimo v zanki glavnega programa, ne delajmo s prekinitvami. Če se zanka glavnega programa dovolj hitro odvija, ni razloga, da uporabljamo prekinitve.
Prekinitve se uporabi takrat, ko je nujno takoj obdelati nek dogodek, (recimo pritisk na tipko), in prekiniti zanko glavnega programa, ki sicer počne nekaj drugega.
Tipičen primer prekinitve je serijska prekinitev pri komunikaciji preko serijskega (kako se reče slovensko bufferja) buferja. Prebrani znak je potrebno takoj spraviti na varno, sicer ga izgubimo, ali pa izgubimo znak ki prihaja za njim.
Ker je komunikacija nekaj, kar mikro dela, kot 'postransko' nalogo, sicer pa nadzoruje in upravlja po svoji logiki, zanka glavnega programa opravlja primarno nalogo mikroprocesorja, prekinitvena rutina ob prihodu znaka iz linije prekine delo glavnega programa, spravi znak, in če je to zadnji znak komandnega telegrama, ki predstavlja ukaz, ki ga mora mikroprocesor izvesti, postavi zastavico (bit), ki je ciklično izpraševan v zanki glavnega programa. Ko tako glavni program opazi, da je ukaz v celoti sprejet, zanka glavnega programa obdela sprejeti telegram.
Vilko |
|
Nazaj na vrh |
|
 |
marko11 Član



Pridružen-a: Ned 14 Dec 2003 17:47 Prispevkov: 893 Aktiv.: 3.77 Kraj: Dobrepolje
|
Objavljeno: Ned Avg 15, 2004 12:18 pm Naslov sporočila: |
|
|
Živjo
Sem že rešil problem. Tipka1 mora biti definirana na P3.2(INT0).
Pravilen izpis kode:
Koda: |
Enable Interrupts
On Int0 Tipka
Enable Int0
Tipka1 Alias P3.2
Tipka2 Alias P3.0
P3.4 = 1
P3.5 = 1
Do
If Tipka2 = 0 Then
P3.4 = 1
P3.5 = 1
P3.3 = 0
Wait 5
P3.3 = 1
End If
Loop
End
Tipka:
Disable Int0
If Tipka1 = 0 Then
P3.3 = 0
P3.4 = 0
P3.5 = 0
End If
Enable Int0
Return |
_________________ Če ne veš kam greš, se ne moreš zgubiti. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Avg 15, 2004 12:29 pm Naslov sporočila: |
|
|
Marko11,
Za izpis kode na forum lahko uporabiš gumbek "Code" Izpis je bistveno preglednejši  _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
|
|
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 Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|