Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • Pr├şkazy BASCOM-u

Pr├şkazy BASCOM-u

Moderátori: psichac, Moderátori

Pr├şkazy BASCOM-u

Odosla┼ąod ustredna » 08 Feb 2011, 11:51

>>> V┼íetky pr├şkazy budem priebe┼żne doplnova┼ą <<<

----------------------------------------------------------------------

$ASM
Za─Źiatok bloku k├│du v asembleru.

Syntax:
$ASM

Poznámky:

Pr├şklad:
Dim C As Byte
Loadadr C , X 'vlo┼ż adresu promennej C do registru X

$Asm
Ldi R24,1 'vlo┼ż do registru R24 konstantu 1
St X,R24 'vlo┼ż 1 do premennej C
$End Asm

Print C
End

----------------------------------------------------------------------

$BAUD

Nastavenie r├Żchlosti seriov├ęho prenosu.

Syntax:
$BAUD = var

Poznámky:

Pr├şklad:
$BAUD = 4800

--------------------------------------------------------------------------------

$BAUD1
Nastavenie r├Żchlosti druh├ęho s├ęriov├ęho portu.

Syntax:
$BAUD1 = var

Poznámky:
U procesorov s dvoma UART.

Pr├şklad:
$BAUD1 = 9600


--------------------------------------------------------------------------------

$CRYSTAL

Kmito─Źet kry┼ít├ílu, alebo vn├║torn├ęho oscil├ítoru v Hz.

Syntax:

Poznámky:

Pr├şklad:
$CRYSTAL = 4000000

--------------------------------------------------------------------------------
$DATA

Viz $EEPROM

--------------------------------------------------------------------------------

$EEPROM

Oznamuje preekladacu, ┼że n├ísleduj├║ca sekvencia DATA m├í by┼ą ulo┼żen├í v s├║boru *.eep.

Syntax:
$EEPROM

Poznámky:
Ked pou┼żijeme t├║to direktivu, vytvor├ş preklada─Ź s├║bor s koncovkou EEP.
T├şmto s├║borom m├┤┼żeme v program├ítore naprogramova┼ż pam├Ą┼ą EEPROM.
Pre ─Ź├ştanie takto zap├şsan├Żch d├ít z EEPROM nem├┤┼żeme pou┼ż├şt postup
RESTORE - READ. Pou┼żijeme napr READEEPROM.

Pr├şklad:
Dim B As Byte
Dim W As Word
Restore Tabulka1 'budeme citat z Tabulka1
Read W
Print W
Restore Lbl2
Read B
Print B
Readeeprom W , 1 'W=20
End

Tabulka1:
Data 100,200,300%,400% 'bude ulo┼żeno ve FLASH

$eeprom
Data 10,20,30 'bude ulo┼żeno v EEPROM

$data 'prepni zpátky do normálu
Tabulka2:
Data 2,4,6,8,10 'bude ulo┼żeno ve FLASH

--------------------------------------------------------------------------------

$EEPROMHEX

Soubor EEP bude vytvo&oslash;en ve formátu Intel Hex.

Syntax:
Poznámky:

Pr├şklad:
Dim B As Byte
Readeeprom W , 1 'W=20
End

$eeprom
Data 10,20,30 'bude ulo┼żeno v EEPROM
$eepromhex 've formátu Intelhex

--------------------------------------------------------------------------------

$END ASM

Koniec bloku k├│du v asembleru.

Syntax:

Poznámky:

Pr├şklad:
Viz $ASM

--------------------------------------------------------------------------------

$EXTERNAL

Deklaracia asm rutiny z kniznice

Syntax:
Poznámky:

Pr├şklad:
'pou┼żijeme kni┼żnicu MYLIB:
$lib "mylib.lbx"
'm├┤┼żeme pou┼żi┼ą aj origin├íl ASM:
'$LIB "mylib.LIB"

'z kni┼żnice pou┼żijeme proced├║ru Test:
$external Test
Declare Sub Test(byval X As Byte , Y As Byte)

--------------------------------------------------------------------------------

$INC

Neplies┼ą s INC a $INCLUDE!
Vlo┼ż├ş na aktu├ílnu poz├şciu bin├írny s├║bor.

Syntax:
$INC návestie , size | nosize , "subor"

Poznámky:
Funguje podobne ako pr├şkaz DATA.
Ulo┼ż├ş do FLASH obsah s├║boru "subor".

M├┤┼żeme zvoli┼ą size alebo nosize.
Pokia─ż zvol├şme size, bude zaznamen├ín├í d─║┼żka d├ít.
T├íto d─║┼żka je pri ─Ź├ştan├ş na prv├Żch dvoch bajtoch.

Pr├şklad:
Dim Delka As Word , W As Word , B As Byte

Do
B=lookup(2,L1) 'prvn├ş bajt dat(na pozici 0 a 1 je size)
Print chr(B)

Restore L1
Read Delka 'prvn├ş word = d├ęlka dat
Print Delka ; " bajt&ugrave; ulo┼żeno v L1"
For W = 1 To Delka
Read B : Print Chr(b);
Next
Print

Loop


End

'vlo┼ż├şme subor s datami:
$inc L1 , Size , "f:\inctest.txt"

--------------------------------------------------------------------------------

$INCLUDE

Vlo┼ż├ş na aktu├ílnu poz├şciu ASCII s├║bor.

Syntax:
$INCLUDE "test.inc"

Poznámky:

Pr├şklad:

--------------------------------------------------------------------------------

$INITMICRO

Zavolá po resetu procedúru _init_micro.
Pokia─ż chceme hne─Ć po resetu urobi┼ą niejak├ę ─Źinnosti, zap├ş┼íeme ich
do _init_micro.

Syntax:
Poznámky:

Pr├şklad:
$regfile = "2313def.dat"
$initmicro

Print Portb
Do
nop
Loop
End

_init_micro:
Config Portb = Output
Portb = 3
Return

--------------------------------------------------------------------------------

$LIB

Tato direkt├şva hovor├ş preklada─Źu, ktor├ę kniznice v k├│de pou┼żijeme.

Syntax:
$LIB "libname1" [, "libname2"]
Poznámky:

Pr├şklad:
Viz $EXTERNAL

--------------------------------------------------------------------------------

$ROMSTART

Bude generovan├Ż hex s├║bor od ur─Źenej adresy.
S├║bor bin sa nemen├ş (za─Ź├şna od nuly).

Syntax:
$ROMSTART = adresa
Poznámky:

Pr├şklad:
$ROMSTART = &H4000 'subor .hex za─Ź├şna adresou $4000

--------------------------------------------------------------------------------

$SIM

Odstr├íni z k├│du ─Źasov├ę slu─Źky WAIT a WAITMS.

Syntax:
$SIM

Poznámky:
Simul├ícia pr├şkazov wait a waitms zaberie ve─ża ─Źasu, obzvl├í┼í┼ą ke─Ć s├║ otvoren├ę okn├í registrov a pam├Ąti. Direktiva $sim zr├Żchli simul├íciu t├şm, ┼że k├│d t├şchto pr├şkazov bude vynechan├Ż.
Pri z├ípise do mikroprocesoru mus├şme t├║to direktivu odstrani┼ą, inak by program nepracoval spr├ívne.

Pr├şklad:
$SIM

--------------------------------------------------------------------------------

$TIMEOUT

Nastav├ş timeout pre HW UART0.

Syntax:
$TIMEOUT = hodnota (typu Long)

Poznámky:
Pr├şkazy pre UART (okrem INKEY) zastavia beh programu a ─Źakaj├║ na pr├şjem znaku.
Pr├şkaz $timeout toto ─Źakanie po ur─Źitej dobe, nastaven├ę kon┼ítantou hodnota, zru┼í├ş.


Pr├şklad:
$crystal = 8000000
$baud = 19200


Dim Sname As String * 10
Dim B As Byte

Do
$timeout = 1000000
Input "Name : " , Sname
Print "Hello " ; Sname

$timeout = 5000000
Input "Name : " , Sname
Print "Hello " ; Sname

Loop
--------------------------------------------------------------------------------

$TINY

Tato direktiva se pou┼żije u procesorov, ktor├ę nemaj├║ pam├Ą┼ą SRAM (attiny 12,15 atd).
hovor├ş preklada─Źu, aby vynechal inicializ├íciu z├ísobn├şkov.

Syntax:
Poznámky:
Podpora procesorov bez SRAM je zatia─ż mal├í.
M├í sa zlep┼íi┼ą v bud├║cnosti.
Aby sme v├┤bec mohli pracova┼ą s premenn├Żmi, je zaveden├Ż jedin├Ż typ IRAM BYTE,
umestnen├Ż v oblasti pracovn├Żch registrov r0-r31.

Pr├şklad:
$regfile = "AT15DEF.DAT"
$crystal = 1600000
$tiny

dim X AS iram BYTE
dim y AS iram BYTE

X = 1
Y = 2
X = x + y

--------------------------------------------------------------------------------

$WAITSTATE

Vlo┼żenie ─Źakacieho stavu pre pomalj┼íie externe pam├Ąti.

Syntax:
Poznámky:

Pr├şklad:
$WAITSTATE

--------------------------------------------------------------------------------

ABS

Absol├║tna hodnota.

Syntax:
var1 = ABS(var2)

Poznámky:
var1: Integer, Long nebo Single
var2: Integer, Long nebo Single

Pr├şklad:
Dim a as Integer, c as Integer

a = -1000
c = Abs(a)
Print c

End

--------------------------------------------------------------------------------

ACOS

Vracia arcoskosinus uhla.

Syntaxe:
var = ACOS(x)
Poznámky:
-1>x>+1
0>var>3,14

Pr├şklad:
Dim S As Single , x As Single
x= 0.5 : S = Acos(x)
Print S

--------------------------------------------------------------------------------

ALIAS

Nov├ę meno pre premenn├║

Syntax:
newname ALIAS oldname

Poznámky:
Je vhodn├ę pomenova┼ą napr├şklad pou┼żit├ę v├Żvody portov pomocou ALIAS.
Pri zmene zapojenia potom sta─Ź├ş upravi┼ą riadky s CONFIG PORT a ALIAS.
Inak by sme museli hlada┼ą a meni┼ą oznacenie v celom programe.

Pr├şklad:
Config Portb.1 = Output
Config Portb.2 = Input

Vystup alias Portb.1
Vstup alias Pinb.2

Do
if vstup = 1 Then 's takto pomenovan├Żmi portami je k├│d srozumite─żnej┼í├ş
vystup = 1
else
vystup = 0
Loop
End

--------------------------------------------------------------------------------

ASC

Vracia ascii hodnotu prv├ęho znaku v retazci.

Syntax:
var = ASC(string)

Poznámky:
var : Byte, Integer, Word, Long.
string : String, Constant.

Pr├şklad:
Dim a as byte, s as String * 10

s = "ABC"
a = Asc(s)
Print a 'nap├ş┼íe 65
Print Asc("B") 'nap├ş┼íe 66

End

--------------------------------------------------------------------------------

ASIN

Vrac├ş arcossinus ├║hla.

Syntax:
Poznámky:

Pr├şklad:
Dim S As Single , x As Single
x= 0.5
S = Asin(x)
Print S

--------------------------------------------------------------------------------

ATN

Vracia arctangens ├║hla.

Syntax:
Poznámky:

Pr├şklad:

--------------------------------------------------------------------------------

BIN

Konvertuje ─Ź├şslo na bin├írny string.

Syntax:
Var = Bin(source)

Poznámky:

Pr├şklad:
Dim A As Byte

A = &H14
Print Bin(a) ' 00010100

--------------------------------------------------------------------------------

BINVAL

Konvertuje bin├írny string na ─Ź├şslo.

Syntaxe:
var = Binval( s )

Poznámky:

Pr├şklad:
Dim a as byte, s As String * 10
s = "1100"
a = BinVal(s) 'a=12
Print A
End

--------------------------------------------------------------------------------

BITWAIT

─îak├í,pokia─ż je bit 0 nebo 1.

Syntax:
BITWAIT x , SET/RESET

Poznámky:

Pr├şklad:
Dim A As Bit
Bitwait A , Set '&egrave;─Źakaj a┼ż bit A bude 1
Bitwait Pinb.7 , Reset '─Źakaj a┼ż Pinb.7 bude 0
End

--------------------------------------------------------------------------------

BYVAL

Ur─Źuje, ┼że premenn├í m├í b├Ż┼ą predan├í hodnotou.

Syntax:
Sub Test(BYVAL var)

Poznámky:

Pr├şklad:

--------------------------------------------------------------------------------

CALL

Volanie proced├║ry.

Syntax:
CALL Test [ (var1, var-n) ]
Poznámky:

Pr├şklad:

--------------------------------------------------------------------------------

CASE

Vykon├í jeden z nieko─żk├Żch blokov pr├şkazov v z├ívistlosti na hodnote v├Żrazu.

Syntax:
SELECT CASE var
CASE test1 : statements
[CASE test2 : statements ]
CASE ELSE : statements
END SELECT

Poznámky:

Pr├şklad:
Dim X As Byte
Do
Print
Input "zadaj X " , X
Select Case X
Case 1 To 3 : Print "X = 1 , 2 nebo 3"
Case 4 : Print "X = 4"
Case Is > 10 : Print "X > 10"
Case Else : Print "nic"
End Select
Loop

End

--------------------------------------------------------------------------------

CHECKSUM

Vracia kontroln├Ż s├║─Źet retazca.

Syntax:
PRINT Checksum(var)
b = Checksum(var)

Poznámky:

Pr├şklad:
Dim S As String * 10 'dim variable

S = "test"
Print Checksum(s) ' (192)
End

'Po─Ź├şta sa takto:
'dim kont_soucet as Byte
'kont_soucet = Asc("t")
'kont_soucet = kont_soucet + Asc("e")
'kont_soucet = kont_soucet + Asc("s")
'kont_soucet = kont_soucet + Asc("t")

--------------------------------------------------------------------------------

CHR

Konvertuje ASCII hodnotu na string o d─ż┼żke 1 znak.

Syntax:
s = CHR(var)

Poznámky:
var - ─Ź├şseln├í premenn├í alebo kon┼ítanta
s - premenná typu String

Pr├şklad:
Dim A As Byte 'dim variable

X = 65
Lcd X '(65)
Lowerline
Lcd Hex(x) '(41)
Lcd Chr(x) '(A)
End

--------------------------------------------------------------------------------

CLS

Vyma┼że LCD displej.

Syntax:
CLS

Poznámky:

Pr├şklad:

--------------------------------------------------------------------------------

CPEEK

Pre─Ź├şta bajt z pam├Ąti programu (FLASH).

Syntax:
var = CPEEK( adresa )

Poznámky:

Pr├şklad:
Dim bajt As Byte
Dim adr_ As Word

adr_ = loadlabel(pozdrav) ' adr_ = adresa navestia "pozdrav:"
bajt = cpeek (adr_)
print chr(bajt) ' A
incr adr_ ' zvyš adresu
bajt = cpeek (adr_)
print chr(bajt) ' h

End

pozdrav:
data "Ahoj"

--------------------------------------------------------------------------------

CURSOR

Nastavenie LCD kurzoru.

Syntax:
CURSOR ON/OFF (zapnut├Ż/vypnut├Ż)
CURSOR BLINK/NOBLINK (bliká/nebliká)

Poznámky:

Pr├şklad:
Dim a As Byte

a = 255
Lcd A
Cursor Off
Wait 1 'wait 1 second
Cursor Blink
End

--------------------------------------------------------------------------------

DATA

Rada konstantn├Żch hodn├┤t, ktor├ę bud├║ ─Ź├ştan├ę pr├şkazom READ.

Syntax:
DATA var1 , var2 , var3 , ...varn

Poznámky:
Ako ukazovate─ż na DATA sa pou┼ż├şva registrov├Ż p├ír r8,r9.

K ulo┼żeniu znaku " do d├ít m├┤┼żete pou┼żi┼ą:
DATA $34 (znak s ASCII hodnotou 34). Tak m├┤┼żeme ulo┼żi┼ą aj netla─Źite─żn├ę znaky, napr chr(7).

In├Ż zp├┤sob, ako vlo┼żi┼ą ┼ípeci├ílny ASCII znak do ret&igrave;zca je {xxx}.
Napr 65 je ASCII hodnota pre znak A.
DATA "TEST{065}" pre─Ź├ştame ako TESTA. ─î├şslo v z├ítvorke mus├ş ma┼ą tri ─Ź├şslice.
DATA "TEST{65}" pre─Ź├ştame ako TEST{65}.

{xxx} funguje iba u retazcov├Żch kon┼ítant.
je mo┼żn├ę pou┼żi┼ą i v norm├ílnom priraden├ş:
dim s as string * 3
s = {065} 'vlo┼ż├ş A do premennej s

Preto┼że DATA s├║ ulo┼żen├ę v pam├Ąti programu, mus├şme zaisti┼ą aby sa program
nedostal pri svojom behu do ich oblast├ş

Zpravidla saDATA umiestnuj├║ za koncov├ę END.

Integer a Word kon┼ítanty musia kon─Źi┼ą znakom %.
Long konstanty musia kon─Źi┼ą znakom &.
Single konstanty musia kon─Źi┼ą znakom !.

DATA 65, 20000%, -60%, 10000000&, 3.14159!, "abc"


Pr├şklad:
Dim A As Integer , B1 As Byte , Count As Byte
Dim S As String * 15
Dim L As Long

Restore Dta1
For Count = 1 To 3 'precitame prve tri hodnoty z Dta1
Read B1
Print Count ; " " ; B1
Next

Restore Dta2 'nastav├şme sa na zaciatok Dta2
For Count = 1 To 2 'a precitame 2 hodnoty
Read A
Print Count ; " " ; A
Next

Restore Dta3
Read S : Print S
Read S : Print S

Restore Dta4
Read L : Print L

End


Dta1:
Data &B10 , &HFF , 10 , 21 , 168 'typ Byte

Dta2:
Data 1000% , -1% 'typ Integer

Dta3:
Data "Hello" , "World" 'typ String

Dta4:
Data 20000& , &hffcc& 'typ Long

V┼íimn&igrave;te si, ┼że premenn├ę, do ktor├Żch ─Ź├ştame, maj├║ rovnak├Ż typ ako ─Ź├ştan├ę data.

--------------------------------------------------------------------------------

DEBOUNCE

Testuje v├Żvod portu s pripojen├Żm tla─Ź├ştkom.

Syntax:
DEBOUNCE Px.y , stav , návestie [ , SUB]

Poznámky:
Px.y - v├Żvod portu
stav - 0 nebo 1
návestie - podprogram

Debounce testuje pin portu a pokia─ż je stav pravdiv├Ż, testuje
znovu po 25 ms(d├í sa nastavi┼ą , viz CONFIG DEBOUNCE)aby sa vyl├║─Źil vliv z├íkmitov tla─Ź├ştka.
Pokia─ż je stav aj druh├Ż kr├ít pravdiv├Ż, sko─Ź├ş program na n├ívestie pr├şkazom GOTO.
Ke─Ć v pr├şkaze uvedieme SUB, sko─Ź├ş program na n├ívestie pr├şkazom GOSUB.
Pokud je stav po prvom alebo druhom testu nepravdiv├Ż, pokra─Źuje program dal┼í├şm riadkom,
na rozdiel od pr├şkazu BITWAIT, ktor├Ż ─Źek├í na mieste do vtedy, pokia─ż pin m├í ur─Źen├║ ├║rove┼ł.

Pr├şkaz DEBOUNCE si pam├Ąt├í posledn├Ż pravdiv├Ż stav pinu a pokia─ż je pri dal┼íom teste rovnak├Ż, tak
ho ignoruje. Inak povedan├ę, pokia─ż stla─Ź├şme tla─Ź├ştko, mus├şme ho uvo─żni┼ą a znovu stla─Źi┼ą.

Pr├şklad:
Debounce Pind.2 , 0 , Pr , Sub 'pokial je na pine pind.2 ├║roven 0 tak skoc na podprogram Pr

End

Pr:
Print "PIND.2 je Low"
Return 'mus├ş b├Żt return, pretoze v pr├şkaze DEBOUNCE je SUB



--------------------------------------------------------------------------------
ustredna
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 452
Vek: 38.85
Zalo┼żen├Ż: 19.10.2010
Bydlisko: Nitra
Paragraf: 22
Karma: 22

Odosla┼ąod Pe┼ąus » 09 Feb 2011, 23:01

Koukam , ┼że v tom m├í┼í p─Ťkn├Ż gul├í┼í.Necht─Ťlo by to tomu d├ít trochu strukturu? A pak za─Ź├şnat nejt─Ť┼ż┼í├şmi p┼Ö├şkazy.....
Sout─Ť┼ż Cena bastl├ş┼Ö┼»: http://cenabastliru.cz
Nominujte/hlasujte a vyhrajte multimetr, IoT moduly, v├Żvojov├ę kity, PLC a spoustu dal┼í├şch cen
https://chiptron.cz - novinky ze sv─Ťta elektro (Arduino, Raspberry Pi, STM32, ESP8266, ESP32,...)
Pe┼ąus
Obr├ízok pou┼ż├şvate─ża
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 3932
Vek: 29.14
Zalo┼żen├Ż: 07.03.2009
Bydlisko: Praha
Karma: 11

Odosla┼ąod ustredna » 09 Feb 2011, 23:39

prikazy budu yoradene podla abecedy, ale uz to prepisujem komplet do wordu a bude to uverejnene ako clanok.
ustredna
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 452
Vek: 38.85
Zalo┼żen├Ż: 19.10.2010
Bydlisko: Nitra
Paragraf: 22
Karma: 22

Re: Pr├şkazy BASCOM-u

Odosla┼ąod Pega » 03 J├║l 2012, 13:08

Mo┼żn├í by bylo dobr├ę, kdy┼ż u┼ż n─Ťco doslovn─Ť opisuje┼í, aspo┼ł napsat odkud to poch├íz├ş.
(V tomto p┼Ö├şpad─Ť z http://www.mp222.wz.cz/Bascom/Soubory/bascom_instr.htm)
Pega
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 192
Zalo┼żen├Ż: 28.03.2012
Karma: 5


Nasp├Ą┼ą na Bascom

Kto je pr├ştomn├Ż

U┼ż├şvatelia prezeraj├║ci si toto f├│rum: ┼Żiadny registrovan├Ż pou┼ż├şvate─ż a 0 host├ş.

Forums ©
Autor str├ínky je Ondrej Z├ívodsk├Ż(zawin), o graficky design sa star├í ─Żubo┼í Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
─îas potrebn├Ż k spracovaniu str├ínky 0.20 sek├║nd