mikroElektronika社のC言語があります!
少し前にmikro Basicをのぞきました、ここに同社のC言語(mikroC for PIC)もあります。ついでにダウンロードしてインストール(10.8M Ver 8.2)しました、マニアルも必要です(mikroElektronika)。
お試し版はやはり2KBですが、結構使えそうです。このSoftも皆さん使っているようで時折見かけますので安心です。
初心者にはマニアルの他に「REFERENCE GUIDE FOR mikro C(c_syntax_v101.pdf)」もダウンロードしておくと何かと約に立ちます。[プログラム]
「LEDの点灯」プログラムとほとんど同じですが、少しアレンジして音を出すようにしました。LEDの替わりに「圧電ブザーをスイッチング」して音出しをしています。
メインプログラムとブザー(サブルーチン)の組み合わせです。ICは手持ちの12F629を使いました、お値段も手頃で扱い易いです。
サブルーチンは関数にして、For文に入れMax回数を入れられる様にしました。基本中の基本でしょうか。
結果は「音は出ています」予定していた200μSのON-OFFが173+180μSになり、少し周波数は高め(A)になりました、またデュテイ比も少しずれています。
A.周波数はクロックの設定をしていない。
B.回数を数えているので、その分処理が増えバランスを崩しています(当初気が付かなかった)。
そして、8bitで良い所を16bitで実行しているのでプログラムが無駄かも知れません。
/* PIC12F629 4MHz 2009/2/18 Pin@-Vcc 5V PinA NC PinB NC PinC GPIO.3:in SW PinD GPIO.2:OUT Buzzer PinE NC PinF NC PinG Vdd */ void Buzzer (unsigned int Bz_Long){ unsigned int i; for(i=0;i<Bz_Long;i++){ GPIO.F2=1; Delay_us(200); GPIO.F2=0; Delay_us(200); } } void main() { CMCON = 0b00000111; //コンパレータを使わない TRISIO = 0b00001011; // while(1){ if (GPIO.F3==0){ // SWを押した時、音が[ピ!]と出る。 Buzzer(250); //0.1Sec } } }
[特 徴]
実行させると(コンパイル)Hexファイルが出来上がります、これをICに焼き付ける分ですが、Basicよりも気持ち短い気がしました。
プログラムは一度アセンブルしてからhexに変換しているようで、asmのファイルも同時に作られます。
アセンブルでプログラムが出来ればこれの方が効率よく動作するはずです。所がややっこしいプログラムは頭が混乱するので、今回のような「BASIC」や「C言語」のプログラムが必要になって来ます。
計算やRS232C・I2C・PWM・LCDコントロールなど、たくさんのライブラリーが内蔵され、これらを再利用出来便利です。
今後は簡単な物はアセンブルでプログラムし、少し込み入ったもは別の言語に頼るのも効率よくPICを使うのに役立ちそうです、今後期待したいと思います。
[C(言語)に付いて]
[C]も何社から出ているようです。一種の方言みたいに細かい点で異なるようです。いずれにしても個々のPIC、それ自体の動作をマニアルで調べないと使えません。
多少の変更で[先輩が公開しているプログラム]を利用したり・移植出来そうです。今後知恵を借りたいと思います。
[その後・・・]
先輩のHPを見させて頂き、これからどんどん参考にしたいと思います。
[写真はSWを付けていませんがCピンを0V(GND)にすると、音が出ます。]
2009/FEB/20