skraceni kurs ucenja picbasica

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

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
User avatar
electron
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 225
Joined: 28-02-2009, 19:20
Location: Serbia

Re: skraceni kurs ucenja picbasica

Post by electron »

A ovaj deo koda

Code: Select all

for dminu=0 to minu
for dsec=0 to sec

if dsec=sec then  sec=0
if dminu=minu then minu=0
ce ipak morati neko da objasni i malo pojasni ?
User avatar
sindja1204
Odlično uznapredovao
Odlično uznapredovao
Posts: 792
Joined: 03-05-2009, 11:57
Location: Beograd

Re: skraceni kurs ucenja picbasica

Post by sindja1204 »

Ako izjednacis dsec i sec (dminu i minu) imaces onoliko for cikluca koliko si sekundi podesio. To bi bilo u redu samo u prvih 59 sekundi. Ako podesis npr 4sec. nakon odbrojavanja sekundi povecava se min za jedan, a sec se vraca na nulu, ali u sledecem ciklusu sekunde se broje opet samo do cetiri. Moras da menjas "nesto" u for naredbi...
User avatar
electron
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 225
Joined: 28-02-2009, 19:20
Location: Serbia

Re: skraceni kurs ucenja picbasica

Post by electron »

Naravno da od samog pocetka znam i sam da "nesto" moram da menjam u for naredbi, ali da znam sta? nebih ni pitao ovde :?:
User avatar
EvilMax
Pocetnik na forumu
Pocetnik na forumu
Posts: 43
Joined: 22-10-2009, 08:44

Re: skraceni kurs ucenja picbasica

Post by EvilMax »

Poz svima koliko vas ima... :wink: ! Prvo da puno pohvalim pedju089, to jest nasega glavnog "kursadziju" bez koga ni mi obicni smrtnici ne bi naucili slozene sisteme mikrokontrolera.... :!: Koliko citam vec ove postove, da sam vas vec skoro sve upoznao po karakterima i nadimcima.... :D :lol: Mene muci nesto strasno slozeno i komplikovano (jeste za mene :oops: ) nikako da sklavirim bre kako da uklopim one famozne ciklusne naredbe ili kako li se vec zovu, da dobijem nesto funkcionalno :azdaja: ...Konkretno se radi o onim izrazima i njihovot tacnosti, koliko-toliko sam shvatio ono "if-else", "while" jer sam se susretao sa time i u java programiranju, ali nikako da skontam to prebacivanje izmedju skupova naredbi prema broju stiska tastera, kao sto je to na onim kineskim zadnjim svetlima za bajs....Odradim ja nacine paljenja ledica ali ne i prebacivanje izmedju tih nacina.....Skoro sam svih 20 stranica postova procitao :shock: i mozak ce mi explodirati vise :ohno: al ne mogu da nadjem nijedan priblizan primer......Ja se bas raspricao, al sta cu kad me strasno interesuje......Nadam se da ima voljnih da mi objasne sa makar jednim prostim primerom.....Uzdravlje svima... :!:
Shit happens....
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7873
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

A ne kontam ja tebe sta bi ti hteo. Ajde napisi na konkretnom primeru sta bi hteo da napravis...
User avatar
EvilMax
Pocetnik na forumu
Pocetnik na forumu
Posts: 43
Joined: 22-10-2009, 08:44

Re: skraceni kurs ucenja picbasica

Post by EvilMax »

Ja sam idealna suprotnost od dobrog objasnjenja... :wink: Mene trenutno najvise ubija uklapanje onih naredbi "if-else", "while"...itd, sa onom racunicom ili kako se vec zove i=i+1 pa sabiras, oduzimas i....na kraju ne znam ni kako se zovem :oops: ...Pet puta sam procitao one pocetne stranice i ne pise nista konkretno o tome...Radjene su led diode, pa led displej i preslo se na dvoredni lcd displej, ali te naredbe sa pocetka ne mogu ama bas nigde ni van ovog sajta da nadjem, neke primere ili opsirniji opis funkcionisanja, ma totalni smor...Bilo mi glupo da pitam jer sam primetio da cak ni oni "pocetnici" sa prvih stranicu nisu "totalni pocetnici" cim su tako olako shvatili to....Nego, za sada mi objasni na nekom prostom primeru kako da odradim da mi na uredjaju sa 8 ledova i jednim tasterom
http://img829.imageshack.us/i/ledovi.png/" onclick="window.open(this.href);return false;
prebacujem svetlosne efekte sa jednim pritiskom na taster, kao sto je to izvedeno na onim uredjajima za zadnje svetlo na bajsu.....Znaci kako bi se to reklo, kako jednim tasterom prebacivati izmedju nekoliko grupa naredbi.....Nadam se da sam uspeo malo poblize da ti docaram... :roll: ...Hvala ti na svom trudu i zelji da pomgnes.... :!:
Shit happens....
User avatar
WhiteHead
Pravi forumaš
Pravi forumaš
Posts: 1627
Joined: 28-06-2007, 18:36
Location: 75,35k; B&H

Re: skraceni kurs ucenja picbasica

Post by WhiteHead »

Jednostavno..
Svaki pritisak na taster nek uvećava neku promjenjivu za jedan

Code: Select all

if taster=0 then 
  I=I+1
endif
Zatim provjeri dali je promjenjiva dostigla vršnu vrijednost, pa ako je, vrati ju na nulu

Code: Select all

if I>4 then I=0
Potom postavi grananje programa u zavisnosti od vrijednosti "I"

Code: Select all

select case I
case 0
    '1.grupa naredbi
case 1
    '2.grupa naredbi
itd.....
end select
goto- početak petlje
Ovo je naravno uprošćeni primjer kod kojeg bi svaki pritisak na taster x-puta promijenio "I", zato što nema provjere promjene stanja na tasteru.
Valjda je ovo to što si pitao..
Ako kaniš pobijediti, ne smiješ izgubiti
User avatar
sindja1204
Odlično uznapredovao
Odlično uznapredovao
Posts: 792
Joined: 03-05-2009, 11:57
Location: Beograd

Re: skraceni kurs ucenja picbasica

Post by sindja1204 »

electron wrote:Naravno da od samog pocetka znam i sam da "nesto" moram da menjam u for naredbi, ali da znam sta? nebih ni pitao ovde :?:
Odgovor sam ti napisao tako da sam mozes da izvedes zakljucak...

Code: Select all

  For dminu=0 To 60
  For dsec=0 To 60
  
  If dsec=60 Then dsec=0:dminu=dminu+1
  If dminu>=60 Then dminu=0 
  If dminu=minu And dsec-1=sec Then
  GoSub iskljuci
  EndIf
User avatar
EvilMax
Pocetnik na forumu
Pocetnik na forumu
Posts: 43
Joined: 22-10-2009, 08:44

Re: skraceni kurs ucenja picbasica

Post by EvilMax »

Zahvaljujem ti se WhiteHead ko bratu, ali ja ne znam kako sve to uopste da uklopim da funkcionise, jer verovao ti meni ili ne ali ja za ovih nedelju dana nisam nasao nijedan konkretan primer o tome i shodno tome ne znam ni ka sve to da uklopim.....Evo na sta sam mislio.....

Code: Select all

    symbol LED1 = PORTB.0
    symbol LED2 = PORTB.1
    symbol LED3 = PORTB.2
    symbol LED4 = PORTB.3
    symbol LED5 = PORTB.4
    symbol LED6 = PORTB.5
    symbol LED7 = PORTB.6
    symbol LED8 = PORTB.7
    symbol Taster = PORTA.3
    OUTPUT TRISB = %00000000 
    INPUT taster
    i var byte
    taster = i
'****************************************************************
    if taster=0 then
    I=I+1
    endif
    if I>3 then I=0
    select case I
PrvaFunkcija:
    case 1   
    high led1
    pause 200
    low led1
    high led2
    pause 200
    low led2
    high led3
    pause 200
    low led3
    high led4
    pause 200
    low led4
    high led5
    pause 200
    low led5
    high led6
    pause 200
    low led6
    high led7
    pause 200
    low led7
    high led8
    pause 200
    low led8
    pause200
'-----------------------
    high led8
    pause 200
    low led8
    high led7
    pause 200
    low led7
    high led6
    pause 200
    low led6
    high led5
    pause 200
    low led5
    high led4
    pause 200
    low led4
    high led3
    pause 200
    low led3
    high led2
    pause 200
    low led2
    high led1
    pause 200
    low led1
    goto prvafunkcija
'****************************************************************
    case 2
DrugaFunkcija:
    high led1
    pause 200
    high led2
    pause 200
    high led3
    pause 200
    high led4
    pause 200
    high led5
    pause 200
    high led6
    pause 200
    high led7
    pause 200
    high led8
    pause 200
    low led8
    pause 200    
    low led7
    pause 200    
    low led6
    pause 200    
    low led5
    pause 200    
    low led4
    pause 200    
    low led3
    pause 200    
    low led2
    pause 200    
    low led1
    pause 200    
    goto drugafunkcija
'***************************************************************
TrecaFunkcija:
    if i = 3 then
    high led8
    pause 200
    high led7
    pause 200
    high led6
    pause 200
    high led5
    pause 200
    high led4
    pause 200
    high led3
    pause 200
    high led2
    pause 200
    high led1
    pause 200
    low led 1
    pause 200
    low led 2
    pause 200
    low led 3
    pause 200
    low led 4
    pause 200
    low led 5
    pause 200
    low led 6
    pause 200
    low led 7
    pause 200
    low led 8
    pause 200
    end select
    
    end
E sad ovde naravno da nesto ne stima, jer nemam pojma kako, sta i s'cime treba da uklopim....Ali najveca parodija je sto ne mogu nigde da nadjem normalna objasnjenja u vezi ovoga na netu uopste...Nadjem ja poneki odradjeni primer projekta ili nestro slicno, ali ili nije radjeno u PBP-u ili ima samo HEX, pa kako onda uopste i da sklavirim nesto...... :( :(
Shit happens....
User avatar
electron
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 225
Joined: 28-02-2009, 19:20
Location: Serbia

Re: skraceni kurs ucenja picbasica

Post by electron »

Odgovor sam ti napisao tako da sam mozes da izvedes zakljucak...
Uh :idea:
User avatar
WhiteHead
Pravi forumaš
Pravi forumaš
Posts: 1627
Joined: 28-06-2007, 18:36
Location: 75,35k; B&H

Re: skraceni kurs ucenja picbasica

Post by WhiteHead »

EDIT:
@elektron "uletio", ovo je za @EvilMax

Da bi lakše savladao PBP bilo bi dobro da imaš neke osnove iz programiranja. Moraš biti sposoban da u kodu pratiš tok programa tj. skokove u toku izvršenja. Ti si program postavio tako da kada on uleti u "Prvu funkciju" nema šansi da iz nje više izađe. Nećeš naći nigdje konkretan tutorijal za tvoje zadatke jer će baš taj nedostajati a svi ostali imaju (marfi).
Ajde probaj ovako:

Code: Select all

Pocetak:
  if taster=0 then
     I=I+1
   endif
  if I>3 then I=0
Select case I
 case 0
   goto prvafunkcija
 case 1
  goto drugafunkcija
 case 2
  goto trecafunkcija
 case 3
  goto cetvrta funkcija
end select
goto pocetak  'povratak na provjeru vrijednosti "I"
prvafunkcija:
......naredbe
goto pocetak' ponovo provjeri "I"
drugafunkcija:
....naredbe
goto pocetak' ponovo provjeri "I"
trecafunkcija:
....naredbe
goto pocetak' ponovo provjeri "I"
cetvrtafunkcija:
.......naredbe
goto pocetak' ponovo provjeri "I"
end
Probaj ponovo preći ovaj kurs, pođi od početka, i steći ćeš osjećaj za tok programa.
Ponovo ponavljam ovo je uprošćeni kod, radit će "frljavo", nedostaje mu provjera promjene stanja na tasteru i ispitivanje stanja tastera u toku izvršavanja bilo kojih od ovih podprograma.
Ako kaniš pobijediti, ne smiješ izgubiti
User avatar
electron
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 225
Joined: 28-02-2009, 19:20
Location: Serbia

Re: skraceni kurs ucenja picbasica

Post by electron »

Izvinjavam se, neka admin obrise?
User avatar
sindja1204
Odlično uznapredovao
Odlično uznapredovao
Posts: 792
Joined: 03-05-2009, 11:57
Location: Beograd

Re: skraceni kurs ucenja picbasica

Post by sindja1204 »

@EvilMax Probaj sa ovim kodom. Proveren, radi.Mali nedostatak je sto taster reaguje tek nakon zavrsetka ciklusa. Dovoljno je da taster drzis pritisnutim do isteka jednog od ciklusa. Nakon otpustanja program prelazi u sledeci ciklus.

Code: Select all

symbol LED1 = PORTB.0
    symbol LED2 = PORTB.1
    symbol LED3 = PORTB.2
    symbol LED4 = PORTB.3
    symbol LED5 = PORTB.4
    symbol LED6 = PORTB.5
    symbol LED7 = PORTB.6
    symbol LED8 = PORTB.7
    symbol Taster = PORTA.3
    TRISB=$00
    TRISA=$FF
   
 
    prvafunkcija: 
    
     if taster=0 then   goto drugafunkcija
 
    high led1
    pause 200
    low led1
    high led2
    pause 200
    low led2
    high led3
    pause 200
    low led3
    high led4
    pause 200
    low led4
    high led5
    pause 200
    low led5
    high led6
    pause 200
    low led6
    high led7
    pause 200
    low led7
    high led8
    pause 200
    low led8
    pause 200
   

    high led8
    pause 200
    low led8
    high led7
    pause 200
    low led7
    high led6
    pause 200
    low led6
    high led5
    pause 200
    low led5
    high led4
    pause 200
    low led4
    high led3
    pause 200
    low led3
    high led2
    pause 200
    low led2
    high led1
    pause 200
    low led1
    goto prvafunkcija
    
      
    
    drugafunkcija:
  
    if taster =0 then goto trecafunkcija
    high led1
    pause 200
    high led2
    pause 200
    high led3
    pause 200
    high led4
    pause 200
    high led5
    pause 200
    high led6
    pause 200
    high led7
    pause 200
    high led8
       
    pause 200
    low led8
    pause 200   
    low led7
    pause 200   
    low led6
    pause 200   
    low led5
    pause 200   
    low led4
    pause 200   
    low led3
    pause 200   
    low led2
    pause 200   
    low led1
    pause 200
 
    goto drugafunkcija

    trecafunkcija:

    if taster= 0 then  goto prvafunkcija
    high led8
    pause 200
    high led7
    pause 200
    high led6
    pause 200
    high led5
    pause 200
    high led4
    pause 200
    high led3
    pause 200
    high led2
    pause 200
    high led1
    pause 200
     
    low led1
    pause 200
    low led2
    pause 200
    low led3
    pause 200
    low led4
    pause 200
    low led5
    pause 200
    low led6
    pause 200
    low led7
    pause 200
    low led8
    pause 200
 
    goto trecafunkcija
    end
User avatar
WhiteHead
Pravi forumaš
Pravi forumaš
Posts: 1627
Joined: 28-06-2007, 18:36
Location: 75,35k; B&H

Re: skraceni kurs ucenja picbasica

Post by WhiteHead »

Evo ovo od @Sindje je još jednostavnije....uvijek postoji više načina izrade programa da dođeš do istog cilja.
Ako kaniš pobijediti, ne smiješ izgubiti
User avatar
EvilMax
Pocetnik na forumu
Pocetnik na forumu
Posts: 43
Joined: 22-10-2009, 08:44

Re: skraceni kurs ucenja picbasica

Post by EvilMax »

Da bi lakše savladao PBP bilo bi dobro da imaš neke osnove iz programiranja.
Kad si spomenuo programiranje, jel si mislio na nesto kao "Java" to jest (ako me pamcenje ne vara) objektno orijentisano programiranje, pre nego sto pocnem sa programiranjem mikrokontrolera....? Ima smisla, pretpostavljam da su zato i oni "pocetnici" znali o cemu se radi, pa se zato tako brzo preslo na slozenije sisteme uredjaja.......Dobro de, zna li neko neki pouzdan link gde bih mogao poceti sa ucenjem i savet "sta" da ucim...?!
Shit happens....
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7873
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Ne objektno, strukturno programiranje je, ili kako se vec zove...
Ali bilo kakvo programiranje ce ti biti od koristi.
Samo ovde moras obratiti paznju na "vreme"...
Jer retko gde se usporava program, dok je ovde malte ne obaveza.
Tako dok je pauza, nista ne funkcionise, pa ni taster u tvom programu...
Cilj kursa nije ucenje programiranja, nego pbp-a.
User avatar
EvilMax
Pocetnik na forumu
Pocetnik na forumu
Posts: 43
Joined: 22-10-2009, 08:44

Re: skraceni kurs ucenja picbasica

Post by EvilMax »

A jel Java spada u to "strukturno programiranje", jer se odande secam vecine ovih naredbi....Ako moze, taman imam u posedu jednu "Java" Biblijicu od par 'iljada strana na naskom jeziku, ako ce to znaciti, samo reci pa da se bacim na to......
Shit happens....
User avatar
WhiteHead
Pravi forumaš
Pravi forumaš
Posts: 1627
Joined: 28-06-2007, 18:36
Location: 75,35k; B&H

Re: skraceni kurs ucenja picbasica

Post by WhiteHead »

Ne znam Javu, ali sigurno da spada u objektno programiranje.
Najbolja podloga za PBP je QBasic, ali pošto njega nema smisla učiti, kreni sa učenjem PBP-a.
Ali polako, ispočetka, korak po korak. Nastoj pratiti "tok" programa tj. skokove određene naredbom GOTO.
Osim toga proučiš i naučiš funkciju petlji (FOR, DO itd.) i ostalo je matematika.
Programiranje ne ide na brzinu, moraš steći neki osjećaj kako to klapa.. polako, ne odustaj i bit će rezultata.
Ako kaniš pobijediti, ne smiješ izgubiti
User avatar
EvilMax
Pocetnik na forumu
Pocetnik na forumu
Posts: 43
Joined: 22-10-2009, 08:44

Re: skraceni kurs ucenja picbasica

Post by EvilMax »

Bez muke nema nauke, a kamoli elektronike :D ... Odlucio sam da kupim lepo knjigu od Voje Milanovica i da krenem sa ucenjem :!: Imam ja vise knjiga za mikrokontrolere od ETF-a :lol: , ali uzalud kad nema objasnjenja za PicBasic, a kad vidim one instrukcije "movlw", movwf", "bsf", :ohno: glava me istog momenta zaboli....Sad vas verovatno necu muciti neko vreme dok se svojski ne isprebijam sa tom literaturom, nakon toga se i ja pridruzujem veseloj druzini sa ovoga foruma.....Mislim, ne bih da se hvalim, ali se nemojte zacuditi ako se pojavim sa projektom moderne svemirske stanice "MIR"... :lol: :lol:
Shit happens....
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7873
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Ni knjiga ti puno nece pomci.
Manje vise isti je sadrzaj kursa i knjige, samo tamo ima vise primera.
A tvoj problem koliko sam ja mogao zakljuciti je da naucis da razmisljas.
Nemoj me pogresno shvatiti, ali taj deo programiranja je uglavnom najtezi. I tu ne zavisi puno od programskog jezika. Moras se potruditi mnogo vise da algoritamski razmisljas, korak po korak.
A za to su dobri strukturni jezici, jer nema razmisljanja oko objekata i njihovih svojstava...
Tako da ako mene pitas, uzmi i sve radove koji su uradjeni, pregledaj kodove, i posle napisi svoje, ali ne na isti nacin. Zatim zamisli neki program i kreni na njegovu realizaciju.
Npr nije ti lose to sa svetlom za bicikli.
Ali pogledaj tvoj problem, ti proveravas taster samo na pocetku koga. A dok kontroler radi sekvencu tu nigde nema provere tastera... Tako da nikad ne mozes promeniti sekvencu.
Program se izvrsava red po red, i kako ga citas, tako on radi. Ako si ti otisao u sekvencu i nju citas, ti nemas pojma sta je sa tasterom, jer taj red si 1 procitao otisao si dalje...
Post Reply