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]