|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.64 Kraj: Mengeš
|
Objavljeno: Pet Dec 25, 2009 7:52 pm Naslov sporočila: |
|
|
Je, je...
en primer:
If K = 4 Or K = 5 Or K = 6 Then
Locate 4 , 1
itd... |
|
Nazaj na vrh |
|
|
klemen88 Član
Pridružen-a: Tor 01 Jan 2008 17:37 Prispevkov: 747 Aktiv.: 3.76 Kraj: Slovenj Gradec
|
Objavljeno: Pet Dec 25, 2009 7:57 pm Naslov sporočila: |
|
|
protoncek je napisal/a: |
Je, je...
en primer:
If K = 4 Or K = 5 Or K = 6 Then
Locate 4 , 1
itd... |
Ti si dal ALI funkcijo! Za AND funkcijo je pa :
IF K=4 AND L=4 THEN
SET XXX
END IF
linel je napisal/a: |
zanima me,kako se naredi, da se dogodek izvrši če npr gledamo dva pogoja
if pina.0 and pina.1 = 1 then
portc = 1
vendar v bascomu nisem zasledil ukaza and, kako vi naredite v tem primeru? |
Pri tebi je problem ker moreš za vsak pin napisat kdaj je pogoj izpolnjen!
if pina.0 = 1 and pina.1 = 1 then
portc = 1
end if |
|
Nazaj na vrh |
|
|
protoncek Član
Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 45.64 Kraj: Mengeš
|
Objavljeno: Pet Dec 25, 2009 8:03 pm Naslov sporočila: |
|
|
Ja, vem...AND ali OR je itak podobno, torej so tudi ukazi enaki. Jaz sem samo prilepil primer. |
|
Nazaj na vrh |
|
|
linel Član
Pridružen-a: Čet 06 Mar 2008 21:14 Prispevkov: 178 Aktiv.: 0.91 Kraj: prekmurje
|
Objavljeno: Pet Dec 25, 2009 8:30 pm Naslov sporočila: Programiranje v bascom avr |
|
|
to zdaj dela... zdaj me še pa zanima kako bu naredil podmeni..
npr. v prvi vrstici bi hodil med različnimi besedilami, temperatura - vlažnost - ventilator.... to mi sicer dela, nevem pa kako bi potem prišel v podmeni da bi se ob pritisku na tipko potrditev še zraven v drugi v drugi vrstici pojavilo nekaj takšega seveda na lcd 2x16 :
<ventilator>
*vklop izklop
za glavni meni imam eno spremenljivko in glede na vrednost te spremenljivke se izpisujejo besedila.. to dela.. neven pa kako bi naredil za pod meni, kaj svetujete? in seveda npr ob pritisku tipke nazaj bi skočil v glavni meni, besedilo v drugi vrstici se izbriše. kako ste vi kaj izvedli menuje? |
|
Nazaj na vrh |
|
|
robika Član
Pridružen-a: Pon 05 Apr 2004 20:55 Prispevkov: 270 Aktiv.: 1.21 Kraj: ajdovščina
|
Objavljeno: Pet Dec 25, 2009 9:16 pm Naslov sporočila: |
|
|
Bascom pozna "and" in "or". Uporabi in prevedi, pa boš videl, da ne se ne bo pritožil, pa tudi upošteval bo. Res pa v helpu ni nikjer omenjeno. |
|
Nazaj na vrh |
|
|
Collat3ral Član
Pridružen-a: Pon 07 Dec 2009 20:40 Prispevkov: 27 Aktiv.: 0.15 Kraj: Velenje
|
Objavljeno: Pet Jan 01, 2010 9:21 pm Naslov sporočila: |
|
|
Da ne bom nove teme odpiru, bom kr semle napisal.
Torej zanima me, kako v Bascom AVR dobim čas, kako dolgo je bil kontakt na vhodu.
Torej če stisnem gumb in ga držim X sekund, kako dobim tist X v programu, da ga uporabljam za ostale funkcije.
LP |
|
Nazaj na vrh |
|
|
fluffy111 Član
Pridružen-a: Sob 13 Dec 2008 21:44 Prispevkov: 351 Aktiv.: 1.88 Kraj: Ptuj
|
Objavljeno: Pet Jan 01, 2010 9:53 pm Naslov sporočila: |
|
|
Vklopiš timer, šteješ kolikokrat prešteje do konca, izračunaš v kakšem času pride do konca in zadevo izpišeš. Teoretično.
V praksi bi bilo malo drugače. Recimo:
enable intterupts
enable timer0
config timer0=timer,prescale=1
on timer0 pritinsnjena_tipka
dim stevec as byte
dim cas as long
stevec=0
do
loop
pritisnjena_tipka:
if tipka=1 then incr stevec
if tipka=0 then
*
'tukaj napišeš ukaz ki ga želiš izvršiti
stevec=0
end if
*Preračun časa je odvisen od vrednosti oscilatorja. Če imaš 4MHz quartz kristal, čas, ki ga porabi program da prešteje en cikel, dobiš po formuli 1/4'000'000. Če imaš večji quartz pa vpišeš ustrezno večjo cifro. Ko izračunaš to (mislim da pride nekje 0,00025s), potem to pomnožiš z številko, ki jo imas pod števcem. Mislim da zapišeš tako:
cas=0,00025x(število v števcu)
Ko si to rešil, si dobil čas v katerem si držal tipko.
Lahko pa pri prescale vpišeš večjo cifro. Npr. 1024. Če narediš to, ti šteje le vsak 1024-i signal in se cikel posledično podalša in števec potrebuje več časa, da prešteje do konca. Namesto timer0 lahko tudi uporabiš timer1, ki je 16 bitni, med tem ko je timer0 8 bitni.
Saj si želel to? |
|
Nazaj na vrh |
|
|
Collat3ral Član
Pridružen-a: Pon 07 Dec 2009 20:40 Prispevkov: 27 Aktiv.: 0.15 Kraj: Velenje
|
Objavljeno: Pet Jan 01, 2010 10:17 pm Naslov sporočila: |
|
|
Torej dejansko vsakič ko bo šel program čez zanko, bo povečal vrednost števca. Pol pa sam glede na vrednost oscilatorja dobiš koliko časa potrebuje program, da gre čez zanko. In iz tega dobiš čas.
Mislim prav?
LP |
|
Nazaj na vrh |
|
|
fluffy111 Član
Pridružen-a: Sob 13 Dec 2008 21:44 Prispevkov: 351 Aktiv.: 1.88 Kraj: Ptuj
|
Objavljeno: Pet Jan 01, 2010 10:21 pm Naslov sporočila: |
|
|
Da. Dobiš kolikokrat je šel čez zanko in to pomnožiš s časom, ki ga potrebuje za eno zanko.
Lp |
|
Nazaj na vrh |
|
|
fluffy111 Član
Pridružen-a: Sob 13 Dec 2008 21:44 Prispevkov: 351 Aktiv.: 1.88 Kraj: Ptuj
|
Objavljeno: Pet Jan 01, 2010 10:26 pm Naslov sporočila: |
|
|
Aja. Pozabil sem. Dodaj še:
Do
if tipka=1 then
start timer0
else
stop timer0
reset timer0
end if
Za to bi prosil nekoga, da popravi če je potrebno, ker nisem prepričan ali je možno tako.
Lp |
|
Nazaj na vrh |
|
|
LEDuser Član
Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.65 Kraj: Ljubljana
|
Objavljeno: Pon Jan 11, 2010 5:51 pm Naslov sporočila: |
|
|
Trenutno se mučim in iščem kako se izpiše binarno vrednost na LCD. Težava je taka, ko preberem vrednost na neki napravi preko SPI in to vrednost izpišem na LCD, mi izpiše decimalno jaz pa bi rad binarno. Kdo ve kako to storiti?
Koda: |
...
Reset Spi_cs
XX(1) = Spimove(&H02)
XX(2) = Spimove(&H00)
Set Spi_cs
Locate 1 , 1
Lcd XX(2)
...
|
_________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
|
rudiP Član
Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 6.06 Kraj: KOPER
|
Objavljeno: Pon Jan 11, 2010 6:55 pm Naslov sporočila: |
|
|
Lcd bin(XX(2))
če pa ne gre tako
pa:
a = XX(2)
lcd bin(a) _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
|
LEDuser Član
Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.65 Kraj: Ljubljana
|
Objavljeno: Tor Jan 12, 2010 9:26 am Naslov sporočila: |
|
|
Hvala sedaj deluje!
Ko sem poizkusil mi izpiše vrednost 123 in 01111011 kar je pravilno me pa malo čudi zakaj napiše 48 (v drugi vrstici) če v kodo vstavim drugo spremenljivko B = Bin(A) in v drugi vrstici izpišem samo B?
Koda: |
A = 123
Locate 1 , 1
Lcd A
Lowerline
Lcd Bin(A)
|
_________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
|
rudiP Član
Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 6.06 Kraj: KOPER
|
Objavljeno: Tor Jan 12, 2010 11:11 am Naslov sporočila: |
|
|
Ne vem zakaj si deklariral b=bin(a)?
b=a _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
|
kotnikd3 Neznanec
Pridružen-a: Sre 28 Apr 2010 16:42 Prispevkov: 5 Aktiv.: 0.03
|
Objavljeno: Sre Apr 28, 2010 10:14 pm Naslov sporočila: |
|
|
Pozdravljeni!
Učim se bascom osnove, pa me zanima, kako preverim če program dejansko deluje.
V simulatorju se mi ne prižge nobena ledica oz. lučka.
V programu naj bi ledica na portu utripala:
$regfile = "attiny26.dat"
$crystal = 4000000
Config Porta = Output
Do
Set Porta.0
Wait 1
Reset Porta.0
Wait 1
Loop |
|
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: 74 dni
Powered by phpBB © 2001, 2005 phpBB Group
|