PBP naredbe od S do T

SERIN
serin pin, mode, {timeout, label,}{[qualifier...],}{item...}
  Prima jedan ili više 'item'-a na pinu 'pin' u standardnom asinhronom formatu, 8 bitova podataka, bez bita parnosti, jedan stop bit (8N1). 'Pin' se automatski postavlja kao ulaz. '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).
Imena režima (modova) rada, 'mode', definisana su u fajlu "modedefs.bas". Da bi ste ih koristili, na početku programa dodajte liniju

    include "modedefs.bas"

Fajlovi "bs1defs.bas" i "bs2defs.bas" su vec uključeni u "modedefs.bas" pa ih nemojte ponovo navoditi u programu. Brojevi za 'mode' mogu biti korišćeni bez uključivanja ovog fajla.

Mod
Broj moda
Baud rate
Stanje
T2400
0
2400
pravo (realno)
T1200
1
1200
T9600
2
9600
T300
3
300
N2400
4
2400
invertovano
N1200
5
1200
N9600
6
9600
N300
7
300

Opciono mogu da se upotrebe 'timeout' i 'label' da omoguće programu da nastavi izvršavanje od labele 'label' ako u 'timeout' vremenu nije primljen ni jedan karakter. 'Timeout' se izražava u milisekundama. Pre liste podataka koji se primaju može da se nalazi jedan ili više 'qualifier'-a unutar uglastih zagrada. SERIN mora da primi te bajtove u navedenom redosledu pre primanja ostalih znakova. Ako se neki od primljenih bajtova ne poklapa sa sledećim u listi, proces počinje ispočetka, tj. čeka se da naidje prvi karakter naveden u 'qualifier' listi. 'Qualifier' može da bude konstanta, promenljiva, ili string konstanta. Svaki karakter stringa se tretira kao zaseban kvalifikator. Kada se prime svi kvalifikatori, SERIN počinje da smešta naredne primljene karaktere u promenljive u navedene 'item'-e. Ako se navede samo ime promenljive, vrednost primljenog ASCII karaktera se smešta u promenljivu. Ako se ispred imena promenljive stavi znak "#", SERIN konvertuje decimalnu vrednost u ASCII i rezultat smešta u tu promenljivu. Sve što je primljeno pre prve cifre, a nije cifra, se ignoriše. Takodje se ignoriše i sve što je primljeno na kraju decimalne cifre, a nije cifra.
SERIN pretpostavlja da se koristi oscilator od 4 MHz za generisanje odgovarajuće brzine. Ako koristite drugi oscilator, uptorebite DEFINE OSC naredbu.
Iako su RS-232 konvertori nivoa uobičajeni i jeftini, zahvaljujući odličnim I/O karakteristikama PIC mikrokontrolera, većina aplikacija ne zahteva konvertore nivoa. Zbog toga se radije koristi invertovani mod (N300 - N9600). Preporučuje se otpornik za ograničenje struje (mada bi RS-232 trebalo da bude otporan na kratak spoj).
Shema spajanja PIC-a sa serijskim portom računara ista je kao za naredbu DEBUGIN.

    serin 1, n2400, ["A"], b0   'čeka dok ne primi karakter A, zatim sledeću primljenu
                                'vrednost smešta u promenljivu b0

[nazad]

 

SERIN2
serin2 datapin{\flowpin}, mode, {paritylabel,} {timeout, label,} [item...]
  Prima jedan ili više 'item'-a na pinu 'datapin' u standardnom asinhronom formatu; 'datapin' se automatski postavlja kao ulaz. Opcioni 'flowpin' se automatski postavlja kao izlaz. 'Datapin' i 'flowpin' mogu da budu konstante, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0).
Opcioni pin za kontrolu protoka, 'flowpin', može da se uključi da spreči da podaci "prepune" prijemnik. Ako se upotrebi, 'flowpin' se automatski postavlja u uključeno stanje da omogući slanje svakog karaktera. Ovo uključeno stanje je odredjeno polaritetom podataka odredjenim sa 'mode' parametrom.
'Mode' se koristi da odredi brzinu i radne parametre serijskog prenosa. Donjih 13 bitova (od 0 do 12) odredjuje brzinu, bit 13 odredjuje ima li parnosti ili ne, a bit 14 odredjuje pravi (realni) ili invertovani nivo. Bit 15 se ne koristi. Za računanje vrednosti na koju treba da se postave prvih 13 bitova za odredjenu brzinu (baud rate), koristi se sledeća formula:

vrednost=(1 000 000 /baudrate)-20

Vrednosti za neke standardne brzine date su su sledećoj tabeli:

Baud rate
Bitovi 0 - 12
300
3313
600
1646
1200
813
2400
396
4800
188
9600
84
19200
32

Bit 13 odredjuje parnu proveru parnosti (bit 13=1) ili bez provere parnosti (bit 13=0). Normalno, parametri za serijsku komunikaciju su 8N1 (8 bitova podataka, bez bita parnosti, 1 stop bit). Ako je odabrana provera parnosti, parametri su 7E1 (7 bitova podataka, parna provera parnosti, 1 stop bit).
Bit 14 odredjuje nivo pri prijemu podataka. Ako je bit 14=0, podatak se prima realno, u obliku pogodnom za RS-232 drajver. Ako je bit 14=1, podaci su invertovani; ovaj mod može da se upotrebi da bi se izbeglo korišćenje RS-232 drajvera (konvertora nivoa). Nekoliko primera za 'mode': 'mode'=84 (9600 bauda, bez parnosti, realno), 'mode'=16780 (2400 bauda, bez parnosti, invertovano), 'mode'=27889 (300 bauda, parna parnost, invertovano).
Ako se koristi 'paritylabel', na nju će program da skoči ako se primi karakter sa greškom pri proveri parnosti. Ona treba da se koristi samo ako je bit 13=1. Opciono mogu da se upotrebe 'timeout' i 'label' da omoguće programu da nastavi izvršavanje od labele 'label' ako u 'timeout' vremenu nije primljen ni jedan karaker. 'Timeout' se izražava u milisekundama. Pomoću DEFINE naredbe mogu da se odrede i druge vrednosti broja bitova za podatke.
Sa isključenom proverom parnosti (podrazumevana vrednost):

    DEFINE SER2_BITS 4 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 4
    DEFINE SER2_BITS 5 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 5
    DEFINE SER2_BITS 6 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 6
    DEFINE SER2_BITS 7 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 7
    DEFINE SER2_BITS 8 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 8

Sa uključenom proverom parnosti:

    DEFINE SER2_BITS 5 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 4
    DEFINE SER2_BITS 6 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 5
    DEFINE SER2_BITS 7 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 6
    DEFINE SER2_BITS 8 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 7
    DEFINE SER2_BITS 9 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 8

SERIN podržava nekoliko modifikatora za obezbedjivanje različitih ulaznih formata:

Modifikator
Operacija
BIN{1...16}
prima binarne cifre
DEC{1...5}
prima decimalne cifre
HEX{1...4}
prima heksadecimalne cifre
SKIP n
preskače n primljenih karaktera
STR ArrayVar\n{\c}
prima string od n karaktera, opcino se završava c karakterom
WAIT ( )
čeka odredjenu sekvencu karaktera
WAITSTR ArrayVar{\n}
čeka karakter string

1) Ako se ispred promenljive stavi BIN, promenljiva će da primi ASCII izgled binarne vrednosti. Npr., ako se navede
    promeljiva BIN b0 i primi se "1000", b0 će imati vrednost 8.
2) Ako se ispred promenljive stavi DEC, promenljiva će da primi ASCII izgled decimalne vrednosti. Npr., ako se navede
    promeljiva DEC b0 i primi se "123", b0 će imati vrednost 123.
3) Ako se ispred promenljive stavi HEX, promenljiva će da primi ASCII izgled heksadecimalne vrednosti. Npr., ako se
    navede promeljiva HEX b0 i primi se "FE", b0 će imati vrednost 254.
4) SKIP će da preskoči onoliko vrednosti koliko je navedeno. Na primer, SKIP 4 će da preskoči četiri primljena
    karaktera.
5) STR će da primi navedeni broj karaketra u niz tipa 'byte' ili će prijem da se završi kada se primi opcioni karakter.
6) Pre liste podataka koji se primaju, može da se nalazi jedan ili više kvalifikatora unutar uglastih zagrada nakon WAIT.
    SERIN2 mora da primi te bajtove u navedenom redosledu pre primanja ostalih znakova. Ako se neki od primljenih
    bajtova ne poklapa sa sledećim u listi, proces počinje ispočetka, tj. čeka se da naidje prvi karakter naveden u listi.
    Kvalifikator može da bude konstanta, promenljiva, ili string konstanta. Svaki karakter stringa se tretira kao zaseban
    kvalifikator.
7) WAITSTR može da se koristi kao i WAIT da primora SERIN2 da sačeka string karaktera opciono odredjene dužine
    pre nego što nastavi dalje.

Kada WAIT ili WAITSTR prime sve kvalifikatore, SERIN2 počinje da smešta naredne primljene karaktere u promenljive u navedene 'item'-e. Ako se navede samo ime promenljive, vrednost primljenog ASCII karaktera se smešta u promenljivu. Ako se ispred naziva promenljive stavi BIN, DEC ili HEX, onda SERIN2 konvertuje binarnu, decimalnu ili heksadecimalnu vrednost u ASCII i smešta je u promenljivu. Sve što je primljeno pre prve cifre decimalne vrednosti, a nije cifra, se ignoriše. Takodje se ignoriše i sve što je primljeno na kraju, a nije cifra. Iza BIN, DEC ili HEX može da se nalazi broj koji označava koliko će cifara primiti SERIN2.
SERIN2 pretpostavlja da se koristi oscilator od 4 MHz za generisanje odgovarajuće brzine. Ako koristite drugi oscilator, upotrebite DEFINE OSC naredbu.
Iako su RS-232 konvertori nivoa uobičajeni i jeftini, zahvaljujući odličnim I/O karakteristikama PIC mikrokontrolera, većina aplikacija ne zahteva konvertore nivoa. Zbog toga se radije koristi invertovani TTL mod ('mode' bit 14=1). Preporučuje se otpornik za ograničenje struje (mada bi RS-232 trebalo da bude otporan na kratak spoj).
Shema spajanja PIC-a sa serijskim portom računara ista je kao za naredbu DEBUGIN.

    serin2 1, 16780, [wait ("A"), b0] 'sačekaj dok se serijski ne primi karakter "A" na
                                      'pinu 1, zatim stavi sledeći primljeni karakter u b0
    serin2 porta.1, 84, [skip 2, dec4 bo] 'preskoči 2 karaktera i uzmi 4 cifre
                                          'decimalnog broja

[nazad]

 

SEROUT
serout pin, mode, [item{, item...}]
  Šalje jedan ili više 'item'-a na 'pin' u standardnom asinhronom formatu, 8 bitova podataka, bez bita parnosti, jedan stop bit (8N1). 'Pin' se automatski postavlja kao izlaz. '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).
Imena režima (modova) rada, 'mode', definisana su u fajlu "modedefs.bas". Da bi ste ih koristili, na početku programa dodajte liniju

    include "modedefs.bas"

Fajlovi "bs1defs.bas" i "bs2defs.bas" su već uključeni u "modedefs.bas" pa ih nemojte ponovo navoditi u programu. Brojevi za 'mode' mogu biti korišćeni bez uključivanja ovog fajla.

Mod
Broj moda
Baud rate
Stanje
T2400
0
2400
pravo (realno)
T1200
1
1200
T9600
2
9600
T300
3
300
N2400
4
2400
invertovano
N1200
5
1200
N9600
6
9600
N300
7
300
OT2400
8
2400
otvoreno pravo
OT1200
9
1200
OT9600
10
9600
OT300
11
300
ON2400
12
2400
otvoreno invertovano
ON1200
13
1200
ON9600
14
9600
ON300
15
300

SEROUT podržava tri različita tipa podataka koji mogu slobodno da budu mešani u okviru jedne naredbe.
1) String konstanta se šalje kao string karaktera.
2) Brojčana vrednost (bilo promenljiva ili konstanta) se šalje kao odgovarajući ASCII karakter. Na primer, 13 je CR,
    a 10 LF.
3) Brojčana vrednost ispred koje se stavi znak "#" će biti poslata kao ASCII izgled te vrednosti. Npr, ako je w0=123, onda će #w0 biti poslato kao "1", "2" i "3".

SEROUT pretpostavlja da je upotrebljen oscilator od 4 MHz pri računanju brzine. Ako koristite drugu frekvencu za oscilator, upotrebite DEFINE OSC da kažete PBP-u koju frekvencu koristite.
U nekim slučajevima slanje karaktera može da bude prebrzo za prijemni uredjaj. Sa DEFINE se može dodati pauza izmedju slanja dva uzastopna karaktera i to od 1 do 65535 us. Na primer, za razmak izmedju slanja dva karaktera od 1 ms, napišite sledeće:

    DEFINE CHAR_PACING 1000

Iako su RS-232 konvertori niova uobičajeni i jeftini, zahvaljujući odličnim I/O karakteristikama PIC mikrokontrolera, većina aplikacija ne zahteva konvertore nivoa. Zbog toga se radije koristi invertovani TTL mod (N300-N9600). Preporučuje se otpornik za ograničenje struje (mada bi RS-232 trebalo da bude otporan na kratak spoj).
Shema spajanja PIC-a sa serijskim portom računara ista je kao za naredbu DEBUG.

    serout 0, N2400, [#b0, 10] 'šalje ASCII vrednost b0, a zatim LF na pin 0

[nazad]

 

SEROUT2
serout2 datapin {\flowpin}, mode, {pace,}{timeout, label,}[item...]
  Šalje jedan ili više 'item'-a na pin 'datapin' u standardnom asinhronom formatu; 'datapin' se automatski postavlja kao izlaz. Opcioni 'flowpin' se automatski postavlja kao ulaz. 'Datapin' i 'flowpin' mogu da budu konstante, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0).
Opcioni pin za kontrolu protoka, 'flowpin', može da se uključi da spreči da podaci "prepune" prijemnik. Ako se upotrebi, podaci neće biti poslati dok se 'flowpin' ne postavi u odgovarajuće stanje. Ovo stanje je odredjeno polaritetom podataka odredjenim sa 'mode' parametrom.
Opciono mogu da se upotrebe 'timeout' i 'label' da bi se omogućilo programu da nastavi dalje u slučaju da 'flowpin' ne promeni stanje na "omogućeno" za odredjeno vreme. 'Timeout' je izražen u milisekundama.
U nekim slučajevima slanje karaktera može da bude prebrzo za prijemni uredjaj. Opciono može da se upotrebi 'pace' za povećanje razmaka izmedju slanja dva karaktera i to od 1 do 65535 ms.
'Mode' se koristi da odredi brzinu i radne parametre serijskog prenosa. Donjih 13 bitova (od 0 do 12) odredjuju brzinu, bit 13 odredjuje ima li parnosti ili ne, a bit 14 odredjuje pravi (realni) ili invertovani nivo. Bit 15 odredjuje da li je otvoren ili ne. Za računanje vrednosti na koju treba da se postave prvih 13 bitova za odredjenu brzinu (baud rate), koristi se sledeća formula:

vrednost=(1 000 000 /baudrate)-20

Vrednosti za neke standardne brzine date su su sledećoj tabeli:

Baud rate
Bitovi 0 - 12
300
3313
600
1646
1200
813
2400
396
4800
188
9600
84
19200
32

Bit 13 odredjuje parnu proveru parnosti (bit 13=1) ili bez provere parnosti (bit 13=0). Normalno, parametri za serijsku komunikaciju su 8N1 (8 bitova podataka, bez bita parnosti, 1 stop bit). Ako je odabrana provera parnosti, parametri su 7E1 (7 bitova podataka, parna provera parnosti, 1 stop bit).
Bit 14 odredjuje nivo pri prijemu podataka. Ako je bit 14=0, podatak se prima realno, u obliku pogodnom za RS-232 drajver. Ako je bit 14=1, podaci su invertovani; ovaj mod može da se upotrebi da bi se izbeglo korišćenje RS-232 drajvera (konvertora nivoa).
Bit 15 odredjuje da li je pin uvek na nekom logičkom nivou (bit 15=0) ili je otvoren u jednom od stanja (bit 15=1). Otvoreni režim može da se koristi ako se na istu serijsku liniju vezuje više uredjaja.
Nekoliko primera za 'mode': 'mode'=84 (9600 bauda, bez parnosti, realno), 'mode'=16780 (2400 bauda, bez parnosti, invertovano), 'mode'=60657 (300 bauda, parna parnost, invertovano, otvoreno).
Pomoću DEFINE naredbe mogu da se odrede i druge vrednosti broja bitova za podatke.
Sa isključenom proverom parnosti (podrazumevana vrednost):

    DEFINE SER2_BITS 4 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 4
    DEFINE SER2_BITS 5 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 5
    DEFINE SER2_BITS 6 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 6
    DEFINE SER2_BITS 7 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 7
    DEFINE SER2_BITS 8 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 8

Sa uključenom proverom parnosti:

    DEFINE SER2_BITS 5 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 4
    DEFINE SER2_BITS 6 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 5
    DEFINE SER2_BITS 7 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 6
    DEFINE SER2_BITS 8 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 7
    DEFINE SER2_BITS 9 'postavlja za SERIN2 i SEROUT2 broj bitova podataka na 8

SEROUT2 podržava nekoliko modifikatora za obezbedjivanje različitih izlaznih formata:

Modifikator
Operacija
{I}{S}BIN{1...16}
šalje binarne cifre
{I}{S}DEC{1...5}
šalje decimalne cifre
{I}{S}HEX{1...4}
šalje heksadecimalne cifre
REP c\n
ponavlja slanje karaktera c n puta
STR ArrayVar{\n}
šalje string od n karaktera

1) String konstanta se šalje kao string karaktera.
2) Brojčana vrednost (bilo promenljiva ili konstanta) se šalje kao odgovarajući ASCII karakter. Na primer, 13 je CR,
    a 10 LF.
3) Ako se ispred promenljive stavi BIN, biće poslat ASCII izgled binarne vrednosti. Npr., ako je b0=8, BIN b0 će poslati
    "1000"
4) Ako se ispred promenljive stavi DEC, biće poslat ASCII izgled decimalne vrednosti. Npr., ako je b0=123, DEC b0 će
    poslati "123".
5) Ako se ispred promenljive stavi HEX, biće poslat ASCII izgled heksadecimalne vrednosti. Npr., ako je b0=254, biće
    poslato "FE".
6) Ako se ispred karaktera stavi REP, a iza broj, biće poslat taj karakter onoliko puta koliko pokazuje broj. Npr.,
    REP "0"\4 će poslati "0000".
7) Ako se iza STR navede niz tipa "bajt" i iza njega opcioni broj, biće poslat string karaktera. Dužina stringa je odredjena
    opcionim brojem, ili kada se pojavi "0" u stringu.

Ispred BIN, DEC i HEX mogu da se nadju neki opcioni parametri. Ako se ispred njih nadje "I", na početku će biti poslat znak "%" ili "#" ili "$" da pokaže da je vrednost koja sledi binarna, decimalna ili heksadecimalna.
Ako se ispred nadje "S", biće poslat znak "-" ako je najteži bit setovan. Na ovaj način mogu da se šalju negativni brojevi. Imajte na umu da su matematičke operacije i operacije poredjenja u PBP-u neoznačene. Medjutim, uz mali trik neoznačene matematičke operacije mogu da daju označene rezultate. Npr. uzmimo da je b0=9 - 10; rezultat će biti 255. Slanjem SDEC b0, dobićemo "-1".
Iza BIN, DEC i HEX može da se nadje i broj koji kazuje SEROUT2 naredbi koliko cifara će biti poslato; ako je potrebno, biće poslate vodeće nule, ili odsečen višak cifara. Npr. BIN6 8 će poslati "001000", a BIN2 8 "00". Moguće je odjednom upotrebiti više modifikatora, npr., ISDEC4 b0.
SEROUT2 pretpostavlja da se koristi oscilator od 4 MHz za generisanje odgovarajuće brzine. Ako koristite drugi oscilator, upotrebite DEFINE OSC naredbu.
Iako su RS-232 konvertori nivoa uobičajeni i jeftini, zahvaljujući odličnim I/O karakteristikama PIC mikrokontrolera, većina aplikacija ne zahteva konvertore nivoa. Zbog toga se radije koristi invertovani TTL mod ('mode' bit 14=1). Preporučuje se otpornik za ograničenje struje (mada bi RS-232 trebalo da bude otporan na kratak spoj).
Shema spajanja PIC-a sa serijskim portom računara ista je kao za naredbu DEBUG.

    serout2 0, 16780, [dec b0,10] 'šalje serijski na pin 0 brzinom 2400 ASCII vrednost b0,
                                  'a zatim LF karakter
    serout2 porta.1, 84, ["b0=", ihex4 b0]  'šalje serijski na RA1 brzinom 9600 prvo tekst
                                            '"b0=", zatim binarnu vrednost promenljive b0

[nazad]

 

SHIFTIN
shiftin datapin, clockpin, mode, [var{\bits}...]

  Sinhrono sa takt signalom na pinu 'clockpin' ubacuje bitove koji stižu na pin 'datapin' u promenljivu 'var'. 'Clockpin' i 'datapin' mogu da budu konstante, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0). Opcioni parametar '\bits' odredjuje koliko će bitova biti ubačeno u promenljivu. Ako se ne navede, podrazumeva se 8, bez obzira na tip promenljive.
Imena režima (modova) rada, 'mode', definisana su u fajlu "modedefs.bas". Da bi ste ih koristili, na početku programa dodajte liniju

    include "modedefs.bas"

Fajlovi "bs1defs.bas" i "bs2defs.bas" su već uključeni u "modedefs.bas" pa ih nemojte ponovo navoditi u programu. Brojevi za 'mode' mogu biti korišćeni bez uključivanja ovog fajla.
Za modove od 0 do 3, kada je takt neaktivan pri niskom stanju, takt prelazi na visoko stanje da bi se ubacio jedan bit, a zatim se vraća na nisko stanje. Za modove od 4 do 7, stanje je obrnuto.

Mod
Broj moda
Opis moda
MSBPRE
0
prvo se učitava bit najveće težine, podatak se čita pre slanja takta. takt neaktivan pri niskom stanju.
LSBPRE
1
prvo se učitava bit najmanje težine, podatak se čita pre slanja takta. takt neaktivan pri niskom stanju.
MSBPOST
2
prvo se učitava bit najveće težine, podatak se čita nakon slanja takta. takt neaktivan pri niskom stanju.
LSBPOST
3
prvo se učitava bit najmanje težine, podatak se čita nakon slanja takta. takt neaktivan pri niskom stanju.
 
4
prvo se učitava bit najveće težine, podatak se čita pre slanja takta. takt neaktivan pri visokom stanju.
 
5
prvo se učitava bit najmanje težine, podatak se čita pre slanja takta. takt neaktivan pri visokom stanju.
 
6
prvo se učitava bit najveće težine, podatak se čita nakon slanja takta. takt neaktivan pri visokom stanju.
 
7
prvo se učitava bit najmanje težine, podatak se čita nakon slanja takta. takt neaktivan pri visokom stanju.

Takt ima frekvencu od otprilike 50 KHz (zavisno od upotrebljenog oscilatora). Aktivno stanje takta traje minimalno dve mikrosekunde (µs). Pomoću DEFINE naredbe moguće je produžiti trajanje aktivnog stanja takta i to do 65 535 µs da bi se usporila brzina takta. Dodatno minimalno kašnjenje je odredjeno pomocu PAUSEUS parametra. Na primer, da bi se usporio takt za dodatnih 100 mikrosekundi:

    DEFINE SHIFT_PAUSEUS 100 shiftin 0, 1, MSBPRE, [b0, b1\4]

[nazad]

 

SHIFTOUT
shiftout datapin, clockpin, mode, [var{\bits}...]
  Sinhrono sa takt signalom, na pinu 'clockpin' šalje bitove iz promenljive 'var' na 'datapin'. 'Clockpin' i 'datapin' mogu da budu konstante, od 0 do 15, ili promenljiva koja sadrži broj od 0 do 15, ili ime pina (npr. porta.0).
Opcioni parametar '\bits' odredjuje koliko će bitova biti poslato iz promenljive. Ako se ne navede, podrazumeva se 8, bez obzira na tip promenljive.
Imena režima (modova) rada, 'mode', definisana su u fajlu "modedefs.bas". Da bi ste ih koristili, na početku programa dodajte liniju

    include "modedefs.bas"

Fajlovi "bs1defs.bas" i "bs2defs.bas" su već uključeni u "modedefs.bas" pa ih nemojte ponovo navoditi u programu. Brojevi za 'mode' mogu biti korišćeni bez uključivanja ovog fajla. Za modove 0 i 1, kada je takt neaktivan pri niskom stanju, takt prelazi na visoko stanje da bi se poslao jedan bit, a zatim se vraća na nisko stanje. Za modove 4 i 5, stanje je obrnuto.

Mod
Broj moda
Opis moda
LSBFIRST
0
prvo se šalje bit najmanje težine. takt neaktivan pri niskom stanju
MSBFIRST
1
prvo se šalje bit najvece težine. takt neaktivan pri niskom stanju
 
4
prvo se šalje bit najmanje težine. takt neaktivan pri visokom stanju
 
5
prvo se šalje bit najvece težine. takt neaktivan pri visokom stanju

Takt ima frekvencu od otprilike 50 KHz (zavisno od upotrebljenog oscilatora). Aktivno stanje takta traje minimalno dve mikrosekunde (µs). Pomoću DEFINE naredbe moguće je produžiti trajanje aktivnog stanja takta i to do 65 535 µs da bi se usporila brzina takta. Dodatno minimalno kašnjenje je odredjeno pomocu PAUSEUS parametra. Na primer, da bi se usporio takt za dodatnih 100 mikrosekundi:

    DEFINE SHIFT_PAUSEUS 100
    shiftout 0, 1, MSBFIRST, [b0, b1]
    shiftout porta.1, porta.2, 1, [wordvar\4]

[nazad]

 

SLEEP
sleep period
  Postavlja mikrokontroler u režim male potrošnje za 'period' sekundi. Pošto je 'period' 16-to bitni broj, maksimalni period je nešto preko 18 sati. Ova naredba koristi WDT, tako da nije zavisna od upotrebljenog oscilatora.

    sleep 60     'pravi pauzu od 1 minut

[nazad]

 

SOUND
sound pin, [note, duration{, note, duration...}]
  Generiše ton i/ili beli šum na pinu 'pin' koji se automatski postavlja kao izlaz. '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).
Ako se za 'note' uzme vrednost 0, neće se proizvesti ton, tj. generisaće se tišina. Vrednosti od 1 do 127 će proizvesti ton, a vrednosti od 128 do 255 će generistai beli šum. Što je broj za 'tone' veći, veća je i frekvenca generisanog tona. Frekvenca za note=1 je oko 78,47 Hz, a za 127 je oko 10 000 Hz.
'Duration' odredjuje dužinu trajanja proizvedenog tona u koracima od po 12 ms. 'Note' i 'duration' ne moraju da budu promenljive.
Ova naredba generiše pravougaoni signal. Zahvaljujući odličnim I/O karakteristikama PIC kontrolera, moguće je priključiti zvučnik preko kondenzatora; vrednost kapaciteta kondenzatora zavisi od frekvence i zvucnika. Piezo zvučnici mogu da se priključe direktno na pin.

    
    sound portb.7, [100, 10, 50, 10]    'generiše dva tona na pinu 7

[nazad]

 

STOP
stop
 
Zaustavlja izvršavanje programa tako što se izvršava beskonačna petlja. Ova naredba ne postavlja kontroler u režim male potrošnje; mikrokontroler i dalje radi normalno.

    stop    'ovde se zaustavlja dalje izvršavanje programa, tj. vrti se u mrtvoj petlji

[nazad]

 

SWAP
swap variable, variable
  Vrši razmenu vrednosti izmedju dve promenljive. Može da se koristi sa promenljivama tipa "bit", "byte" i "word". Nizovi sa promenljivim indeksom ne mogu da se koriste u ovoj naredbi, dok nizovi sa fiksnim indeksom mogu.

    temp=b0      'ovo je
    b0=b1        'stari način za
    b1=temp      'razmenu dve vrednosti

    swap b0, b1  'a ovo je novi način
   

[nazad]

 

TOGGLE
toggle pin
  Obrće stanje pina; 'pin' se automatski postavlja kao izlaz. '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).

    low 0      'početno stanje pina 0 je logička '0'
    toggle 0   'menja stanje pina 0 sa log. '0' na '1' 

[nazad]