PBP naredbe od P do R

PAUSE
pause period
  Zaustavlja izvršavanje programa u trajanju od 'period' milisekundi. 'Period' je 16-to bitna vrednost, tako da pauza može da traje maksimalno 65 535 ms (nešto preko jednog minuta). Za razliku od NAP i SLEEP, PAUSE ne stavlja mikrokontroler u režim male potrošnje, samim tim ta naredba troši više struje, ali je i preciznija.
Ova naredba pretpostavlja da je upotrebljen oscilator od 4MHz; ako se koristi druga vrednost za oscilator, potrebno je upotrebiti DEFINE OSC naredbu.

    pause 1000    'pauza u trajanju od 1 sekunde

[nazad]

 

PAUSEUS
pauseus period

  Ova naredba je slična prethodnoj, ali je 'period' izražen u mikrosekundama (µs). Maksimalna pauza iznosi 65 535 µs. Pošto ova naredba koristi minimalan broj ciklusa za rad, u zavisnosti od upotrebljenog oscilatora postoji minimalna pauza koju je moguće ostvariti. Za kraće pauze upotrebite asmeblersku rutinu unutar ASM...ENDASM konstrukcije.

Oscilator
Minimalno kašnjenje
3(3.58)
20 µs
4
24 µs
8
12 µs
10
8 µs
12
7 µs
16
5 µs
20
3 µs
25*
2 µs
32*
2 µs
33*
2 µs
40**
2 µs
   *  samo PIC17Cxxx i PIC18Cxxx
   ** samo PIC18Cxxx

Ova naredba pretpostavlja da je upotrebljen oscilator od 4MHz; ako se koristi druga vrednost za oscilator, potrebno je upotrebiti DEFINE OSC naredbu.

    pauseus 1000     'pauza od 1 milisekunde

[nazad]

 

PEEK
peek address, var
  Čita registar na adresi 'address' i smešta vrednost u promenljivu 'var'. Specijalni registri PIC kontrolera, kao što su A/D konvertori i dodatni I/O portovi, mogu da se čitaju korišćenjem ove naredbe. Medjutim, svim registrima može se, i treba, prići bez korišćenja PEEK i POKE naredbi. Svi registri PIC kontrolera se smatraju za 8-mo bitnu promenljivu od strane PBP-a i mogu se koristiti kao bilo koja druga 8-mo bitna promenljiva, kako za direktno čitanje tako i za druga izračunavanja. Da naglasimo: PEEK i POKE naredbe ne bi trebalo nikada koristiti u PBP programu.

[nazad]

 

POKE
poke address, value
  Upisuje vrednost 'value' u registar na adresi 'address'. U specijalne registre, kao što su A/D konvertori i dodatni I/O portovi, može se upisati vrednost ovom naredbom. Medjutim, svim registrima može se, i treba, prići bez korišćenja PEEK i POKE naredbi. Svi registri PIC kontrolera se smatraju za 8-mo bitnu promenljivu od strane PBP-a i mogu se koristiti kao bilo koja druga 8-mo bitna promenljiva, kako za direktno čitanje tako i za druga izračunavanja. Da naglasimo: PEEK i POKE naredbe ne bi trebalo nikada koristiti u PBP programu.

[nazad]

 

POT
pot pin, scale, var
  Čita potenciometar ili neki drugi otpornik priključen na 'pin'. 'Pin' može da bude konstanta, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0). Otpornost se meri pomoću vremena za koje se prazni kondenzator kroz otpornik (tipično od 5K do 50K). 'Scale' se koristi za podešavanje za razne RC konstante. Za velike RC konstante, 'scale' treba postaviti na minimalnu vrednost, tj. na 1, a za male na 255. Ako je 'scale' ispravno podešen, 'var' bi trebalo da bude 0 pri najmanjem otporu, a 255 pri najvećem. Nažalost, 'scale' mora da se odredi eksperimentalno. Da bi ste to uradili, postavite potenciometar na maksimalnu vrednost i pročitajte vrednost 'var' dok je vrednost za 'scale' postavljena na 255. Pod tim uslovima u 'var' će se naći odgovarajuća vrednost za 'scale'.

    

pot 3, 255, b0 'pročitaj potenciometar na pinu 3 i smesti vrednost u b0 serout 0, n2400, [#b0]'pošalji vrednost b0 serijski na pin 0

[nazad]

 

PULSIN
pulsin pin, state, var
  Ova naredba meri širinu impulsa na pinu 'pin'. Ako je 'state' jednako nula, meri se trajanje perioda dok je na pinu logička nula, a ako je 'state'=1, meri se trajanje dok je na pinu logička jedinica; rezultat se smešta u promenljivu 'var'. Ako se željeni impuls nikada ne pojavi ili traje predugo, u 'var' se smešta vrednost 0. Ako se za 'var' upotrebi 8-mo bitna promenljiva, koristi se samo nižih osam bitova od 16-to bitne vrednosti. 'Pin' može da bude konstanta, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0).
Rezolucija ove naredbe zavisi od frekvence upotrebljenog oscilatora. Ako se koristi 4 MHz, rezolucija je 10 µs, a ako se koristi 20 MHz, rezolucija je 2 µs. DEFINE OSC nema efekta na ovu naredbu, rezolucija se menja u zavisnosti od stvarne frekvence oscilatora.

    pulsin portb.4, 1, w3   'meri trajanje impulsa na pinu rb4 i rezultat smešta u w3

[nazad]

 

PULSOUT
pulsout pin, period
  Generiše impuls na pinu 'pin' dužine 'period'. Impuls se generiše dvostrukom promenom stanja pina, tako da početno stanje na pinu odredjuje da li će biti generisan impuls ili pauza. 'Pin' može da bude konstanta, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0).
Rezolucija ove naredbe zavisi od frekvence upotrebljenog oscilatora. Ako se koristi 4 MHz, rezolucija je 10 µs, a ako se koristi 20 MHz, rezolucija je 2 µs. DEFINE OSC nema efekta na ovu naredbu, rezolucija se menja u zavisnosti od stvarne frekvence oscilatora.

    pulsout portb.5, 100   'pošalji impuls na RB5 su trajanju od 1ms (pri osc=4 MHz)

[nazad]

 

PWM
pwm pin, duty, cycle
  Šalje impulsno-širinsko modulisanu povorku impulsa na 'pin'. Svaki PWM ciklus se sastoji od 256 koraka. 'Duty' ciklus za svaki PWM ciklus se kreće od 0 (0%) do 255 (100%) i predstavlja procenat ispune PWM impulsa. PWM ciklus se ponavlja 'cycle' puta. 'Pin' može da bude konstanta, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0).
Vreme trajanja jednog cilkusa zavisi od frekvence oscilatora; ako je frekvenca 4 MHz, svaki ciklus traje približno 5 ms, a ako je 20 MHz, trajanje jednog ciklusa je približno 1 ms. DEFINE OSC nema efekta na ovu naredbu, rezolucija se menja u zavisnosti od stvarne frekvence oscilatora.
'Pin' se postavlja kao izlaz neposredno pre generisanja impulsa i postavlja se kao ulaz nakon završenog generisanja. PWM izlaz na pinu nije za upotrebu, pa je potrebno staviti neki filter. Obično RC kolo može da se upotrebi kao jednostavan D/A konvertor.

    
    pwm portb.7, 127, 100   'šalje 100 PWM impulsa sa 50% ispune na RB7

[nazad]

 

RANDOM
random var
  U promenljivu 'var' smešta pseudo slučajni broj u intervalu od 1 do 65535, što znači da 'var' mora da bude 16-to bitna promenljiva. Broj koji se dobije zove se pseudo slučajni jer je dobijen primenom matematičke formule. Nizovi sa promenljivim indeksom ne mogu da se koriste u ovoj naredbi, dok nizovi sa fiksnim indeksom mogu.

     random w4     'smešta pseudo slučajni broj u promenljivu w4

[nazad]

 

RCTIME
rctime pin, state, var
  RCTIME meri vreme koje 'pin' provede u stanju 'state'; to je, u stvari, polovina naredbe PULSIN. 'Pin' može da bude konstanta, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0).
RCTIME može da se koristi za merenje otpora potenciometra ili nekog drugog otpora. Otpornost se meri pomoću vremena za koje se prazni kondenzator kroz otpornik (tipično od 5K do 50K). Rezolucija ove naredbe zavisi od frekvence upotrebljenog oscilatora. Ako se koristi 4 MHz, rezolucija je 10 µs, a ako se koristi 20 MHz, rezolucija je 2 µs. DEFINE OSC nema efekta na ovu naredbu, rezolucija se menja u zavisnosti od stvarne frekvence oscilatora.
Ako pin nikada ne promeni stanje, naredba vraća vrednost 0.

    low portb.3             'isprazni kondenzator za početak
    pause 10                'prazni ga 10 ms
    rctime porb.3, 0, w0    'pročitaj potenciometar priključen na RB3

[nazad]

 

READ
read address, var
 
Čita sadržaj EEPROMA ugradjenog u čip sa adrese 'address' i vrednost smešta u promenljivu 'var'. Naredba READ radi samo sa mikrokontrolerima koji imaju "direktni" EEPROM na sebi, kao što su PIC16F84 ili PIC16C84; ova naredba ne radi sa mikrokontrolerima kod kojih ugradjeni EEPROM ima I2C interfejs, kao što su 12CE67X ili 16CE62X. Kod njih upotrebite naredbu I2CREAD.

    read 5, b2    'čita sadržaj adrese 5 EEPROM-a i smešta u promenljivu b2

[nazad]

 

READCODE
READCODE address, var
  Čita lokaciju programske memorije na adresi 'address' i rezultat smešta u promenljivu 'var' koja je tipa "word". PIC16F87x kontroleri dozvoljavaju da se programski kod čita i upisuje za vreme rada kontrolera. Iako ova tehnika samomodifikujućeg programa može da bude opasna, ona može da omogući smeštanje i čuvanje podataka od 64 do 256 bajtova i mora da se vodi računa da se ne prepiše aktivni program.

    readcode 100, w   'čita adresu 100 programske memorije i sadržaj smešta u promenljivu w

[nazad]

 

RESUME
resume {label}
  Nastavlja izvršavanje programa od adrese na kojoj je prekinut zbog izvršavanja interapta. Ova naredba je slična naredbi RETURN, ali se koristi na kraju PBP interapt rutine. Ako se opciono upotrebi labela 'label', program će nastaviti izvršavanje od te labele, umesto da nastavi tamo gde je prekinut. U tom slučaju nijedna adresa povratka koja se čuva na steku neće više biti dostupna. Za više informacija, pogledajte naredbu ON INTERRUPT.

[nazad]

 

RETURN
return
  Ova naredba omogućava povratak iz potprograma i nastavlja izvršavanje glavnog programa od naredbe koja se nalazi iza naredbe GOSUB, koja je pozvala potprogram.

    gosub sub1                  'idi na potprogram na labeli sub1
    ...
    ...
sub1:
    serout 0, n2400, ["Lunch"]  'pošalji "Lunch" serijski na pin 0
    return                      'vrati se iz potprograma u glavni program iza naredbe GOSUB

[nazad]

 

REVERSE
reverse pin
  Ako je 'pin' bio ulaz, postaje izlaz i obrnuto. 'Pin' može da bude konstanta, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0).

    output 4     'pin 4 postavi kao izlaz
    reverse 4    'promeni smer pina 4, tj. postavi ga kao ulaz 
   

[nazad]