[sledeći]
PBP naredbe od W do X

WHILE .. WEND
while condition statement ... wend
  Izvršava naredbe 'statement' izmedju WHILE i WEND sve dok je uslov 'condition' tačan; kada uslov postane netačan, izvršavanje se nastavlja od naredbe iza WEND. Uslov 'condition' može da bude bilo koji izraz uporedjivanja.

    i=1                                    'početna vrednost za promenljivu i
    while i <= 10                          'izvršavaj sve dok je i manje ili jednako 10
      serout 0, n2400, ["No:", #i, 13, 10] 'pošalji serijski
      i=i+1                                'uvećaj i za 1
    wend                                   'ako je uslov tačan,vrati se na naredbu iza WHILE

[nazad]

 

WRITE
write address, value
  Upisuje vrednost 'value' u EEPROM ugradjen u čip na adresu 'address'. Ova naredba radi samo sa PIC kontrolerima koji imaju ugradjen EEPROM na čipu kao što su PIC16C84, 16F84 i serija PIC16F87x.
WRITE se koristi za upis podataka u toku rada programa; za upis vrednosti u EEPROM pri programiranju, upotrebite naredbe DATA ili EEPROM.
Ova naredba traje otprilike 10 ms, jer je toliko potrebno da bi se izvršio upis u EEPROM. Ako se u programu koriste interapti, pre izvršenja ove naredbe moraju biti onemogućeni (maskirani, ne i isključeni DISABLE naredbom), a nakon završenog upisa mogu biti ponovo omogućeni, ako je potrebno. Ako nastupi interapt za vreme ove naredbe, može doći do pogrešnog upisa.
WRITE naredbe neće raditi sa kontrolerima koji imaju I2C interfejs za EEPROM, kao što su PIC12CE67x i 16CE62x. Za njih upotrebite I2CWRITE naredbu da bi ste izvršili upis u EEPROM.

    write 5, b0     'upiši sadržaj promenljive b0 na lokaciju 5 EEPROM-a

[nazad]

 

WRITECODE
writecode address, value

  Upisuje vrednost 'value' word tipa na adresu 'address' u prostor programske memorije. Kod PIC16F87x serije kontrolera omogućeno je čitanje i upis u memorijski prostor za vreme izvršavanja programa, ali treba biti vrlo pažljiv pri upotrebi ove naredbe.
Ako se u programu koriste interapti, pre izvršenja ove naredbe moraju biti onemogućeni (maskirani, ne i isključeni DISABLE naredbom), a nakon završenog upisa mogu biti ponovo omogućeni, ako je potrebno. Ako nastupi interapt za vreme ove naredbe, može doći do pogrešnog upisa.

    writecode 100, w    'upiši vrednost promenljive w u lokaciju na adresi 100

[nazad]

 

XIN
xin datapin, zeropin, {timeout, label, }[var{, ...}]

  Prima X-10 podatke i smešta "house code" i "key code" u promenljive 'var'. Ova naredba prima informacije od X-10 uredjaja koji mogu da daju takvu informaciju. X-10 moduli mogu da se nabave na više mesta pod raznim imenima.
Za povezivanje mikrokotrolera na mrežni napon potreban je interfejs; za XIN je potreban dvosmerni TW-523 interfejs sa X-10 protokolom. On sadrži interfejs za povezivanje na mrežni napon i izoluje kontroler od istog.
'Datapin' se automatski postavlja kao ulaz da bi primao podatke od X-10 interfejsa.
'Zeropin' se automatski postavlja kao ulaz da bi primio informaciju iz X-10 interfejsa o prolasku mrežnog napona kroz nulu. Na oba pina treba da se postavi pull-up otpornik od 4K7 prema +5 V.
'Datapin' i 'zeropin' mogu da budu konstante, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0).
Opciono mogu da se upotrebe 'timeout' i 'label' da bi se omogućilo programu da nastavi dalje u slučaju da nije primljen podatak za odredjeno vreme. 'Timeout' je izražen u poluperiodama mrežnog naizmeničnog napona (za 50 Hz to je 10 ms). XIN prikuplja podatke pri svakom prolasku kroz nulu; ako na 'zeropin' pinu ne postoji nikakva promena, XIN ce da čeka zauvek. Ako je 'var' promenljiva tipa "word", svaki primljeni "house code" je smešten u viši bajt, a "key code" u niži bajt promenljive. Ako je 'var' tipa "byte", sačuvan je samo "key code".
"House code" je broj od 0 do 15 koji odgovara "house code"-u postavljenom na X-10 modulu koji je obeležen slovima od A do P.
"Key code" može da bude ili broj odredjenog X-10 modula, ili funkcija koju treba da uradi modul. U standradnom režimu rada, prvo se šalje komanda koja odredjuje kom X-10 modulu se šalje, a zatim se šalje komanda koja odredjuje željenu funkciju izabranog modula. Neke funkcije rade na svim modulima istovremeno, tako da broj modula nije neophodan. Kasniji primeri će ovo razjasniti. "Key code" brojevi od 0 do 15 odgovaraju modulima od 1 do 16. Uz XOUT komandu biće objašnjene funkcije i povezivanje.

primer 1:
    xin porta.2, porta.0, 1, nodata, [housekey] 'proveri ima li X-10 podatak na mreži, ako
                                                'ne, idi na labelu nodata 
primer 2:
    housekey var word loop: xin porta.2, porta.0, [housekey]         'uzmi X-10 podatak
    lcdout $fe,1, "House=", #housekey.byte1, "Key=", #housekey.byte0 'prikaži ga na LCD-u
    goto loop                                                        'idi ponovo

[nazad]

 

XOUT
xout datapin, zeropin, [housecode\keycode{\repeat}{, ...}]
  Šalje "housecode", a zatim "keycode" u X-10 formatu i ponavlja slanje 'repeat' puta. Ako se opcioni parametar 'repeat' izostavi, podaci se šalju bar dva puta. 'Repeat' se obično koristi uz komande BRIGHT i DIM.
XOUT se koristi za slanje podataka X-10 modulima. Neophodan je interfejs da bi se kontroler povezao na mrežni napon. Može da se upotrebi PL-513 samo za slanje, ili TW-523 za dvosmernu komunikaciju. Oni sadrže interfejs za povezivanje na mrežni napon i izoluju kontroler od istog.
'Datapin' se automatski postavlja kao izlaz da bi slao podatke X-10 interfejsu.
'Zeropin' se automatski postavlja kao ulaz da bi primio informaciju iz X-10 interfejsa o prolasku mrežnog napona kroz nulu. Na taj pin treba da se postavi pull-up otpornik od 4K7 prema +5 V. 'Datapin' i 'zeropin' mogu da budu konstante, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0).
XOUT šalje podatke pri svakom prolasku kroz nulu; ako na 'zeropin' pinu ne postoji nikakva promena, XOUT će da čeka zauvek.
"House code" je broj od 0 do 15 koji odgovara "house code"-u postavljenom na X-10 modulu koji je obeležen slovima od A do P. Odgovarajući "housecode" mora biti poslat kao deo svake komande.
"Key code" može da bude ili broj odredjenog X-10 modula, ili funkcija koju treba da uradi modul. U standradnom režimu rada, prvo se šalje komanda koja odredjuje kom X-10 modulu se šalje, a zatim se šalje komanda koja odredjuje željenu funkciju izabranog modula. Neke funkcije rade na svim modulima istovremeno, tako da broj modula nije neophodan. Kasniji primeri će ovo razjasniti.
"Key code" brojevi od 0 do 15 odgovaraju modulima od 1 do 16. Nazivi za "keycode" (npr. uniton) su definisani u fajlu "modedefs.bas". Da bi ih koristili, dodajte sledeću liniju na početku PBP programa:

    include "modedefs.bas"

Brojevi za "keycode" mogu da se koriste bez uključivanja ovog fajla u program.

Keycode
Keycode br.
Operacija
uniton
%10010
uključi modul
unitoff
%11010
isključi modul
unitsoff
%11100
isključi sve module
lightson
%10100
uključi sve module za svetlo
lightsoff
%10000
isključi sve module za svetlo
bright
%10110
pojačaj osvetljaj modula za svetlo
dim
%11110
smanji osvetljaj modula za svetlo

Za povezivanje sa X-10 modulom potrebne su 4 žice. Izlazi iz X-10 interfejsa (podatak i prolazak kroz nulu) su "open-collector" tipa i zahtevaju pull-up otpornik od 4K7 prema +5 V. Slede tabele izvoda za oba interfejsa:

Izvodi za PL-513

Br. žice
Boja žice
Opis pina
1
crna
izlaz prolaska kroz nulu
2
crvena
masa prolaska kroz nulu
3
zelena
X-10 izlaz
4
žuta
masa za X-10 izlaz

 

Izvodi za TW-523

Br. žice
Boja žice
Opis pina
1
crna
izlaz prolaska kroz nulu
2
crvena
zajednicka masa
3
zelena
X-10 izlaz
4
žuta
X-10 ulaz

 

primer 1:
house var byte
unit  var byte
    include "modedefs.bas"
    house=0                                             'postavi house na 0 (A)
    unit=8                                              'postavi unit na 8 (9)
    xout porta.1, porta.0, [house\unit, house\uniton]   'uključi modul 8 u kući 0
    xout porta.1, porta.0, [house\lightsoff]            'isključi sva svetla u kući 0

primer 2: uključuje i isključuje svakih 10 sekundi uredjaj 0
    xout porta1., porta.0, [house\0]         'odaberi uredjaj 0
loop:
    xout porta.1, porta.0, [house\uniton]    'uključi uredjaj 0
    pause 10000 'pauza od 10 sekundi
    xout porta.1, porta.0, [house\unitoff]   'isključi uredjaj 0
    pause 10000                              'pauza od 10 sekundi
    goto loop

[nazad]

[sledeći]