Pomoc oko BASCOM-a

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
hahn1989
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 23-12-2007, 22:13

Pomoc oko BASCOM-a

Post by hahn1989 »

Pozdrav...evo vako.....budući da sam u povojima šta se tiče BASCOMa, neznam koju naredbu koristit za sljedeću situaciju...

Kada se na pinu P3.4 stisne tipkalo, ukoliko je na pinu P1.0 "0" tada je na P1.1 "1", ukoliko P1.0 nije "0" u trenutku pritiskanja tipkala tada je P1.1 "0"....

Nadan se da ste razumili :D

BTW...koristim BASCOM 8051 :)
O Hajduče ja te volim i za te' se Bogu molim, da ti zora sretna svane....
zubagonivincenta
Napredujem
Napredujem
Posts: 120
Joined: 14-06-2006, 18:03

Post by zubagonivincenta »

Nadan se da ste razumili :D
Nismo baš razumili, ali to bi moglo biti to

Do
Debounce P3.4 , 0 , Promjena_stanja
Loop
'
Promjena_stanja:
If P1.0 = 0 Then
P1.1 = 1
Else
P1.1 = 0
End If
Return

:lol:
hahn1989
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 23-12-2007, 22:13

Post by hahn1989 »

Problem +..:D

Na port 1 san priključija LED (8 komada), na port 3 sam priključija još 4 LED i 2 tipkala....dakle...

P1.0=LED
P1.1=LED
P1.2=LED
P1.3=LED
P1.4=LED
P1.5=LED
P1.6=LED
P1.7=LED
P3.0=LED
P3.1=LED
P3.2=LED
P3.3=LED
P3.4=tipkalo
P3.5=tipkalo
P3.7= prazno

Ako je program sljedeći:

$crystal=12000000
do

P1.0=1
P1.1=1
P1.2=1
P1.3=1
P1.4=1
P1.5=1
P1.6=1
P1.7=1
P3.0=1
P3.1=1
P3.2=1
P3.3=1

if P3.4=1 then
P1.0=0 else
P1.0=1
end if
loop
end

Kako sad taj program napisat u obliku:

$crystal=12000000
do

P1=&B11111111
P3=&B1111??0

(...)
end

Šta da stavin na mjesto upitnika budući da je to namjenjeno tipkalima...neznan kako objasnit...nadan se da ste skužili...
O Hajduče ja te volim i za te' se Bogu molim, da ti zora sretna svane....
zubagonivincenta
Napredujem
Napredujem
Posts: 120
Joined: 14-06-2006, 18:03

Post by zubagonivincenta »

Šta da stavin na mjesto upitnika budući da je to namjenjeno tipkalima...neznan kako objasnit...nadan se da ste skužili...
Ne može kako si ti zamislio. Kako si ti napisao, vrata P1 i P3 definirana su kao izlazna. Ne možeš ista vrata istovremeno definirati kao izlazna i ulazna.

Može ovako:

$crystal = 12000000
Do
P1 = &B11111111
P3 = &B11110000
If P3.4 = 1 Then
P1.0 = 0
Else
P1.0 = 1
End If
Loop
irfaga
Posts: 5
Joined: 26-01-2008, 17:54

Post by irfaga »

Ne vidim na 8051-arhitwkturi zasto jedan pin ne moze istovremeno biti i ulaz i izlaz.
Ako trebas istovremeno postaviti stanje citavoga porta, a to je cini mi se, namjera, a da ne mijenjas stanje na pinovima na kojima su tasteri, koristi log. operaciju OR.
Dakle,

p1=p1 or &b11111111
p3=p3 or &b11110011
.....
end
pozz.
zubagonivincenta
Napredujem
Napredujem
Posts: 120
Joined: 14-06-2006, 18:03

Post by zubagonivincenta »

Ne vidim na 8051-arhitwkturi zasto jedan pin ne moze istovremeno biti i ulaz i izlaz.
Ja vidim. Da napišem, onako seljački. Odaberi recimo pin P1.0. Da bi taj pin glumio ulaz spoji ga s tipkalom. Drugi kraj tipkala spoji na masu. Na isti taj pin, dakle P1.0, da bi istovremeno glumio izlazni, spoji u seriju s otpornikom ledicu također na masu.
Kad držiš pritisnuto tipkalo pin P1.0 kao ulazni čita logičku ništicu, jer tipkalo taj ulazni pin spaja na masu. Kako ti vidiš, taj bi isti pin, dakle P1.0, istovremeno mogao biti izlazni, što znači da bi on prema masi mogao imati istovremeno i napon 0 V (ledica ne bi svijetlila) i napon 5 V (ledica bi trebala svijetliti), tj. istovremeno i logičku ništicu i logičku jedinicu, ovisno o tome kako se napiše program????
hahn1989
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 23-12-2007, 22:13

Post by hahn1989 »

Mene samo zanima može li jedan PORT (a ne pin) istovremeno bit ulazni i izlazni.....kako kažete očito ne može...ok ...tnx :D
O Hajduče ja te volim i za te' se Bogu molim, da ti zora sretna svane....
zubagonivincenta
Napredujem
Napredujem
Posts: 120
Joined: 14-06-2006, 18:03

Post by zubagonivincenta »

Mene samo zanima može li jedan PORT (a ne pin) istovremeno bit ulazni i izlazni
Da ne bi bilo nesporazuma. Dio porta možeš definirati kao ulazni, a drugi dio kao izlazni, dakle neke od pinova definiraš kao ulazne, a druge kao izlazne.
hahn1989
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 23-12-2007, 22:13

Post by hahn1989 »

zubagonivincenta wrote:
Nadan se da ste razumili :D
Nismo baš razumili, ali to bi moglo biti to

Do
Debounce P3.4 , 0 , Promjena_stanja
Loop
'
Promjena_stanja:
If P1.0 = 0 Then
P1.1 = 1
Else
P1.1 = 0
End If
Return

:lol:
Fala kralju...

Gle sad ovo:

$crystal=12000000
Do

P1 = &B10101010
Wait 10
P1 = &B01010101
Wait 10

Debounce P3.4 , 0 , Tipkalo , Sub

Tipkalo:
P1 = &B00000000
Wait 10
Return
Loop
End

Želim da se LEDice palu po programu, a ako se stisne tipkalo onda upada potprogram i kad završi vraća se normalan program....kako da sredin to..je po ovom upalu se parne (10 sekunda), pa neparne (10 sekunda), pa se sve pogasu (10 sekunda), pa opet parne,....itd

EDIT: Sređeno :)
O Hajduče ja te volim i za te' se Bogu molim, da ti zora sretna svane....
irfaga
Posts: 5
Joined: 26-01-2008, 17:54

Post by irfaga »

Hm, malo kasnim ali ipak da ne ostane nedoreceno.
Prvo: P1.0 i p1.1 kod 89c2051, su ulazi komparatora i NEMAJU ugradjene pull-up otpornike stoga ukoliko se isti ne dodaju izvana mogu samo davati log.0 na izlazu.

Drugo: 8051 arhitektura u stanju log.1 daje struju reda uA pa ne moze u tom stanju izravno pogoniti trosila kako ti ocekujes, a probaj na takav nacin kako opisujes spojiti tipkalo prema masi a recimo, NPN tranzistor sa ledicom prema + i dodaj pull-up otpornik od recimo 2.2k pa ces vidjeti da moze istivremeno biti i ulaz i izlaz.
hahn1989
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 23-12-2007, 22:13

Post by hahn1989 »

Help...

Recimo da imamo semafor...
P1.0 - crveno
P1.1 - žuto
P1.2 - zeleno

...imamo i tipkalo na pinu P3.4....

ako stisnemo tipkalo kada svijetli crveno izvede se određen podprogram, ako svijetli žuto i stisnemo tipkalo odradi se neki drugi podprogram, itd.

Kako da napišem program da izvede neki podprogram ovisno o tome koji je uvjet zadovoljen (crveno, žuto ili zeleno)

oće radit debounce pa u podprogramu
if p1.0=1 then
-nešto-
end if
if p1.1=1 then
-nešto 2-
end if
if p1.2=1 then
-nešto 3-
end if
O Hajduče ja te volim i za te' se Bogu molim, da ti zora sretna svane....
irfaga
Posts: 5
Joined: 26-01-2008, 17:54

Post by irfaga »

hoce raditi. Pretpostavimo da je sa "0" upaljeno pojedino svjetlo na semaforu. Tada mozes pisati slijedeci program:

do
debounce p3.4,0,pritisnut_taster,sub
loop

pritisnut_taster:
if p1.0=0 then
nesto uradi za crveno
elseif p1.1=0 then
nesto uradi za zuto
elseif p1.2=0 then
nesto uradi za zeleno
end if
return
hahn1989
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 23-12-2007, 22:13

Post by hahn1989 »

Pokuša san stari al dešava se to da se izvrši "nešto za zeleno" kada je bilo koji uvjet zadovoljen...bar je u simulaciji tako

EDIT: Može li mi netko objasni kako se točno koristi #IF jer se u helpu baš i ne snalazin :D
O Hajduče ja te volim i za te' se Bogu molim, da ti zora sretna svane....
hahn1989
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 23-12-2007, 22:13

Post by hahn1989 »

Dakle....debounce pribaci u podprogram tek kad je strelica(ona u simulatoru) na njemu.....dakle...uvjek je onaj zadnji uvjet zadovoljen kad debounce provjerava tipkalo i uvjek se izvrši "ono za zeleno".....hitno bi mi tribala pomoć.... hoće li tako biti i u praksi...
O Hajduče ja te volim i za te' se Bogu molim, da ti zora sretna svane....
skykeptn
Posts: 1
Joined: 27-05-2008, 13:54
Location: Imotski

problemski dio 1

Post by skykeptn »

haj društvo, dolazim iz Imotskog, i u zadnje vrijeme posato sam fan programiranja mikrokontrolera, i sami znate kako to može biti zarazno, pogodotvo kad se uhvatite ovako u koštac sa problemom vrlo viskog stupnja kako što je moj....

...radim na jednom projektu kojeg možete isprobati u virtualnom obliku, naime taj sustav prenio sam u sklopove i sad me interesira jedan dio tog programa,
http://supermoto-si.com/index.php?optio ... id=2&gid=5

on svakim resetiranjem programa zadaje nove , svježe kombinacije boja, to ne mogu dokučit. ima li ko kakvu ideju kako izvesti ovaj program u bascomu.
hahn1989
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 23-12-2007, 22:13

Post by hahn1989 »

OK, sve riješeno...

Mogu li na AT 89C2051 pinove za interrupt TIMER0 i TIMER1 koristiti na način kao i INT0 i INT1 budući da su potonji već zauzeti, a trebaju mi 2 interrupta....
O Hajduče ja te volim i za te' se Bogu molim, da ti zora sretna svane....
Post Reply