18F14K50 I/Oポートの設定(出力の制御)Lチカ
動作しない場合の原因は、電子回路やプログラムの不備と多岐にわたります。原因の切り分けはとても大切です。原因は、プログラムなのか電子回路かを確認する必要があります。Lチカ(LEDをチカチカさせること)は、簡単なプログラムで電子回路の不備や電子部品の故障を探すための重要な工程です。
I/Oポートの概要
データシート4ページに記載されていますが、I/Oピンとして設定されているのが15本あります。I/Oは、最大3つのポートを使用できます。各ポートの動作には以下の3個のレジスタを使用します。
・TRISレジスタ(データ方向レジスタ)
・PORTレジスタ(読み取り)
・LATレジスタ(出力)
入力する場合は、PORTレジスタを利用し、出力はLATレジスタを利用します。
プログラムの設定
PICマイコンは、TRISレジスタで入力か出力を決定します。PIC18F14K50は、「Aポート」「Bポート」「Cポート」があるので、下に示したサンプルのように全てのポートへ設定します。
出力に設定:0
入力に設定:1
//ポートセット 出力のみであれば、全て『0』を設定する
TRISA = 0b00000000; //LEDの接続されているポートを出力に設定
TRISB = 0b00000000; //LEDの接続されているポートを出力に設定
TRISC = 0b00000000; //LEDの接続されているポートを出力に設定
データを出力する
出力する方法は、ポート全て制御する方法とビット毎に出力する方法の2通りがあります。プログラムの記載方法は下記のとおりです。使い方は、設計次第です。今回のようなLチカは、ビット毎に制御したほうが簡単ですし、プログラムから確認しやすいですね。
//Cポート全て対応
LATC = 0b10101010;
//ビット毎に対応
LATCbits.LATC0=0;
サンプルプログラム
サンプルプログラムの注意です。このプログラムは、Bootloaderで動作するように記載したプログラムになります。本来のプログラムは、コンフィグレーションビットの設定も必要ですが、Bootloaderを使うとこれだけシンプルになります。
#include <xc.h>
#define _XTAL_FREQ 48000000
void main(void) {
//ポートセット 出力のみであれば、全て『0』を設定する
TRISA = 0b00000000; //LEDの接続されているポートを出力に設定
TRISB = 0b00000000; //LEDの接続されているポートを出力に設定
TRISC = 0b00000000; //LEDの接続されているポートを出力に設定
LATA = 0; //PortAのすべてのビットを「0」
LATB = 0; //PortBのすべてのビットを「0」
LATC = 0; //PortCのすべてのビットを「0」
while(1){
LATCbits.LATC0=1;
__delay_ms(500);
LATCbits.LATC0=0;
__delay_ms(500);
}
return;
}
まとめ
シンプルなプログラムで動作確認をしましょう。参考にしてくださいね!
“18F14K50 I/Oポートの設定(出力の制御)Lチカ” に対して1件のコメントがあります。