BASCOMの部屋               TOPページへもどる
 BASCO-AVRが4kバイトまで書けるようになっています(demo版)。 Webページでも使っておられる方が増えてきたようです。もう一度勉強してみようかな、 と。エディタは以前は日本語が使えなかったと思うのですが今ではコメントに使えるようです。日本語好き(?)の私向きです。Cに比べると記述が冗長な感じですが、 便利なルーチンも用意されていて、楽しく書けるかもしれません。(2007.03.04)

 開発環境:編集(edit)とコンパイルは専用のIDE(Integrated Development Environment)を使います。コンパイラがhexファイルを作ってくれますので、 プログラマは使い慣れたavrsp(x)にします。





BASCOMの文法:(調べたところから少しずつ書いていきます。間違いがあるかも...)


$regfile = "attiny2313.dat" 使用デバイスを書きます。2313DEF.dat At26def.dat m8def.dat m48def.dat など。
                書式が統一されていないようです。

$crystal = 8000000 クロックを書きます。 waits の様な時間が関係する命令を使うときは正しく書く必要があります。
変数宣言 Dim a As byte  a,b As byte の様にまとめて書けません。Dim a As Byte,b As Byte の様には書けます。   変数の型は、Byte   -128〜+127         Integer -32768〜+32767         Word   0〜65535         Long   -2147483648〜2147483647         Single 1.5 x105 〜 3.4 x 1038 Double  5.0 x1024 〜 1.7 x 10308 String  String*10で9文字を確保します。nullが入ります。254文字まで。 配列は Dim a(10) で1から始まる10個の配列が作られます。1から始まることに注意。 関数やサブルーチンの中ではlocal変数が使えます。そのルーチンが終わったときにメモリは解放されます。   Local as Byte bit、配列は使えません。 ポートの入出力方向の指定(DDRD)   Config Portb=Output ポートBの全ビットを出力に指定します。   Config Portb=Input  ポートBの全ビットを入力に指定します。   Config Portb=&H0F  上位4ビットは入力、下位4ビットは出力。1は出力、0は入力になります。2進数で書くと &B00001111 。   Config Portb.0=1   最下位ビットだけ出力に指定します。 ポートへの出力   Portb=123 Portb=&HFF Portb=&B10101010 Portb.1=1 (このときは1,0だけ) Portb=x (xはbyte型変数) ポートからの入力   X=Pinb ポートBの8ビットを変数xに読み込みます。 決して、x=Portbではありません。注意!!   y=Pinb.1 ポートBのビット1を読み込みます。(1または0) 演算記号   +   -   *   /  実数割り算   \  整数の割り算。余りは無視されます。   MOD 剰余(整数の割り算の余り)   and ビット毎のAND   or  ビット毎のOR   ^  ビット毎のXOR (1,1=0 1,0=1 0,1=1 0,0=0 )   not ビット毎の否定 比較演算子   =   <   >   <>   <=   >= IF文   if 〜 then ・・・・ elseif 〜 then    ・・・・   else    ・・・・   endif   if a=1 then portb.1=0 else portb.1=1 と1行に書いてもよろしい。 サブルーチン   Declare Sub Test(byval A As Byte , B1 As Byte)     宣言。サブルーチン使用前に宣言します。                               byvalは値渡しで、書かなければ参照渡しになります。   Call Test(1 , Bb) サブルーチンの呼び出し   Sub Test(byval A As Byte , B1 As Byte)         サブルーチンの定義を書きます    <サブルーチンの内容>                  〃   End Sub                           〃 割り込み処理   Enable Interrupts        グローバル割り込み許可{sei()}   Enable Int0           Int0割り込み許可 割り込み名は ATtiny2313.DAT などの定義ファイルにあります。                    <INT0 INT1 ICP1 OC1A OVF1 OVF0 URXC UDRE UTXC ACI PCINT                      OC1B OC0A OC0B UCI_START UCI_OVFLW EERDY WDT>   On Int0 Label2          割り込み原因発生時の処理を定義します。 Nosaveオプションは使えます。   Label2:             割り込みサブルーチン名でなく、ラベルを使います。コロンが必要です。    <割り込み処理の内容>   Return              ラベルへジャンプですから、returnが必要です。   Disable Interrupts グローバル割り込み禁止 {cli()} Disable Int0           割り込み禁止 Special function registersの設定   timer/counterの設定、USARTの設定などは、ほとんど config 〜 で行います。   Config Timer0 = Timer , Prescale = 1   Start Timer0              など。 configと書けばメニューが表示されます。                       configにカーソルをおいてヘルプを呼び出せます。 内蔵RC発振器の校正   osccal=100  と書きます。(はじめの方に書くのがいいでしょう)          校正値の100は avrsp -rf で求めます。
  



TOPページへもどる


inserted by FC2 system