>>> 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ø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ù 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 'èč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ì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ì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
--------------------------------------------------------------------------------
Príkazy BASCOM-u
Moderátori: psichac, Moderátori
- Peťus
- Ultimate člen
- Príspevky: 3940
- Dátum registrácie: 07 Mar 2009, 00:00
- Bydlisko: Praha
- Vek: 34
- Kontaktovať používateľa:
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,...)
Re: Príkazy BASCOM-u
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)
(V tomto případě z http://www.mp222.wz.cz/Bascom/Soubory/bascom_instr.htm)
0