■ BASCOM-AVR (DEMO) の使用方法 ■

プログラムの概略と書式
 
プログラムは基本的に、行の上から下へ、そして列の左から右へ実行されます。

 1.まず始めに、AVRマイコンやその周辺のハードウエアの組み合わせ状況を、BASCOM-AVRに
   知らせる必要があります。
   これは、BASCOM-AVRのオプション設定画面でも、設定することができます。
 
 2.次に、プログラム中で使用する、変数名やその型式、配列名を宣言します。
 
 3.続いて、AVRのポートの入出力設定や、内部タイマーなどの動作モードを設定しておきます。
 
 4.そして、主になるプログラム(メインプログラム)を記述します。
 
 5.メインプログラムが繰り返しの処理をしない場合は、最後にEND命令を書いておくと、すべての
   プログラムが終了します。
 
 6.サブルーチン
  ・何度も使用される処理や、処理内容により分類したプログラムをまとめた物(モジュール化)。
 
 7.割り込み処理
  ・ハードウェアで起こる現象などにより、優先的に処理を行うプログラム。

 
(例)
$regfile = "m8535.DAT"
$crystal = 12800000
Config Lcd = 16 * 2
   '
 ' AVRのデバイス名を登録 (ATmega8535)
 ' AVRの動作クロック周波数を登録 (12.8MHz)
 ' LCDの接続ポートや、動作モードを登録 (16文字2行)
 '
 1.

Dim Temp As Byte
   '
 ' Tempと言う名前の変数を、バイト型で宣言
 '
 2.
Config PORTC = Input
   '
 ' ポートCを入力ポートに設定
 '
 3.
Main:
   (Main Program)
       :
       :
 ' ラベルを付ける例
 ' 主になるプログラムを記載
 '
 '
 4.


   END
   '
 ' この位置でプログラムが終了する
 '
 5.
Dispsub:
   (Sub Routine)
   Return
   '
 '
 ' サブルーチンを記載
 '
 '
 6.
Timint:
   (Interrupt Program)
   Return
 '
 ' 割り込み処理を記載
 '
 7.
 


命 令 文
 
プログラムの命令文には、「実行命令」と「非実行命令」の2通りがあります。

 ● 「実行命令」は、どのような処理を行うかを記述し、プログラムの流れを進めていきます。
 
(例)
Set PORTA.2   ' ポートAのビット2をHレベルにする
If PINB.0 = 1 Then A = 1   ' ポートBのビット0がHレベルならば、変数Aに1を代入

   ・命令文は、":"(コロン)で区切ることにより、1行で複数の処理をさせることができます。
    (マルチステートメントと呼ばれます)
 
(例)
A = 1 : B = 2 : C = A + B : PRINT C
 
   ・ヘルプ ファイルには、1行の長さに制限が無いような記載がありますが、200文字を越えた
    あたりからエラーになりました。
   ・80文字以内に制限した方が、良いようです。

 ● 「非実行命令」は、変数を記憶装置に割り当てて、その型を定義するDim命令や、コメント文の
   ように、プログラムの動作としては、何も実行処理されない命令です。
 
   ・これらの命令は、AVRのプログラムメモリーを消費しません。
 
(例)
Dim Temp As Word   ' Tempと言う名前の変数を、ワード型で宣言
Dim Lst(10) As Byte   ' Lst(1)〜Lst(10)と言う10個の配列を、バイト型で宣言

   ・「コメント」は、処理の内容などを注釈として記載することで、プログラムを明確にします。
   ・REM命令文、またはシングルクォート文字( ' )で開始されます。
 
(例)   ↓(ここから右は、すべてコメント文になる)
Reset PORTB.7   ' bit7 of PORT-B is made into L level.
Rem Test processing
   ↑(ここから右は、すべてコメント文になる)
 


ラ ベ ル
 
プログラムの行にアドレスを割り振るため、その位置をわかりやすく表記する名前を付けます。
ラベルは、GOTO命令やGOSUB命令等の、行き先を示すために使用されます。

 ● ラベルの使用条件
 
   ・1〜32個の英数字の組み合わせで、最後に":"(コロン)を付けます。
   ・大文字、小文字の区別はありません。 (同じとみなされます)
   ・ラベルの文字列に、スペースや記号を入れることはできません。
    ( ! # $ % & ~ | @ [ ] . _ ←これらの記号は許されるようですが、お勧めできません。)
   ・1つのプログラム中に、同じ名前のラベルを重複使用できません。
   ・BASCOM-AVRが使用している、命令語などの予約文字列は使用できません。
    (予約語の一覧は、ヘルプ ファイルのBASCOM Reserved Wordsを参照して下さい)
   ・記述は、列のどの位置から初めてもかまいません。
   ・ラベルの右列には、コメント( ' )以外の命令文を記述できません。
 
(例)
Mainloop:
Test1sub2:
Alpha:
alpha:
Alpha:
ALPHA:
 ← すべて同じと、みなされます
  :
  :
 ←
 


変 数
 
変数は、数値を代入したり、代入した数値を可変させて、計算などの処理を行わせるための
保管場所です。

 ● 変数には、名前を割り当てる必要があります。
 
   ・1〜32個の英数字の組み合わせです。
   ・大文字、小文字の区別はありません。 (同じとみなされます)
   ・ラベルの文字列に、スペースや記号を入れることはできません。
    ( ! # $ % & ~ | @ [ ] . _ ←これらの記号は許されるようですが、お勧めできません。)
   ・BASCOM-AVRが使用している、命令語などの予約文字列は使用できません。
    (予約語のリストは、BASCOM Reserved Wordsを参照して下さい)
 
(変数の書式例)   等号 [=] の右側の数値または計算結果が、
  左側の変数に代入されます。
 
A = 2
D2 = 3.45
  ' 定数を代入
  '
B = C
Abc = Xyz
  ' 他の変数の値を代入
  '
C = A + 2
Hour = C * D2
  ' 他の変数や、演算子を組み合わせて代入
  '
X = Sin(D)   ' 関数を呼び出して得られた結果を代入
AND = 8   ' ANDが予約語であるため無効です

 ● また、収める内容によって、型式を決めておく必要があります。 (DIM命令文を参照)
 
型 式 使用
メモリー
扱える数値の範囲 備  考
Bit 1/8 byte 0 or 1  0または1だけを保持
Byte 1 byte 0 〜 255 符号無 8ビットの整数型
Word 2 byte 0 〜 65535 符号無 16ビットの整数型
Integer 2 byte -32,768 〜 +32,767 符号付 16ビットの整数型
Dword 4 byte 0 〜 4,294,967,295 符号無 32ビットの整数型
Long 4 byte -2,147,483,648 〜 2,147,483,647 符号付 32ビットの整数型
Single 4 byte 1.5×10の-45乗 〜 3.4×10の38乗 符号付 32ビット 浮動小数点型
Double 8 byte 5.0×10の-324乗 〜 1.7×10の308乗 符号付 64ビット 浮動小数点型
String Max
254byte
 1文字1バイトの文字列。
 10文字の文字列は、終了コード00を付けて11バイト必要。
 ($BIGSTRINGS命令により、最大65535バイトまで使用可能)

 ● 文字変数
   ・変数には、数値以外に文字も代入できます。
   ・必要な文字数を指定して、変数を宣言します。 (アスタリスク・マーク[ * ]を使用)
   ・文字列は、ダブルクォーテーションマーク[ " ]で囲い、代入します。
 
(例)
Dim S As String * 11     ' 変数 S を文字型で11文字分用意。
S = "Hello world"     ' 変数 S に文字を代入。
 
   ・特殊文字を代入する場合は、{コード}を使用します。 (コードは3桁で表現)
(例)
Dim S As String * 11     ' 変数 S を文字型で11文字分用意。
S = "Hello{010}world"     ' 文字コード010 (LF) を文字間に入れます。

 ● 配列
   ・配列は、同じ型式の変数を必要な個数分まとめて用意し、1つの名前と添え字により
    識別します。
   ・BASCOM-AVRでは、1次元配列のみ使用可能です。 (多次元配列は使用できません)
   ・添え字は、変数名の後にカッコで囲い記載します。
   ・添え字は、1から始まり最大値は65535です。 (デフォルトで、0は使用できません)
    CONFIG BASE命令で、(0)を使えるように変更できます。
   ・添え字に変数を使用することもできます。 (Byte、Word、Integer、Long 型を使用)
   ・配列を用意するには、必要個数をカッコ内に記載し宣言します。
 
(例)
Dim H(5) As Byte   ' H(1) H(2) H(3) H(4) H(5) 5個の変数をByte型で用意。

 ● 接頭語
   ・変数に10進表記以外の数値を代入する場合は、接頭語を付けます。
 
&H   16進表記
&B 2進表記
 
(下記の例は、すべて同じ数値です)
a = 10  '10進表記
a = &H0A  '16進表記
a = &B00001010  (0000_1010)も可  ' 2進表記

 ● 浮動小数点
   ・浮動小数点については、説明が長くなるので、専門書等を参考にして下さい。
 


式 と 演算子
 
式の表記方法は、= (イコール)に対して、代入される変数、または計算結果を入れる変数を、
左側に表記し、代入する定数・変数、または計算式を、右側に表記します。
 
(例)
A = 123
B = A + 5
  ' 変数 A に、定数123を代入します
  ' 変数 B に、計算結果(123+5)の128が代入されます

   ・計算式は、2つの定数または変数の演算のみ可能です。
 
A = B + C + D   ' 変数の演算が3つあるので、エラーになります
 
A = B + C
A = A + D
  ' 上記の計算式は、この2行の表記に変更します
  '

   ・括弧の表記も使用できません
 
A = ( B + 5 ) * C   ' エラーになります


演算子には、4つの種類があります。
 
 ● 算術演算子
 
   ・四則演算などの、算術計算を実行するのに用いられます。
 
+ 加算
- 減算
* 乗算
/ 除算
^ べき乗
\ 整数の割算
MOD 剰余演算(余り)
 
(整数の割算と、余りを求める例)
SYOU = 10 \ 4
AMARI = 10 Mod 4
  ' 変数 SYOU に、10÷4の整数部分2が代入されます (注1)
  ' 変数 AMARI に、10÷4の余り2が代入されます
 
   (注1) ヘルプファイルを訳した限りでは、この様に理解しましたが、実際に計算してみると、
        (/)も(\)も同じ2.5と言う結果になり、信憑性に欠ける点がありますのでご注意下さい。
 
   (注2) ゼロ除算はエラーになるはずですが、現時点ではエラーメッセージが出ないので、
        注意が必要です。

 ● 関係演算子
 
   ・数字または文字列の、2つの値を比較し、プログラムの流れを判定するのに用いられます。
   ・(IF THEN ELSE END IF) (WHILE WEND) (SELECT CASE END SELECT) 命令で使用します。
 
演算子 関係の判定 書 式
= 等しい X = Y
<> 等しくない X <> Y
< より小さい X < Y
> より大きい X > Y
<= より小さいか等しい X <= Y
>= より大きいか等しい X >= Y
 
(例)
If A > 10 Then
  B = 1
Else
  B = 2
End If
  ' 変数 A が10より大きいならば
  ' 変数 B に1を代入
  ' 変数 A が10以下ならば
  ' 変数 B に2を代入
  ' If 命令文を終了

 ● 論理演算子
 
   ・論理演算子は、ビット操作やブール演算を行います。
   ・演算により個々のビットを操作したり、ビットパターンによる条件判定に利用できます。
   ・特定のビットをマスキングしたり、2つのバイナリー値を合併することもできます。
 
演算子 意 味 書 式
AND 論理積 A = B And C
OR 論理和 A = B Or C
XOR 排他的論理和 A = B Xor C
NOT 論理補数 A = Not B
 
(例)
A = &H0F And &H55
A = &H0F Or &H55
A = &H0F Xor &H55
A = Not &H0001
  ' A = &H05
  ' A = &H5F
  ' A = &H5A
  ' A = &HFFFE (Aは符号付きの型を使用)

 ● 関数演算子
 
   ・関数や算術演算の命令が用意されていますので、これを呼び出して使用します。
   ・詳細は、それぞれの関数命令を参照して下さい。
 
SIN 正弦(サイン)を求めます。
COS 余弦(コサイン)を求めます。
TAN 正接(タンジェント)を求めます。
ASIN 逆正弦(アークサイン)を求めます。
ACOS 逆余弦(アークコサイン)を求めます。
ATN 逆正接(アークタンジェント)を求めます。
ATN2 全四象限の逆正接(アークタンジェント)を求めます。
SINH 双曲線の正弦(ハイパボリックサイン)を求めます。
COSH 双曲線の余弦(ハイパボリックコサイン)を求めます。
TANH 双曲線の正接(ハイパボリックタンジェント)を求めます。
RAD2DEG ラジアン(弧度)を角度に変換します。
DEG2RAD 角度をラジアン(弧度)に変換します。
SQR 平方根を求めます。
EXP 指数関数(べき乗)を求めます。
POWER 正の浮動小数点型変数専用の、べき乗計算を行います。
LOG 対数関数(自然対数eを底とする)を求めます。
LOG10 対数関数(常用対数10を底とする)を求めます。
INT シングル型(単精度)またはダブル型(倍精度)の、整数部分を取り出します。
FIX 小数点以下の桁を、より0に近い値にして、整数化します。
ROUND 小数点以下の桁を、四捨五入します。
FRAC シングル型(単精度)の小数部分を取り出します。
ABS 絶対値を求めます。
SGN 浮動小数点型変数の符号を調べます。(正の数=1・ 0=0・負の数=-1)



   電子工作の部屋 Top へ 前のページへ戻る