radovi forumasa sa ubrzanog kursa pbp

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: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

radovi forumasa sa ubrzanog kursa pbp

Post by pedja089 »

evo ovako jos jedna tema vezana za kurs. neka tamo budu iskljucivo primeri za ucenje.
a ovde stvaljajte vase radove kodove, rasprave o kodovima, semama i td :wink:
zelim vam puno srece u radu i da ova tema bude puna radova :D
e jos da dodam da bi voleo da vidim i slike i snimke, zanima me na cega to lici :D
Last edited by pedja089 on 05-09-2008, 23:03, edited 2 times in total.
User avatar
RIDIK
Napredujem
Napredujem
Posts: 125
Joined: 07-05-2008, 18:11

Post by RIDIK »

ova e kodot za so dve led diodi koj se gasat i palat najizmenicno

Code: Select all

output PORTB.7
 OUTPUT PORTB.6
pocetok:
       High PORTB.7
       LOW PORTB.6
       PAUSE 1000
       LOW PORTB.7
       HIGH PORTB.6
       PAUSE 1000
       GOTO pocetok
       End  
http://www.elektronika.ba/forum/uploadz ... int_63.GIF
User avatar
RIDIK
Napredujem
Napredujem
Posts: 125
Joined: 07-05-2008, 18:11

Post by RIDIK »

eve eden primer za semafor :D

Code: Select all

 SYMBOL CRVENALED = PORTB.7

 SYMBOL ZOLTALED = PORTB.6
 SYMBOL ZELENALED = PORTB.5
 output CRVENALED
 OUTPUT ZOLTALED
 OUTPUT ZELENALED
 PORTB=0 ' gi isklucuva site led 
 
pocetok:
       High CRVENALED ' se vklucuva crvenata led
       LOW ZELENALED  ' se isklucuva zelenata led
       PAUSE 1000        ' pauza od 1 sekundi
       LOW CRVENALED  ' se isklucuva crvenata led
       HIGH ZOLTALED  ' se vklucuva zoltata led
       PAUSE 3000     ' pauza od 3 sekundi
       LOW ZOLTALED   ' se isklucuva zoltata led
       High ZELENALED ' se vklucuva zelenata led
       PAUSE 5000     ' pauza od 5 sekunda
       GOTO pocetok   ' vrati se na pocetok
       End
http://www.elektronika.ba/forum/uploadz ... emafor.GIF
User avatar
Dariolo
Odlično uznapredovao
Odlično uznapredovao
Posts: 822
Joined: 24-08-2006, 23:29
Location: Žepče (BiH), Zagreb (HR)

Post by Dariolo »

evo od mene source za blinkajuće LED kada je pritisnut taster!

Code: Select all

LOW OPTION_REG.7
    SYMBOL LED1 = PORTB.7     'preimenuj PORTB.7 u LED1
    SYMBOL LED2 = PORTB.6     'preimenuj PORTB.6 u LED2
    SYMBOL TASTER = PORTB.0 'preimenuj PORTB.0 u TASTER
    OUTPUT LED1                     'postavi LED1 kao izlazni
    OUTPUT LED2                     'postavi LED2 kao izlazni
    INPUT TASTER                    'postavi TASTER kao ulaz

pocetak:                                'pocetak programa
    LOW LED1                          'ugasi obe LED
    LOW LED2
tipkalo:
    IF TASTER=0 THEN              'detektiranje stanja tastera(ako je pritisnut)
    HIGH LED1                         'upali LED1
    LOW LED2                          'ugasi LED2
    PAUSE 1000                        'pauza od 1s
    LOW LED1                          'ugasi LED1
    HIGH LED2                         'upali LED2
    PAUSE 1000                        'pauza 1s
    else                                   'u suprotnom (ako nije pritisnut)
    LOW LED1                             'ugasi LED1
    LOW LED2                           'ugasi LED2
    ENDIF
    GOTO tipkalo                      'vrati se na labelu tipkalo (petlja)
END    
evo i videa kako to sve fercera :lol: :lol:
http://www.youtube.com/watch?v=Vf6tTcd-u90
Last edited by Dariolo on 06-09-2008, 00:58, edited 1 time in total.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

sta ce biti kada budete znali vise naredbi. ja vam pokazao 2-3 a vi se vec razradili :D
User avatar
Dariolo
Odlično uznapredovao
Odlično uznapredovao
Posts: 822
Joined: 24-08-2006, 23:29
Location: Žepče (BiH), Zagreb (HR)

Post by Dariolo »

:lol: :lol: ma samo nek se radi dok su ove jednostavne

sutra ako uspijem snimit pa stavim snjimke što sam radio
User avatar
Dariolo
Odlično uznapredovao
Odlično uznapredovao
Posts: 822
Joined: 24-08-2006, 23:29
Location: Žepče (BiH), Zagreb (HR)

Post by Dariolo »

evo i programčića za 7 segmentni LED display!
program broji do 9 i stoji na 9 dok ne pritisnemo taster, kada pritisnemo taster počinje odbrojvanje unazad, i kad dođe do 0 automatski ponovo broji do 9 :wink: :wink:

Code: Select all

    symbol TASTER = PORTA.3
    INPUT TASTER            ' postavili smo TASTER kao ulazni
    TRISB = 0               ' postavili smo sve pinove porta B kao izlazne
pocetak:
    PORTB = %11000000       ' 0
    PAUSE 1000              ' pauza 1s
    PORTB = %11111001       ' 1
    PAUSE 1000
    PORTB = %10100100       ' 2
    PAUSE 1000
    PORTB = %10110000       ' 3
    PAUSE 1000
    PORTB = %10011001       ' 4
    PAUSE 1000
    PORTB = %10010010       ' 5
    PAUSE 1000
    PORTB = %10000010       ' 6
    PAUSE 1000
    PORTB = %11111000       ' 7
    PAUSE 1000
    PORTB = %10000000       ' 8
    PAUSE 1000
    PORTB = %10010000       ' 9
    PAUSE 1000
unazad:
    IF TASTER = 0 THEN      ' ako je pritisnut taster broji unazad
    PORTB = %10010000       ' 9
    PAUSE 1000
    PORTB = %10000000       ' 8
    PAUSE 1000
    PORTB = %11111000       ' 7
    PAUSE 1000
    PORTB = %10000010       ' 6
    PAUSE 1000
    PORTB = %10010010       ' 5
    PAUSE 1000
    PORTB = %10011001       ' 4
    PAUSE 1000 
    PORTB = %10110000       ' 3
    PAUSE 1000
    PORTB = %10100100       ' 2
    PAUSE 1000 
    PORTB = %11111001       ' 1
    PAUSE 1000
    PORTB = %11000000       ' 0
    PAUSE 1000
    ELSE                    ' ako nije pritisnu stoji na 9 (nisam probo možel bez ovog)
    GOTO UNAZAD
    ENDIF
    GOTO POCETAK            ' broji ponovo do 9
END
http://www.elektronika.ba/forum/uploadz ... disp_l.gif
to je shema samo što je dodan taster na RA3 sa otpornikom od 4,7K

evo i video:
http://www.youtube.com/watch?v=8zG7uCT76H4
Last edited by Dariolo on 08-09-2008, 16:30, edited 1 time in total.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

odlicno. ne moze bez onoga jer bi se program svaki put vracao na pocetak pa bi prvo broio pa gledao dali je taster stisnut

Code: Select all

    PORTB = %11000000       ' 0
    PAUSE 1000
    ELSE                    ' ako nije pritisnu stoji na 9 (nisam probo možel bez ovog)
    GOTO UNAZAD
    ENDIF
    GOTO POCETAK            ' broji ponovo do 9 
ali uz malo izmene moze

Code: Select all

    PORTB = %11000000       ' 0
    PAUSE 1000
    ENDIF
    GOTO UNAZAD
    'sada ceka da se stisne taster. ako nije stisnut vraca se na ispitivanje dali je stisnut
            
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

evo jos jedan zanimljiv primer. kockica za covece ne ljuti se :D

Code: Select all

symbol TASTER=PORTA.3
INPUT TASTER
TRISB=0
pocetak:
if taster=0 then goto pocetak
    
    PORTB=%11111001
    PAUSE 200
    
    IF taster=0 then
    pause 2000
    goto pocetak
    endif

    PORTB=%10100100
    PAUSE 200
    
    IF taster=0 then
    pause 2000
    goto pocetak
    endif

    PORTB=%10110000
    PAUSE 200
    
    IF taster=0 then
    pause 2000
    goto pocetak
    endif

    PORTB=%10011001
    PAUSE 200
    
    IF taster=0 then
    pause 2000
    goto pocetak
    endif
    
    PORTB=%10010010
    PAUSE 200
    
    IF taster=0 then
    pause 2000
    goto pocetak
    endif
   
    PORTB=%10000010
    pause 200
    
    IF taster=0 then
    pause 2000
    goto pocetak
    endif
    
goto pocetak
End

sema

http://www.elektronika.ba/forum/uploadz ... _kocka.gif
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

e svaka cast na temi :wink: :) evo jedan kod koji se koristi za pravljenje menija.

Code: Select all

@ DEVICE HS_OSC,WDT_OFF,PROTECT_OFF 
define OSC 4    
'pic16f84

symbol ULAZ  = portb.7  'imenuje pobtb.7 kao ULAZ
INPUT ULAZ 'Postavlja za ulaz pin portb.7
portb = 0

b0 var byte 'promenjiva 

lcdout $fe,1,   "Meni "      '|Odmah  ispisuje 
lcdout $fe,$c0, "picbasic"

loop:  'pocetak petlje
    if ULAZ = 0 then  'ceka da dodje 0 na pin ULAZ ako dodje 0, dodaje za 1 vrednost u promenjivu
        b0 = b0+1     'i bira onaj CASE u zavisnosti koliko smo puta pritisnuli.
    
select case b0

case 1
    pause 250
    lcdout $fe,1,   "11111111"
    lcdout $fe,$c0, "22222222"

case 2
   pause 250
    lcdout $fe,1,   "333333333"
    lcdout $FE,$c0, "444444444"

case 3
    pause 250
    lcdout $fe,1,   "555555555"

end select
endif

goto loop 'idi na pocetak

End
http://www.elektronika.ba/forum/uploadz ... ematic.GIF
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

da ne mislis da si malo pozurio sa tim?
i to nije bas idealno resenje menija. ovde ti uvek prikazuje po 2 stvari. lepsi je efekat kada listas jednu po jednu stvar, tj da ako se spustas nadole ona stvar koja je bila najdonja predje za jedan red nagore. i obrnuto
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

pa mozda sam malo pozurio... :) pa po meni je ok i nije ga tesko shvatiti kako radi....
User avatar
RIDIK
Napredujem
Napredujem
Posts: 125
Joined: 07-05-2008, 18:11

Post by RIDIK »

ova e kodot koj sto pritiskanje na tasterot broi do 9 pocnuvajki od 0

Code: Select all

SYMBOL TASTER=PORTA.2
INPUT TASTEr
novapolozba var bit
starapolozba var bit
i VAR BYTE
i=0
trisb=0
starapolozba=TASTER
pocetok:
novapolozba=taster    
if starapolozba<novapolozba then
i=i+1
if i>9 then i=0
endif
lookup i, [192,249, 164,176,153, 146, 130, 248, 128, 152], portb
starapolozba=novapolozba
goto pocetok
end
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

super. @Dariolo malo kasnis :D
u svakom slucaju vaka cast momci :wink:
User avatar
Dariolo
Odlično uznapredovao
Odlično uznapredovao
Posts: 822
Joined: 24-08-2006, 23:29
Location: Žepče (BiH), Zagreb (HR)

Post by Dariolo »

izgleda nije danas moj dan :lol: :lol:

@RIDIK ubaci PAUSE da ti ljepše radi, jer vako sam primjetio da preskače nekad brojeve
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

Amir_Hadzic wrote:U proteusu imam ovu prikacenu semu.

Program:

Code:

TRISB = %10000000

SYMBOL LED = PORTB.6
SYMBOL SW = PORTB.7

start:
LOW LED
IF SW = 1 THEN HIGH LED
PAUSE 1000
goto start


Kada se prekidac zatvori LED ide na logicku jedinicu. Eh sada po ovom kodu bi nakon sto se prekidac otvori trebala biti logicka nula na LED. Problem je u tome sto i nakon otvaranja prekidaca na LED ostaje logicka jedinica.... :(

http://www.elektronika.ba/forum/uploadz ... 8_sema.png
premestio sam ti post ovde, jer mu tamo nije mesto
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

a da se vratimo na pocetak. picevi(kao i ostali procesori)su glupi kao k..., stoga rade samo ono sto im se napise....
a ti si lepo ovom picu napisao da on upali ledicu u koliko je na portb.7 logicka jedinica. a nigde mu u kodu nisi rekao da je ugasi ako je logicka nula....
stoga moras dodati ili else, ili jos jedan red if naredbe ili jednostavno napisati

Code: Select all

.
.
.
.
.
led=sw
pause 1000
.
.
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

Probaj ovo:

Code: Select all

Probaj ovo:

@ DEVICE pic16f84a,HS_OSC,WDT_OFF,PROTECT_OFF


SYMBOL LED = PORTB.6
SYMBOL SW = PORTB.7

input sw

output led
PORTB = 0
loop:

if sw = 1 then
led = 1
else
led = 0
endif
pause 1000
goto loop
end 
Amir_Hadzic
Napredujem
Napredujem
Posts: 175
Joined: 07-09-2006, 16:10

Post by Amir_Hadzic »

Nisam stavio da ako je nula na SW ali zato prvo postavi LED na 0 pa onda provjeri da li je SW 1 i stavi HIGH LED ako jeste.

UPDATE:
1.
Probao sam sve sto ste mi predlozili i jos uvijek ne radi. Pokusao sam samo staviti da blinka neovisno od ulaza i uredu je pa zato sumnjam na ovaj prekidac. Koji vi simbol koristite u proteusu za prekidac jer ima ih vise...
2.
Prikopcao sam gen. impulsa na ulaz rb7 i sve radi, znaci ipak je bilo do prekidaca... kako cu ubuduce rijesavati ovaj problem?
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

stavi pull up taster sto znaci da onda ako taster pritisnut dodje 0 a ne 1. I naj bolje uzmi probnu plocu imas za 600 din i slozi na njoj i tako isprobavaj.
Post Reply