skraceni kurs ucenja picbasica

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

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
gkrstini
Posts: 13
Joined: 25-12-2009, 15:43

Re: skraceni kurs ucenja picbasica

Post by gkrstini »

eto nisam neki umjetnik, evo 2 slike, prvo kako sam spojio, i sad kako sam nabrzaka spojio pa opet ništa :? :?

http://www.postimage.org/image.php?v=Pqb9ZwS" onclick="window.open(this.href);return false;

http://www.postimage.org/image.php?v=Pqb9UxA" onclick="window.open(this.href);return false;

jel valja šta shema, il sam potpuno fulao? :oops: :?
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Po ovoj drugoj spajas. Jesi upisao pravi hex?
Ne secam se ni ja vise koda, ima par verzija, ali znam da je u jednoj verziji bilo da meri cim ga ukljucis, zavrsi merenje, prikaze rezultat i ugasi se.
Pogledaj malo to.
I pogledaj u gotovim projektima, ima i tamo par verzija...
User avatar
firestarter
Posts: 7
Joined: 20-04-2010, 18:19

Re: skraceni kurs ucenja picbasica

Post by firestarter »

Moze li mi tko pomoći oko portova i naredbi? na 877 je normalno PORTA A/D konverter a PORTC na 4;5 i 6
ima neke đinđurije, problem je kako da ih proglasim običnim I/O portovima, pregledao sam cijeli tečaj
ali ili mi je promaklo ili nema kako se to radi u basicu. Inače sam potpuno novi u PICovima pa tko ima volje
neka pomaga... unaprijed hvala!
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Za portc nista ne trebas da diras.
A za porta, pogledaj datasheet. Tacnije pogledaj registre koji su vezani za njega. Naces jedan registar za koji imas tabelu i u tabeli se nalaze vrednosti tog registra za razlicite kombinacije pinova(D ili A).
U kursu to nije spominjano bas da bi koristili datasheet, jer taj pic moze svasta da radi, pa usput dok trazits sta ti treba mozda iskopas jos neku korisnu sitnicu.
Nazivi registara su logicni, lako se pamte, a imena registara su ista i u datasheetu i u pbp.
gkrstini
Posts: 13
Joined: 25-12-2009, 15:43

Re: skraceni kurs ucenja picbasica

Post by gkrstini »

imaš li možda ideju u čemu bi mogla bit greška, uzeo sam kod sa 3. stranice za obrtomjer u sekundi, i učitam taj broj, sad kad ga spojim na fototranzistor kad prođem ne očitava mi normalno, nego recimo bude 0000 kad prođem sa papirom jednom ili 2 puta bude 1111 2222 ili nekad hhhh ili čak EEEE
nije mi nikako jasno, mjenjao sam dekoder, jer sam pomislio da sam ga malo spalio (jednim događajem), al nije problem, jeli moguće da je problem u picu, ili programu, više sam puta probavo, prvo sa svojom verzijom tvojeg programa, pa sam skopirao originalnu verziju da nebi bila kakva greška, uglavnom sam primjetio da se uvjek ponavljaju sva 4 broja budu ista
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Tu nesto ne valja kod multipleksa. Proveri deo koda oko dig. I proveri mozes li paliti svaki displej posebno.
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 »

Kod nekog uređaja (čini mi se Pedjin timer), stavljanjem prsta na rezonator, s određenim pritiskom , uspijevao sam usporiti PIC toliko da je multipleksiranje bilo okom vidljivo.
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 »

pedja089 wrote:evo kod ovog tajmera

Code: Select all

trisb=0
trisa=%00011101
portb=0
S VAR WORD
SZ var word
Br0 var byte
Br1 var byte
Br2 var byte
t var byte
C var bit
symbol Rele = porta.1    
symbol Pr = porta.4 
symbol Start= porta.3
symbol Sttop= porta.2        
rele=0
read 0,sz.highbyte
read 1,sz.lowbyte
if sz>999 or sz=0 then sz=220
c=0
Pocetak:
if pr=1 then
 if start=0 then c=1
 if sttop=0 then c=0
 if S>0 and c=1 then 
  rele = 1
 endif
 if S=0 or c=0 then
  rele =0
  c=0
  s=sz
 endif 
  if c=1 then 
    S=S-1
    goto disp
  endif 
  goto disp1
'<<PR=0>>---postavljkanje vrednosti--------------------------------------------------------------- 
else
    rele=0
    'smanjivanje 
    if sttop=0 AND S>1 then     
    S=S-1
    goto Disp1
    endif
    'povecavanje
  if start=0 and S <999 then     
    S=S+1
    goto Disp1
  ENDIF
sz=s
goto disp1
endif
Disp:  'prikazivanje merene vrednosti i traje 1S
 br2=S DIG 2
 br1=S dig 1
 br0=S dig 0
    for t=0 to 99
        portb= br2+ 32
        pause 3
        portb= br1+64
        pause 4
        portb= br0+ 128 
        pause 3 
    next t
goto pocetak

Disp1: 'prikazivanje iz i traje 100mS
 
 br2=S DIG 2
 br1=S dig 1
 br0=S dig 0
    for t=0 to 10   
        portb= br2+ 32 
        pause 3
        portb= br1+64
        pause 4
        portb= br0+ 128
        pause 3 
    next t
goto pocetak
end

@Pedja, prosirio sam ovaj tvoj kod za cetiri led display-a tj. da broji do 9999. Umesto 220 postavio sam 480.(Uglavnom za osvetljavanje koristim 8min.). Takodje sam smanjio i ciklusnu naredbu For t=0 TO 99 na For t=0 TO 70 Posto sam imao veliko kasnjenje.
Sve funkcionise, medjutim malo sam kuburio sa ovim promenljivim u kodu.C i SZ, .SZ sam nekako ukapirao, ali mi je ostala i dalje nejasna promenljiva C. Koja je njena funkcija. :?:

Code: Select all

     trisb=0
trisa=%00011101
portb=0
KONBROJ var word
BROJ VAR WORD
broj0 var byte
broj1 var byte
broj2 var byte
broj3 Var byte
i var byte
C var bit
symbol Rele = porta.1   
symbol Pr = porta.4
symbol Start= porta.3
symbol Sttop= porta.2       
rele=0
read 0,KONBROJ.highbyte
read 1,KONBROJ.lowbyte
if KONBROJ>9999 or KONBROJ=0 then KONBROJ=480
c=0
Pocetak:
if pr=1 then
if start=0 then c=1
if sttop=0 then c=0
if BROJ>0 and c=1 then
  rele = 1
endif
if bROJ=0 or c=0 then
  rele =0
  c=0
  BROJ=KONBROJ
endif
  if c=1 then
    BROJ=BROJ-1
    goto disp
  endif
  goto disp1
'<<PR=0>>---postavljkanje vrednosti---------------------------------------------------------------
else
    rele=0
    'smanjivanje
    if sttop=0 AND BROJ>1 then     
    BROJ=BROJ-1
    goto Disp1
    endif
    'povecavanje
  if start=0 and BROJ <9999 then     
    BROJ=BROJ+1
    goto Disp1
  ENDIF
KONBROJ=BROJ
goto disp1
endif
Disp:  'prikazivanje merene vrednosti i traje 1S
broj3=BROJ dig 3  
broj2=BROJ DIG 2
broj1=BROJ dig 1
broj0=BROJ dig 0
    for i=0 to 70
        portb=broj3+ 16
        pause 4
        portb= broj2+ 32
        pause 3
        portb= broj1+64
        pause 4
        portb= broj0+ 128
        pause 3
    next i
goto pocetak

Disp1: 'prikazivanje iz i traje 100mS

broj3=BROJ dig 3
broj2=BROJ DIG 2
broj1=BROJ dig 1
broj0=BROJ dig 0
    for i=0 to 1 
        portb=broj3+ 16
        pause 4
        portb=broj2+ 32
        pause 3
        portb=broj1+64
        pause 4
        portb=broj0+ 128
        pause 3
    next i
goto pocetak
end
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

U c mi stoji kad je stisnut star a kad stop.
Tj sta je poslednje stisnuto. I ako je vreme isteklo stavljam c na 0, isto se desava kao da je stop pritisnut...
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 »

Da, sad je puno jasnije. Medjutim iskrsnuo mi je jos jedan problem. Posto tajmer broji do 9999, hteo sam da odbrojava kao sat od 59:59 -00:00(skoro je duplo skraceno vreme ali to mi nije toliko bitno). Napisao sam neki probni kod za oko 8min i to lepo funkcionise. Javio se problem kad sam prosirio kod na svih 59:59 za odbojavanje, stim da se isti kod ubacuje i za podesavanje za unazad i obrnut za podesavanje unapred. Jednostavno previse instrukcija koje micro code studio ne prima.

Code: Select all

 if c=1 then
    BROJ=BROJ-1
    
   
    if broj=5960 then broj=broj-1
    if broj=5799 then broj=5859
    if broj=5860 then broj=broj-1
    if broj=5699 then broj=5759
    if broj=5760  then broj=broj-1
    if broj =5599 then broj=5659
    if broj=5660 then broj=broj-1
    if broj=5499 then broj=5559
    if broj=5560 then broj=broj-1
    if broj=5399 then broj=5459
    if broj=5460 then broj=broj-1
    if broj=5299 then broj=5359
    if broj=5360 then broj=broj-1
    if broj =5199 then broj=5259
    if broj=5260then broj=broj-1
    if broj=5199 then broj=5159
    if broj=5160 then broj=broj-1
    if broj=5099 then broj=5059
    if broj=5060 then broj=broj-1
    if broj=4999 then broj=4959
    if broj=4960 then broj=broj-1
    if broj =4899 then broj=4859
    if broj=4860 then broj=broj-1
    if broj=4799 then broj=4759
    if broj=4760 then broj=broj-1
    if broj=4699 then broj=4659
    if broj=4660 then broj=broj-1
    if broj=4599 then broj=4559
    if broj=4560 then broj=broj-1
    if broj =4499 then broj=4459
    if broj=4460 then broj=broj-1
    if broj=4399 then broj=4359
    if broj=4360 then broj=broj-1
    if broj=4299 then broj=4259
    if broj=4260 then broj=broj-1
    if broj=4199 then broj=4159
    if broj=4160 then broj=broj-1
    if broj =4099 then broj=4059
    if broj=4060 then broj=broj-1
    if broj=3999 then broj=3959
    if broj=3960 then broj=broj-1
    if broj=3899 then broj=3859
    if broj=3860 then broj=broj-1
    if broj=3799 then broj=3759
    if broj=3760 then broj=broj-1
    if broj =3699 then broj=3659
    if broj=3660 then broj=broj-1
    if broj=3599 then broj=3559
    if broj=3560 then broj=broj-1
    if broj=3499 then broj=3459
    if broj=3460 then broj=broj-1
    if broj=3399 then broj=3359
    if broj=3360  then broj=broj-1
    if broj=3299 then  broj=3259
    if broj=3260 then broj=broj-1
    if broj =3199 then broj=3159
    if broj=3160 then broj=broj-1
    if broj=3099 then broj=3059
    if broj=3060 then broj=broj-1
    if broj=2999 then broj=2959
    if broj=2960 then broj=broj-1
    if broj=2899 then broj=2859
    if broj=2860 then broj=broj-1
    if broj =2799 then broj=2759
    if broj=2760 then broj=broj-1
    if broj=2699 then broj=2659
    if broj=2660 then broj=broj-1
    if broj=2599 then broj=2559
    if broj=2560 then broj=broj-1
    if broj=2499 then broj=2459
    if broj=2460  then broj=broj-1
    if broj =2399 then broj=2359
    if broj=2360 then broj=broj-1
    if broj=2299 then broj=2259
    if broj=2260 then broj=broj-1
    if broj=2199 then broj=2159
    if broj=2160 then broj=broj-1
    if broj=2099 then broj=2059
    if broj=2060 then broj=broj-1
    if broj =1999 then broj=1959
    if broj=1960then broj=broj-1
    if broj=1899 then broj=1859
    if broj=1860 then broj=broj-1
    if broj=1799 then broj=1759
    if broj=1760 then broj=broj-1
    if broj=1699 then broj=1659
    if broj=1660 then broj=broj-1
    if broj =1599 then broj=1559
    if broj=1560 then broj=broj-1
    if broj=1499 then broj=1459
    if broj=1460 then broj=broj-1
    if broj=1399 then broj=1359
    if broj=1360 then broj=broj-1
    if broj=1299 then broj=1259
    if broj=1260 then broj=broj-1
    if broj =1199 then broj=1159
    if broj=1160 then broj=broj-1
    if broj=1099 then broj=1059
    if broj=1060 then broj=broj-1
    if broj=999 then broj=959
    if broj=960 then broj=broj-1
    if broj=899 then broj=859
    if broj=860 then broj=broj-1
    if broj =799 then broj=759
    if broj=760 then broj=broj-1
    if broj=699 then broj=659
    if broj=660 then broj=broj-1
    if broj=599 then broj=559
    if broj=560 then broj=broj-1
    if broj=499 then broj=459
    if broj=460 then broj=broj-1
    if broj =399 then broj=359
    if broj=360 then broj=broj-1
    if broj=299 then broj=259
    if broj=260 then broj=broj-1
    if broj=199 then broj=159
    if broj=160 then broj=broj-1
    if broj=99 then broj=59
    if broj=60  then broj=broj-1
    goto disp
Znaci sve ovo za odbrojavanje i jos puta dva za unapred i unazad. Maximum koji kompajler prima je samo za otprilike polovinu ovog koda. Znaci bez podesavanja koda za unapred i unazad. Pitanje?
Ima li sta krace i prostije od ovoga.
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 »

firestarter wrote:Moze li mi tko pomoći oko portova i naredbi? na 877 je normalno PORTA A/D konverter a PORTC na 4;5 i 6
ima neke đinđurije, problem je kako da ih proglasim običnim I/O portovima
ADCON1=$7
ADCON1=%00000111
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Za ovo gore, samo baci oko na datasheet. Imas par registara, i u njima imas znacenje svakog bita. Jasno je napisano, a pretpostavljam da znas eng.
A sto se tice onog gore koda, recu samo, jao....
Moze se to mnogooooo lakse napraviti. Samo da ti je palo na pamet...
Napravi 2 promenljive, jednu sekunde, drugu minute.
I onda imas samo proveru ako su sekunde 60 i minuti manji od 60 onda stavi sekunde 0 i minute uvecaj za 1.
Slican slucaj za umanjivanje, ako su sekunde 0 i minuti veci od 0 postavi sekunde na 60, i umanji minut.
Sa 2 if-a nesta cela tvoja skalamerija....
Prikaz na displej mislim da znas resiti.
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 »

pedja089 wrote:
Napravi 2 promenljive, jednu sekunde, drugu minute. Prikaz na displej mislim da znas resiti.

.
Palo mi je i to napamet, jer sam vec uradio tajmer 59:59-00:00 sa LCD displejom a prikaz resio kao sto kazes, sa dve promenljive.

Code: Select all

  sec   var byte
  minu  var byte
  dsec  var byte
  dminu var byte

  sec=0
  minu=0
  dsec=0
  dminu=0
  low led
  low sij
  
  pause 200
  Lcdout $fe, 1, $80+5, "   tajmer"
  lcdout $fe, $c0, $80+3,  "  00:00:00"
  PAUSE 1000

  pocetak:
  
  portb=0
  if taster=0 then sec=sec+1
  if sec>=60  then sec=0:minu=minu+1
  if minu>=60 then minu=0
  
  
  if tasterb=0 then sec=sec-1
  if sec>=60 then sec=59 : minu=minu-1
  if minu>=60 then minu=59
http://www.elektronika.ba/forum/viewtop ... f=9&t=7976" onclick="window.open(this.href);return false;
http://www.elektronika.ba/forum/viewtop ... &start=165" onclick="window.open(this.href);return false;
Ali da budem iskren kod ovog multipleksa se nisam bas najbolje snasao, tj kako to prikazati na displeju. :!: :?:

Jedan od razloga je i to sto nisam ja pisao kod vec sam pokusao da prepravim onaj tvoj kod za tajmer do 999 i normalno izgubio se u promenjivim :) Jedino sto sam uspeo je da sa if -Then instrukcijama dobijem pravilno odbrojavanje do 15min (od 59) jer toliko instrukcija prima micro code...
U svakom slucaju hvala na pomoci, odoh da lupam glavu dalje da resim i ovo... :)
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: skraceni kurs ucenja picbasica

Post by VFDisplay »

oprostite što ovako ulijećem u temu trebao bih pomoć oko kontrole s SPI-om. Kako, šta u PBP?
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 »

pedja089 wrote: Moze se to mnogooooo lakse napraviti.
Prikaz na displej mislim da znas resiti.
Konacno sam uspeo da tvoj kod za tajmer do 999 prepravim da broji do 59:59 U osnovi sam zadrzao tvoj princip podesavanja vremena sa manjim izmenama , ubacio sam dve + dve promenljive za sec. i min. a 4 dis podelio tako da dva pokazuju sekunde a dva minute. Ubacen je i buzer koji 10 puta signalizira kraj odbrojavanja. Pocetno vreme je 8 min.

Code: Select all

 TRISB=$00
TRISA=%00011100
portb=0

S     var word
M     var word
CS    var word
CM    var word

BROJ1 VAR BYTE 
BROJ2 VAR BYTE
BROJ3 VAR BYTE
BROJ4 VAR BYTE

i     var byte
C     var bit
k     var byte        'promenljive 


''''''''''''''''''''''

If c=1 then
S=S-1
if S>=60 then S=59 :  M=M-1
if M>=60 then M=59
goto disp
endif
goto disp1

else
relej=0



'''''''''''''''''''''

 
  'smanjivanje
  
if sttop=0  then 
s=s-1                         
if S>=60 then S=59 :  M=M-1
if M>=60 then M=59              ' 
                                   smanjivanje
''''''''''''''''''''''''

  'povecavanje
if start=0 then  
 S=S+1                              
if S>=60 then S=0  : M=M+1
if M>=60 then M=0                 'povecavanje


''''''''''''''''''''''''''
 endif
disp:

BROJ1 = S DIG 0
BROJ2 = S DIG 1

BROJ3 = M DIG 0
BROJ4 = M DIG 1

for i=0 to 80

PORTB=BROJ1 +128
PAUSE 3
PORTB=BROJ2+64
PAUSE 3
PORTB=BROJ3+32
PAUSE 3
PORTB=BROJ4+16
PAUSE 3
next i                            'prikaz na displeju
Delovi koda za tajmer 59:59
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Pa covece to je to...
Ne znam sta ti je toliko vremena trebalo da to sredis...
Meni ne delu je komplikovano, Nadam se da i tebi nije...
Ne bi bilo lose da napises gde je zapelo, pa da dodam kod objasnjenja za multipleks, ako nekom zatreba...
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 »

pedja089 wrote: Ne znam sta ti je toliko vremena trebalo da to sredis...
Nisam se ja svo vreme bavio ovim kodom :D :D :D
Jutros mi je sinula ideja o podeli displeja na dva dela i malo pre je bio kod gotov... :)

Sto se tice samog koda nije bilo nigde vecih problema osim prikaza vremena na displeju. Delovi koda za formatiranje vremena su gotovo identicni kodu koji sam uradio za lcd tajmer a sa manjim dopunama sam zadrzao tvoj princip namestanja vremena.
http://www.elektronika.ba/forum/viewtop ... f=9&t=7976" onclick="window.open(this.href);return false;
Problem je bio ispisati vreme na displeju.Kada mi je palo na pamet da ga podelim na 2 + 2 sve je dobilo smisao i nije bilo tesko dovrsiti kod i shvatiti kako vreme u formatu min /sec preneti na multipleks.Eto mogao bi taj deo malo strucnije da pojasnis.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Ma to nek se potrude...
Imaju tvoj kod, mislim da je vise nego jasan...
Razlika izmedju mog i tvog koda je sto ti imas 2 promenljive, a ja jednu...
U principu u multipleksu mozes koristiti koliko god hoces promenljivih...
I to moze se napraviti i jednom da se prikaze vreme, drugi put datum, ili slicne stvari...
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 »

Interesantan primer koda za ispis na LCD displeju.
-ispis slovo po slovo
-ispis reci sa leve na desnu stranu LCD-a i obratno

Code: Select all

 define  OSC 4
  Define  LCD_DREG        PORTB
  Define  LCD_DBIT        0
  Define  LCD_RSREG       PORTB
  Define  LCD_RSBIT       5
  Define  LCD_EREG        PORTB
  Define  LCD_EBIT        4
  DEFINE  LCE_BITS        4
  DEFINE  LCD_LINES       2
  CMCON=7
  trisb=%00000000
  k     var byte
  B0    VAR BYTE   
  B1    VAR BYTE
  
   pocetak:
   
   
 'primer upisa jednog po jednog karaktera, (znaka, broja, slova) u prvom redu
 
 
   
 PAUSE 250                      'inicijalizacija displeja
 LCDOUT $fe,1                   'obrisi lcd
 FOR B0=0 TO 7                  'broj for ciklusa jednak je broju   karaktera u lokup
                                'instrukciji racunajuci i razmake
 
 LOOKUP B0,["Prvi red"],b1      'lookup instrukcija - upis se smesta u promenljivu B1
 LCDOUT, $fe,$0C,B1             'iskljuci kursor i na Lcd-u upisi rec iz promenljive B1
 pause 500                      'sacekaj pola sekunde -brzina ispisa
 next                           'next
 
 pause 2000                     'pauza do sledeceg  primera
 
 
 
  'primer upisa jednog po jednog karaktera, (znaka, broja, slova) u drugom redu
 
 lcdout $fe,1                   'obrisi lce
 LCDOUT $fe,$c0                 'postavi kursor na pocetk drugog reda
 FOR B0=0 TO 8                   'broj for ciklusa jednak je broju   karaktera u lokup
                                'instrukciji racunajuci i razmake
 
 
 LOOKUP B0,["Drugi red"],b1
 LCDOUT, $fe,$0C,B1              'upisi na lcd rec iz promenljive B1
 pause 500                     'sacekaj pola sekunde-brzina ispisa
 next                            'next
 
 pause 2000                      'pauza do sledeceg primera 
 
 
 'primer pomeranja karaktera (slova, reci, znaka ) ULEVO  od poslednjeg karaktera [144]lcd dipleja do
 'prvog [128]
 
    
 for b0=144 to 128 step -1      'Pomeranje reci od poslednjeg karaktera 144 do prvog 128
                                'Prvi karakter hex-a 80 ili dec 128 
                                'poslednji karakter 8f ili  dec 144
 
    
 lcdout $fe,1                   'obrisi lcd
 lcdout $fe,b0 ,"Ulevo"
 PAUSE 200
 NEXT
 
 pause 2000                      'pauza do sledeceg primera 
 
 
 
 'primer pomeranja karaktera (slova, reci, znaka ) UDESNO  od prvog  karaktera [128]lcd dipleja do
 'poslednjeg [144]
 
                  'obrisi lcd
 for b0=128 to 144 step 1       'postavi for ciklus od prvog karaktera do poslednjem
 lcdout $fe,1                  'obrisi lcd
 lcdout $fe,b0 ,"Udesno"
 PAUSE 200
 NEXT
 
 
 pause 2000                      'pauZa do sledeceg primera
 
 'primer pomeranja karaktera (slova, reci, znaka) ULEVO od poslednjeg karaktera 144 do petog karaktera 132
 
 
 for b0=144 to 132 step -1      'Pomeranje reci od poslednjeg karaktera 144 do PETOG 132
                                'Prvi karakter hex-a 80 ili dec 128 
                                'poslednji karakter 8f ili  dec 144
 
    
 lcdout $fe,1                   'obrisi lcd
 lcdout $fe,b0 ,"Ulevo"
 PAUSE 200
 NEXT
 
 pause 2000                      'pauxa do sledeceg primera
 
 
 
 'primer pomeranja karaktera (slova, reci, znaka) UDESNO od prvog karaktera 128 do 6 karaktera 134
 
 
                   'obrisi lcd
 for b0=128 to 134 step 1       'postavi for ciklus od prvog karaktera do SESTOG
 lcdout $fe,1                  'obrisi lcd
 lcdout $fe,b0 ,"Udesno"
 PAUSE 200
 NEXT
 
 
 pause 2000  
  
    goto pocetak                'vrati se na pocetak
    
  End                           'kraj programa
Primer koda je za pic 16F628A
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Lep primer...
Ne bi bilo lose da postais primer koriscenja 1 reda displeja kao status bar-a. I definisanje nekih svojih karaktera, gde se moze od jedne matrice napraviti status baterije i sl stvari...
Post Reply