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
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Sve vec punooo puta napisano...
Zavisi koji kontroler. A taj kontroler ima datasheet u kojem sve pise...
Citaj..
Pa kad ti nesto ne bude jasno, onda pitaj.
A evo i ovde odgovora
http://www.elektronika.ba/forum/viewtop ... 00#p132570
nemanjans
Penjem se :)
Penjem se :)
Posts: 67
Joined: 08-12-2012, 15:52

Re: skraceni kurs ucenja picbasica

Post by nemanjans »

i dali za svaki pic kad mu nakacis sift register je ista definicija?znaci ako bi nakacio 2 kako di izvedem da mi bude ovako 11111111111111 znaci da bude kao jedan veliki
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Izlaz prvog na ulaz drugog. Klok reset i ostalo zajedno.
nemanjans
Penjem se :)
Penjem se :)
Posts: 67
Joined: 08-12-2012, 15:52

Re: skraceni kurs ucenja picbasica

Post by nemanjans »

jasno mi je to,al kako na programu napisati ako sa a porta ide?
nemanjans
Penjem se :)
Penjem se :)
Posts: 67
Joined: 08-12-2012, 15:52

Re: skraceni kurs ucenja picbasica

Post by nemanjans »

sad sam ceprko po meni treba kao za display izdefinisati gde je spojena lec a gde cloc od registra i onda :reg i broj al kako to uraditi moze neko neki primer da mi da?
code_service
Posts: 11
Joined: 15-01-2013, 09:44

Re: skraceni kurs ucenja picbasica

Post by code_service »

Imam 3 prekidača spojena na PORTA i tri ledice spojene na PORTB. Može mi netko dati primjer programa kojim sa po jednim prekidačem palim i gasim po jednu ledicu, ali pritiskom bilo kojeg prekidača na 5 sekundi ugasim sve ledice.. Pozdrav svima..
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: skraceni kurs ucenja picbasica

Post by Maki »

Bok !
Prvenstveno bilo bi lijepo od tebe da se vratis na prve stranice ovog topika. Drugo uvijek kad navodis svoj problem napisi o kojem mikrokontrolelu se radi. Probaj sam , a tamo gdije zapne pitaj ovdije na forumu i dobit ces pomoc (ako znamo naravno) :wink: Znaci prvo procitaj prvih barem 2-3 str. kako bi shvatio osnvne naredbe. Help je korisan i dobro objasnjava , ako ne stojis s eng na ti onda preporucam google prevoditelj. Svaki mikrokontroler imam svoj datasheet . To je potrebna dokumentacija koja sadrzi razna objasnjena (npr. A/D konverter,INTOSC,...) .
code_service
Posts: 11
Joined: 15-01-2013, 09:44

Re: skraceni kurs ucenja picbasica

Post by code_service »

Image

Code: Select all

  ADCON1 = 7 'Turn off ADC
  CMCON = 7 'Turn off comparator
   TRISA = $FF    
   TRISB = $00
   portb=0   
        
SYMBOL LED1=PORTB.0
SYMBOL LED2=PORTB.1
SYMBOL LED3=PORTB.2
SYMBOL T1=PORTA.0
SYMBOL T2=PORTA.1
SYMBOL T3=PORTA.2
A VAR BYTE
POC:
A=0
BUTTON t1,0,255,0,a,1,led1ON
A=0
BUTTON t2,0,255,0,a,1,led2ON
A=0
BUTTON t3,0,255,0,a,1,led3ON
GOTO POC

LED1ON:
TOGGLE LED1
PAUSE 500
GOTO POC

LED2ON:
TOGGLE LED2
PAUSE 500
GOTO POC

LED3ON:
TOGGLE LED3
PAUSE 500
GOTO POC

LED4ON:
PORTB=0
PAUSE 500
GOTO POC

END
Nedavno sam počeo sa ovim i još mi je zbrka u glavi i od osnovnih stvari, ali malo po malo kockice se slažu :) Trenutno sam na prekidačima i ledicama, pa nebi još dalje dok to u dobro ne utvrdim.. Ova tema je odlična, jedino prerano se krenilo na naprednije stvari, a nisu se još dobro osnove obradile. Riječ je o PIC16F877A. Evo priložen porgram kojim palim i gasim diode i shema. Sad.. zanima me kako da pritiskom i zadržavanjem na 5 sekundi bilo kojeg prekidača ugasim sve trenutno uključene led diode. Zna li tko? :)
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: skraceni kurs ucenja picbasica

Post by Maki »

Da ti se nakon sto drzis tipkalo 5 sek ledice ugase ? Pa to mozes i sa while wend i if petljom. Npr. ovo je kad drzis tipkalo duze od 5 sec ledice se gase

Code: Select all

i var byte
i =0
While prekidac3 = 1 
pause 100
i = i + 1
wend
if i >=50 then
gasi sve led
endif
i = 0 
Kao sto vidis ovo je samo primjer , sad to malo prilagodis svojim potrebama .
Edit:
Na shemi ti fale otpori za ledice.
code_service
Posts: 11
Joined: 15-01-2013, 09:44

Re: skraceni kurs ucenja picbasica

Post by code_service »

Hvala, sad je već malo jasnije.. Izostavio sam još jedan uvjet, a to je da program ne čeka navedenih 5 sekundi ukoliko ni jedna tipka nije pritisnuta. Znači ako je tipka pritisnuta i puštena, odmah "toggla" pripadajuću ledicu i vraća se na labelu POC. Ako je tipka pritisnuta i zadržana da broji..broji...broji.. i ako prođe 5 sekundi, ugasi sve ledice i opet se vrati na labelu POC. Može li netko na ovom programu kojeg sam postavio izvest to da radi, i to na više načina ako je moguće. ? Vidjeti tako malo složeniji uvjet u praksi uz objašnjenje, najbolje bi pomoglo meni, a nadam se i drugim početnicima u razumjevanju ove problematike. Radim u proteusu, tako da otpori nisu bitni za simulaciju. Ako (kad :roll: ) budem realizirao neki projekt bit će sve što treba.
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: skraceni kurs ucenja picbasica

Post by Maki »

Malo sam se zbunio... Kaj tebi program ceka 5 sek ? Ma ja sam sigurno opet izveo neku svoju zamisao a da ju nisam sagledao sa svih kuteva :( . To je sigurno tak jednostavno a ja ga zakomplicirah... Razmislit cu ja kak se to jos moze rijesit. Mozda neko drugi zna...
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Timer + DT INT...
Za tako nesto najbolje je raditi interaptima koji ovde nisu obradjeni iz vise razloga...
Ali svakako predlazem da pogledate
http://darreltaylor.com/DT_INTS-14/intro.html
To su asemblerski interapti u kojima se moze koristiti basic :wink:
Za to je potreban mpasm.
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: skraceni kurs ucenja picbasica

Post by Maki »

Ok, hvala !
code_service
Posts: 11
Joined: 15-01-2013, 09:44

Re: skraceni kurs ucenja picbasica

Post by code_service »

Maki wrote:Malo sam se zbunio... Kaj tebi program ceka 5 sek ? Ma ja sam sigurno opet izveo neku svoju zamisao a da ju nisam sagledao sa svih kuteva :( . To je sigurno tak jednostavno a ja ga zakomplicirah... Razmislit cu ja kak se to jos moze rijesit. Mozda neko drugi zna...
Zamisli da imaš kuću sa tri sobe. U svakoj sobi imaš jedan taster i jedno svjetlo. Sa tasterom u sobi br.1 gasiš i pališ svjetlo u sobi br.1. Sa tasterom u sobi br.2 gasiš i pališ svjetlo u sobi br.2. Sa tasterom u sobi br.3 gasiš i pališ svjetlo u sobi br.3. Sad kako napraviti program da sa bilo kojim tasterom gasiš svjetla u svim sobama ako je bilo koji taster pritisnut i tako zadržan 5 sekundi. Uz to uvjet je da program ne čeka npr. ostale 4 sekundi ako je taster pritisnut i pušten nakon 1 sekundu. Može li netko ovo primjeniti u programu koji sam postavio? Naravno, na više načina ako može.. Nadam se da sam sad bio jasan ..
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Predlozio sam ti interapte. Setuj neki tajmer na recimo 10mS, i ako je taster pritisnut uvecaj svaki put promenljivu, kad dodjes do 50000, pogasi sve izlaze. Ako je taster pusten, resetujes tu promenljivu.
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: skraceni kurs ucenja picbasica

Post by Maki »

Evo bas gledam interapte , opcenito tajmere i to je zakon ! Istina da nisam sve proucio al ovo kaj sam uspio skuzit dokazuje da je timer odlicna stvar . Evo ovo nije reijeseno pomocu tajmera ali moze pomoc. Sve ledice ce se gasit ak drzis t3 .

Code: Select all

x = 0
if t3 = 0 then
 while t3 = 0 
  pause 10
  x = x + 1
 wend
if x >= 500 then
 portb = 0
endif
x = 0
endif
 
Jos x definiras kao rijec tj. word i to bi trebalo stimat.
code_service
Posts: 11
Joined: 15-01-2013, 09:44

Re: skraceni kurs ucenja picbasica

Post by code_service »

napravioooo sam gaaaaa !!!!!!!
probao u proteusu i radi.. ajme kako sam sada ponosan :oops: :D .. za mene početnika ovo je velik uspjeh..

Code: Select all

  ADCON1 = 7 'Turn off ADC
  CMCON = 7 'Turn off comparator
   TRISA = $FF    
   TRISB = $00
   portb=0
   
        
SYMBOL LED1=PORTB.0
SYMBOL LED2=PORTB.1
SYMBOL LED3=PORTB.2
SYMBOL T1=PORTA.0
SYMBOL T2=PORTA.1
SYMBOL T3=PORTA.2
A VAR BYTE
B var byte

POC:
b=1
A=0
BUTTON t1,0,255,0,a,1,led1ON
A=0
BUTTON t2,0,255,0,a,1,led2ON
A=0
BUTTON t3,0,255,0,a,1,led3ON

GOTO POC

LED1ON:
TOGGLE LED1
PAUSE 500
gosub test
GOTO POC

LED2ON:
TOGGLE LED2
PAUSE 500
gosub test
GOTO POC

LED3ON:
TOGGLE LED3
PAUSE 500
gosub test
GOTO POC

LED4ON:
PORTB=0
PAUSE 2000
GOTO POC

test:
if (t1=0) or (t2=0) or (t3=0) and (b<5) then
b=b+1
pause 1000
goto test
else
endif
if b=>5 then
goto led4on
else
return
endif
end
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Return iz test nikako ne sme biti uslovljen bilo cime!
Jer ce napuniti stack, i onda moze da bude brljotina...
Isto tako ne mozes imati gosub nesto, pa iz tog necega goto nesto drugo, pa opet goto...
Posle svakog gosub moras imati return.
To tvoje bi moglo raditi kada bi stavio na kraju led4on return.
Ali takve stvari su jako zajebane za ispratiti, i lako se napravi greska, i onda se pic cudno ponasa, tj ne znas sta mu je...
code_service
Posts: 11
Joined: 15-01-2013, 09:44

Re: skraceni kurs ucenja picbasica

Post by code_service »

Evo malo sam prepravio program. Bi li ovako moglo? Mogu li biti dva returna? Da li se ovako stack resetira? U interapte i ostalo još nebi ulazio dok skroz ne pohvatam ovo osnovno.

Code: Select all

SYMBOL LED1=PORTB.0
SYMBOL LED2=PORTB.1
SYMBOL LED3=PORTB.2
SYMBOL T1=PORTA.0
SYMBOL T2=PORTA.1
SYMBOL T3=PORTA.2
A VAR BYTE
B var byte

POC:
b=1
A=0
BUTTON t1,0,255,0,a,1,led1ON
A=0
BUTTON t2,0,255,0,a,1,led2ON
A=0
BUTTON t3,0,255,0,a,1,led3ON

GOTO POC

LED1ON:
TOGGLE LED1
PAUSE 500
gosub test
GOTO POC

LED2ON:
TOGGLE LED2
PAUSE 500
gosub test
GOTO POC

LED3ON:
TOGGLE LED3
PAUSE 500
gosub test
GOTO POC

gasisve:
PORTB=0
PAUSE 2000
return
GOTO POC

test:
if (t1=0) or (t2=0) or (t3=0) and (b<50) then
b=b+1
pause 100
goto test
else
endif
if b=>50 then
goto gasisve
else
return
endif
end

User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Mogu biti, ali tako da se samo jedan izvrsava.
ja big u tvom slucaju zaobisao sve gosub, i ne bi razmisljao puno...
Imas puno nepotrebnih pauza. Imas vidska else, imas vidska goto poc...
Ajd sad doteraj taj kod da lici na nesto...
Inace sad bi to trebalo da radi.
Stack se sa gosub uveca za 1, sa return smanji za 1. Uvek konacan rezultat mora da bude 0, da program ne bi brljavio.
Post Reply