Príkazy BASCOM-u

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
ustredna
Stály člen
Stály člen
Príspevky: 475
Dátum registrácie: 19 Okt 2010, 00:00
Bydlisko: Nitra
Vek: 43
Kontaktovať používateľa:

Príkazy BASCOM-u

Príspevok od používateľa ustredna » 08 Feb 2011, 10: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



--------------------------------------------------------------------------------
0

Používateľov profilový obrázok
Peťus
Ultimate člen
Ultimate člen
Príspevky: 3940
Dátum registrácie: 07 Mar 2009, 00:00
Bydlisko: Praha
Vek: 34
Kontaktovať používateľa:

Príspevok od používateľa Peťus » 09 Feb 2011, 22: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.....
0
https://chiptron.cz - novinky ze světa elektro (Arduino, Raspberry Pi, STM32, ESP8266, ESP32,...)

Používateľov profilový obrázok
ustredna
Stály člen
Stály člen
Príspevky: 475
Dátum registrácie: 19 Okt 2010, 00:00
Bydlisko: Nitra
Vek: 43
Kontaktovať používateľa:

Príspevok od používateľa ustredna » 09 Feb 2011, 22:39

prikazy budu yoradene podla abecedy, ale uz to prepisujem komplet do wordu a bude to uverejnene ako clanok.
0

Pega
Stály člen
Stály člen
Príspevky: 192
Dátum registrácie: 28 Mar 2012, 08:52

Re: Príkazy BASCOM-u

Príspevok od používateľa 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)
0

Napísať odpoveď