Pomoc oko BASCOM-a
Moderators: pedja089, stojke369, [eDo], trax
Pomoc oko BASCOM-a
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
BTW...koristim BASCOM 8051
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
BTW...koristim BASCOM 8051
O Hajduče ja te volim i za te' se Bogu molim, da ti zora sretna svane....
-
- Napredujem
- Posts: 120
- Joined: 14-06-2006, 18:03
Problem +..
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...
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....
-
- Napredujem
- Posts: 120
- Joined: 14-06-2006, 18:03
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.Šta da stavin na mjesto upitnika budući da je to namjenjeno tipkalima...neznan kako objasnit...nadan se da ste skužili...
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
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.
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.
-
- Napredujem
- Posts: 120
- Joined: 14-06-2006, 18:03
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.Ne vidim na 8051-arhitwkturi zasto jedan pin ne moze istovremeno biti i ulaz i izlaz.
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????
-
- Napredujem
- Posts: 120
- Joined: 14-06-2006, 18:03
Fala kralju...zubagonivincenta wrote:Nismo baš razumili, ali to bi moglo biti toNadan se da ste razumili
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
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....
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.
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.
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
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....
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
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
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....
problemski dio 1
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.
...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.