|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
s56wie Profesionalec
Pridružen/-a: Ned Apr 2004 0:17 Prispevkov: 54
|
Objavljeno: Sre Dec 29, 2010 2:00 pm Naslov sporočila: Definicija Interrupt vektorja v Bascom-8051 |
|
|
V Bascom-8051 koda:
On Serial Serrut
ustvari ASM kodo:
ORG 23h
LJMP Serrut
Mikrokontroler DS89C450 ima tudi drugi UART.
Interrupt se sproži na naslovu 3Bh. Ker Bascom-8051 te prekinitve ne podpira, bi jo moral definirati sam.
Torej bi v Bascom-8051 moral vpisati ASM kodo:
ORG 3Bh
LJMP Serrut2
Da bi se v primeru prekinitve izvedel podprogram Serrut2.
Toda BASCOM-8051 ASM ORG ne spusti.
Prosim za pomoč, kako to storiti.
Za zgled bi bilo zelo primerno, da bi v BASCOM-8051 namesto
On Serial Serrut - uporabil ASM kodo.
Hvala!
Gregor |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Ned Jan 02, 2011 6:50 pm Naslov sporočila: |
|
|
Assembler koda, ki jo vlkjučiš v Bascom prevajalnik program, lahko vsebuje le omejeno število assemblerskih vragolij, ki si jih sicer privoščiš v Assembler prevajalniku.
ORG pravzaprav ni izvršilna instrukcija, temveč navodilo prevajalniku, da kar bo sledilo spada na v ORG navodilu omenjeni naslov.
Izvršilne assemblerske instrukcije pa lahko vključiš v Bascom program. To je pred vsem namenjeno, kot dopolnilo bascomovim izvršilnim instrukcijam.
Predpostavljam, da ti bi rad v teku programa spreminjal naslov prekinitvenega podprograma, enkrat podprogram A, drugič podprogram B.
Priporočam, da namesto le tega definiraš zastavico (bit ali byte spremenljivko) in jo po potrebi nastavljaš v glavnem programu, v prekinitvenem podprogamu pa z SELECT CASE izbereš tisti del podprograma, ki naj naredi potrebno. _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
Nazaj na vrh |
|
|
s56wie Profesionalec
Pridružen/-a: Ned Apr 2004 0:17 Prispevkov: 54
|
Objavljeno: Tor Jan 04, 2011 6:02 pm Naslov sporočila: |
|
|
Vilko hvala za odgovor, ampak to ni to.
Kontroler DS89C450 ima dva UART-a.
Prekinitveni podporgram za prvi UART ni problematičem, saj lahko z kodo: On Serial Serrut ukažem bascomu, kateri del kode se naj izvede,
ko se zgodi interrupt. Torej bo ob prekinitvi skočil na Serrut.
Moja težava je v tem, da nevem kako naj bascomu ukažem, kateri del kode naj se izvede, ko se zgodi interrupt za drugi UART. Ob tej prekinitvi se bi moral izvesti drugi podprogram.
Za interrupte, ki jih bascom direktno podpira je stvar zelo enostavna:
On Int1 Prekinitev1
On Int0 Prekinitev0
On Serial Serrut
Potreboval bi On Serial2 Serrut2. Tega drugega porta za ta mikrokontroler, pa bascom ne podpira, zato me zanima, kako bi kljub temu ta port vključno z interrupt vektorjem uporabil v bascomu! |
|
Nazaj na vrh |
|
|
vilko Profesionalec
Pridružen/-a: Pon Jan 2004 11:54 Prispevkov: 807 Kraj: Ljubljana
|
Objavljeno: Tor Jan 04, 2011 7:21 pm Naslov sporočila: |
|
|
Ajaj, na to še nisem naletel.
Izgleda, da tudi moj bascom8051 pozna samo en uart, je pa res, da ga že doglo nisem pomladil.
Uart2 uporabljam na Bascomavr že nekaj časa brez problema.
morda bi veljalo vprašanje postaviti na MCS forum
http://www.mcselec.com/index2.php?option=com_forum&Itemid=59 _________________ Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih. |
|
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 You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|