LED実験ボードが出来たのでプログラムの練習です。
[実験 MikroC Pro PIC16F84A_LED_0001]
PIC16F84AでLEDを全部点灯せよ。
●●●●●●●●
MikroC Pro for picを起動します。
P 16F84A
20MHz
84A_LED_0001
void main() {
}
main 関数が自動で出来ているので、
TRISA = 0x00; // PortAをOutput
TRISB = 0x00; // PortBをOutput
PORTA = 0xFF; // PortAをHigh
PORTB = 0xFF; // PortBをHigh
4行入力します。
Edit Project
[ Configurationの設定 ]
OscillatorをHS
セラミック発振子は、HS
Power Up Timer をON
パワーアップタイマイネーブルビットの
パワーアップタイマを動作させる。
(OFFでも良い)
OK
Build
Finish successfullyが最後の行に出れば、Build成功。
84A_LED_0001.hexをPIC16F84Aに焼きます。
上部が、PortAのLED 左から
RA5,RA4,RA3, RA2,RA1,RA0,OSC1,OSC2
下部が、PortBのLED 左から
RB0,RB1,RB2,RB3,RB4,RA5,RA6,RA7
RA4の出力は、オープンドレインタイプ。
RA5は、通常動作中の MCLR リセットスイッチ。アクティブLowでReset。
左の黄色いタクトスイッチを押してみて下さい。
押している間は、LEDが消灯し、
指を放すと、LEDが再び点灯します。
[ C言語の説明 ]
void main(){
処理1;
処理2;
…… ;
処理n;
}
main関数(main function)は、
C言語のプログラムの中で最初に実行される重要な関数です。
原則として「処理1」「処理2」………「処理n 」と下へ処理が実行されます。
プログラムを見やすくするために、Tabキーを押して字下げをします。
これをインデントといいます。
C言語では、文の終わりには「 ; (セミコロン)」の記号を書くことになっています。
これを単文と呼びます。
{ }で囲われた部分を複文と呼びます。
MicroC Pro では、C言語の「/* から */」とC++言語の「//」の
2種類のコメント(comment)が使用可能です。
/* 1行コメント */ または /* 複数行コメント */
// 1行コメント
[ プログラムの説明 ]
mikroC Proでは、「(レジスタ名)=(値)」で=演算子を用いて
レジスタに直接値を代入できます。
また、ポートの各ビットを指定する場合には、
「(ポート名).F(ビット名)」という書式もあります。
(値)を書くには、16進数、2進数、10進数の3つの表記が使われています。
16進数を表記する場合、数値の前に0xを付けます。
2進数の場合には、0bを付けます。
10進数の場合には、何も付けないという規則があります。
PIC16F84A は、8Bitマイコンなので下記のように表記します。
TRISA = 0x00; // PortAをOutput
TRISB = 0x00; // PortBをOutput
PORTA = 0xFF; // PortAをHigh
PORTB = 0xFF; // PortBをHigh
または
TRISA = 0b00000000; // PortAをOutput
TRISB = 0b00000000; // PortBをOutput
PORTA = 0b11111111; // PortAをHigh
PORTB = 0b11111111; // PortBをHigh
でもかまいません。
16Bitマイコンの場合は、下記のように見にくいですね。
TRISA = 0b0000000000000000; // PortAをOutput
TRISB = 0b0000000000000000; // PortBをOutput
PORTA = 0b1111111111111111; // PortAをHigh
PORTB = 0b1111111111111111; // PortBをHigh
TRISレジスタは、ピンの入出力(Input,Output)の方向を決めるレジスタです。
0ならば出力(Output)、1ならば入力(Input)となります。
出力(Output)とは、LED、モータ、油圧、空圧など。
入力(Input)とは、スイッチ、センサーなど。
ですから、まず
TRISレジスタでピンの役割 (InputかOutput)をPICに指示します。
TRISA = 0x00;
TRISB = 0x00;
次に、PORTレジスタで1ならばHigh(5v)、
0ならばLow(0v) をPICの各PINに指示します。
PORTA = 0xFF;
PORTB = 0xFF;
つまり、出力(Output)に指定した、LED、モータ、油圧、空圧などの
ONまたはOFFを決めてやります。
逆にプログラミングしても正常に動きます。
mikroC PRO for PIC
こんばんは、最近picに興味を持ちだしたものです。プログラム作りでアドバイス頂けると幸いです。またお邪魔させて頂きますね。突然失礼いたしました。
返信削除プログラム作りでアドバイスは出来ないと思いますが、picに興味を持って頂きありがとうございます。
削除どうぞ宜しくお願い致します。
返信削除