| LEDを点滅させるプログラム | |
|---|---|
#include "common.h"
#include "primary.h"
void main()
{
Timer tm;
while(true)
{
LED(1);
tm.wait(500);
LED(2);
tm.wait(500);
}
}
|
1 iodefine.hを読み込んだり、新しい型の設定をしている。 2 基本的なクラスのヘッダファイルを読み込む。(ほとんどは、コメントになっている) 3 4 5 6 tmという名前のTimerオブジェクトを作る 7 永久ループ 8 9 緑のLEDを点灯 10 tmオブジェクトの中のwaitメソッドに500を送る。500ms待ちになる。 11 オレンジのLEDを点灯 12 13 14 |
| 上級 |
|---|
|
waitUS()メソッドを使えばマイクロ秒単位で使うことができます。 void waitUS(unsigned short US); 引数は16bitです。 |
| タイマー2つでLEDを2つ独立に点滅させるプログラム | |
|---|---|
void main()
{
startInit("**** タイマーのテスト****\n");
Timer tm;
Timer tm2;
Port Green = Port(CPU.port6, 4);
Port Orange = Port(CPU.port6, 5);
Green.setOutput();
Orange.setOutput();
tm.mark();
tm2.mark();
while(true)
{
if(tm.timeout(500)) {
tm.mark();
Green.writePin(!Green.readPin());
}
if(tm2.timeout(300)) {
tm2.mark();
Orange.writePin(!Orange.readPin());
}
}
}
|
1 2 3 4 緑のLED用のtmという名前のオブジェクトを作る。 5 オレンジのLED用のtmという名前のオブジェクトを作る。 6 緑のLEDオブジェクトで、名前をGreenにする。 7 オレンジのLEDオブジェクトで、名前をOrangeにする。 8 Greenを出力設定にする。 9 Orangeを出力設定にする。 10 緑のLED用タイマーをセットする。タイマースタート 11 オレンジのLED用タイマーをセットする。タイマースタート 12 13 14 緑用のタイマーが500ms経っていたら、 15 タイマーを再スタートさせる。 16 緑のLEDを反転させる。 17 18 オレンジ用のタイマーが300ms経っていたら、 19 タイマーを再スタートさせる。 20 オレンジのLEDを反転させる。 21 22 23 |
| 上級 |
|---|
|
timeoutUSメソッドを使えばマイクロ秒単位で使うことができます。 bool timeoutUS(unsigned short timeUS); 引数は16bitです。 |
| 重要なcpuクラスのメンバー |
|---|
フィールド
static const unsigned int port1 = 0xFFD4;
static const unsigned int port2 = 0xFFD5;
static const unsigned int port3 = 0xFFD6;
static const unsigned int port5 = 0xFFD8;
static const unsigned int port6 = 0xFFD9;
static const unsigned int port7 = 0xFFDA;
static const unsigned int port8 = 0xFFDB;
static const unsigned int portB = 0xFFDD;
コンストラクタ
cpu();
メソッド
static void delay(unsigned wait); 単位は約5μsのつもり
static unsigned char readPin(unsigned int port, int bit);
static unsigned char readPin(Port& P);
static void setInput(unsigned int port);
static void setInput(unsigned int port, int bit);
static void setInput(Port& P); ポートとビットの情報はPortクラスを用いる
static void setIOPort(unsigned int port, int value);
static void writePin(unsigned int port, int bit, bool value);
static void writePin(Port& P, bool value);
static void writePort(unsigned int port, unsigned char value);
static void writePort(Port& value);
static void setOutput(unsigned int port, unsigned char bit);
static void setOutput(unsigned int port);
static void setOutput(Port& P); ポートとビットの情報はPortクラスを用いる
static void setOutputPort(unsigned int port, int value);
static int readPort(unsigned int port);
static void BuzzerSet(unsigned char pitch , unsigned char vol); ブザーの設定
static void BuzzerStart(); ブザーを鳴らす
static void BuzzerStop(); ブザーを止める
|
| A/Dコンバーターの値を表示させる | |
|---|---|
void main()
{
startInit("**** ADコンバーターのテスト****\n");
Timer tm;
ADCon ad;
while(true)
{
printf("left: %4d leftC: %4d\n", ad.value(0), ad.value(1));
tm.wait(500);
}
}
|
1 2 3 4 タイマーオブジェクトを作る。 5 A/Dコンバーターのオブジェクトを作る。 6 永久ループ。 7 8 それぞれ測定し、値を表示する 9 500ms待つ 10 11 |
| 上級 |
|---|
|
ADCScanメソッドを用いると、4チャンネルを高速に測定できます ADCScan(BYTE channel); 測定された値は、 int* value(); // 4つの大きさの配列のアドレスが戻ります void value(int* val); // 自前の配列に入れてもらいたい場合 上記のメソッドは、1回のスキャンですが、次のメソッドで、autoScanをtrueにすると、連続的に測定します。 ADCScan(BYTE channel, bool autoScan); |