PIC16F88に接続したLEDを点灯・消灯させてみよう

【 当サイトには広告リンクが含まれています。 】

PIC16F88に接続した赤色LEDを点灯・消灯させるプログラムを、MPLAB X IDE 6.20のXC8(C言語)で作成し、PICマイコンライタ(PIC K150)を使って書込みます。



実験準備

実習に必要な機器とキットの部品を準備します。

機器

「PIC16F88で実験する環境を構築しよう 」記事で書きましたPIC16F88の実験回路(以下 実験回路)とPICマイコンライタ(PIC K150)、「MPLAB X IDE 6.20」をインストールしたWindows11搭載のパソコンを準備します。


部品

赤色LEDと固定抵抗等、実験に使う部品を準備します。

部 品 名規 格数 量取扱い店(参考)
LED5mm 赤色 (同等品)1電子工作ステーション
カーボン抵抗1/4W 330Ω1電子工作ステーション


配線

赤色LEDと実験回路をジャンパーワイヤーで接続します。

回路図


配線図




MPLABでC言語プログラミング

MPLAB X IDE v6.20 を使って、PIC16F88のC言語プログラムを作成します。

プロジェクトの新規作成

「MPLAB X IDE v6.20」を起動し、メニューの「File」をクリックし、リストボックスから、「New Project…」をクリックします。


New Project-Choose Projectダイアログが表示されますので、Categories:リストから「Microchip Embedded」を選択し、Projects:から「Application Ploject(S)」を選択後、「Next>」をっクリックします。


New Project-Select Deviceダイアログが表示されますので、次のように選択します。

項 目設 定 内 容
Fmily:Mid-Range 8-bit MCUs (PIC10/12/16/MCP)
Device:PIC16F88
Tool:Simulator


Tool:は Microchip社提供しているツール等をパソコンに接続されている場合、ドロップダウンリストに表示されます。(PIC K150が該当しません)

選択後、「Next>」をクリックします。


New Project-Select Compilerダイアログが表示されますので、「XC8(v3.00)[xxxx]」を選択後、「Next>」をクリックします。


New Project-Project Name and Folderダイアログが表示されますので、次のように設定、選択します。

項 目設 定 内 容
Project Name:任意(ここでは、16F88_blink_led)
Project Location:任意
Encoding:Shift JIS



選択後、「Finish」をクリックすると、「Projects」ウィンドウに作成したプロジェクトの内容が表示されます。


ソースファイルの作成

プログラムを記述するソースファイルを作成します。

Project(16F88_blink_led)内の「Source Files」を右クリックします。


表示されたリストボックスから、「New 」→「main.c…」と選択します。


New AssemblyLFile.asm-Nae and Locationダイアログが表示されますので、File nameに「任意の名前(16F88_blink_led_src)」を入力し、Extentionに「c」を選択後、「Finish」をクリックします。


Source Files に作成した「ソースファイル(16F88_blink_led_src.c)」が追加され、右側にC言語のひな形が入力された「エディタ」画面が表示されます。


メニューの「File」をクリックし、リストボックスから、「Exit」をクリックし、「MPLAB X IDE v6.20」を終了します。


コンフィグレーションビット

コンフィグレーションビットは、PIC16F88の基本的な動作設定を行い、プログラム作成時にのみ変更できる特殊なビットの集まりで、リセット時に読み出され、PIC16F88のハードウェア機能を有効または無効にします。

「MPLAB X IDE v6.20」を起動し、メニューの「Window」→「Target Memory Views」→「Configuration Bits」をクリックします。


「Configuration Bits」ウィンドウが、Outputエリア内に表示されます。


▶️コンフィグレーションビットの設定

コンフィグレーションビットを「Option」を次のように設定し、「Generare Source Code to Outoput」をクリックします。

FieldOption説 明
コンフィグレーションビット1
FSOCINTOSCIO内部RC発振回路を利用します(RA6、RA7ピンは汎用入出力)
WDTEONウォッチドッグタイマを有効にします
PWRTEOFFパワーアップタイマーを有効にします
MCLREONMCLRピンとして使用します
BORENONブラウンアウトリセットを有効にします
LVPON低電圧書き込みを有効にします
CPDOFFデータメモリ(EEPROM)の読出しを保護をしない
WRTOFFプログラムメモリへの書込みを保護しない(書込める)
CCPMXRB0キャプチャ/コンペア/PWM(CCP1)ピンをRB0に指定します
CPOFFPICライターを使ったプログラムメモリの読出しを保護しない(読み出せる)
コンフィグレーションビット2
FCMENON外部クロックが異常停止した場合、内部クロックに切り替えます
IESOON電源立ち上げ時に、外部クロックが安定するまで、内蔵クロックを使用します



「Output – Config Bits Source」ウィンドウに設定したフィギュレーション・ビットのコードが、自動的に生成されますので、このコードをコピーしてソース・ファイルに貼り付けます。

※今回は貼りつけは行いません。


または、「Output – Config Bits Source」ウィンドウ上で、「Ctrl」+「s」キーを押すと、「Save Output As」ダイアログが表示されますので、任意のフォルダとファイル名を設定して保存し、プロジェクトに追加します。


「MPLAB X IDE v6.20」を終了します。


プログラムの作成とビルド

Source Files に作成した「ソースファイル(16F88_blink_led_src.c)」のエディタに、赤色LEDを500ms間隔で点灯・消灯させるC言語プログラムを作成します。

プログラムの入力

「MPLAB X IDE v6.20」を起動し、「Projects」ウィンドウのソースファイル(16F88_blink_led_src.c)のエディタを表示ます。(表示されていない場合は、ソースファイルをダブルクリックします)


次のプログラムをエディタに入力するか、コピー、貼り付けします。

/*****************************************************************************
赤色LED点灯・消灯プログラム	
 * File:   16F88_blink_led_src.c
 * Author: Hagetamaboti
 * Created on 2025/mm/dd
******************************************************************************
ライセンス:SPDX-License-Identifier: MIT
******************************************************************************/	

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

// ********** PIC16F88 コンフィグレーションビットの設定 ********** 
// コンフィグレーションビット1
#pragma config FOSC = INTOSCIO  // 内部RC発振回路を利用します(RA6、RA7ピンは汎用入出力)
#pragma config WDTE = ON        // ウォッチドッグタイマを有効にします
#pragma config PWRTE = OFF      // パワーアップタイマーを有効にします
#pragma config MCLRE = ON       // MCLRピンとして使用します
#pragma config BOREN = ON       // ブラウンアウトリセットを有効にします 
#pragma config LVP = ON         // 低電圧書き込みを有効にします  
#pragma config CPD = OFF        // データメモリ(EEPROM)の読出しを保護をしない
#pragma config WRT = OFF        // プログラムメモリへの書込みを保護しない(書込める)
#pragma config CCPMX = RB0      // キャプチャ/コンペア/PWM(CCP1)ピンをRB0に指定します 
#pragma config CP = OFF         // PICライターを使ったプログラムメモリの読出しを保護しない(読み出せる)

// コンフィグレーションビット2
#pragma config FCMEN = ON       // 外部クロックが異常停止した場合、内部クロックに切り替えます
#pragma config IESO = ON        // 電源立ち上げ時に、外部クロックが安定するまで、内蔵クロックを使用します


// ********** グローバル変数定義 **********
#define _XTAL_FREQ 8000000      // 遅延関数(__delay_ms)を使用するためにシステムクロック(8MHz)を設定
#define LEDS_TOGGLE 0x07        //LED点灯・消灯データ

//LED点灯・消灯関数
void Led_On_Off();

// ********** メイン関数 **********
void main(void) {
    
    //SFR(特殊機能レジスタ)設定
    OSCCON = 0x70;              // システムクロックを内部8MHzに設定
    ANSEL = 0x00;               // アナログ入力は使用しない(すべてデジタルに設定)
    CMCON = 0x07;               // コンパレータを無効にする
    PORTA = 0x00;               // PORTA初期化
    PORTB = 0x00;               // PORTB初期化      
    TRISA = 0x00;               // PORTAは出力(RA5は入力のみ)
    TRISB = 0x00;               // PORTBは出力
    
    //無限ループ
    while(1)
    {
        //LED点灯・消灯関数
        Led_On_Off();
    }
   
    return;
}

// ********** 関数 **********
void Led_On_Off()
{
    PORTA = LEDS_TOGGLE;        // LED点灯
    __delay_ms(500);            // 500ms 待ち
    PORTA = 0;                  // LED消灯
    __delay_ms(500);            // 500ms 待ち
    
    return;
    
}



ビルド

ビルドは、ソースファイルから、PICに書込むための実行ファイルを生成しますが、プログラムに文法上のエラー等がある場合は、実行ファイルが生成されません。

ツールバーのビルドアイコンをクリックし「Build for Debugging (xxxxxxx)」を選択すると、ビルドが開始しデバッグ用のファイル(xxxxxx.elf)が作成されます。


▶️正常にビルドが完了

正常にビルドが完了すると「Output – xxxx (Buil. Load)」ウィンドウに「BUILD SUCCESSFUL (total time: xxxms)」が表示されます。


エラーがないことを確認した後、実際にPIC16F88に書込む実行ファイル(xxxxxx.hex)を生成するため、ツールバーのビルドアイコンをクリックし「Build Project (xxxxxxx)」を選択します。


正常にビルドが完了すると「Output – xxxx (Buil. Load)」ウィンドウに「BUILD SUCCESSFUL (total time: xxxms)」が表示され、実行ファイルの保存先とファイル名が表示されます。


保存先及びファイル名は、PIC16F88に書込む時に必要となりますので、記録しておきます。


▶️エラーでビルドが完了

エラーがあり、ビルドが失敗した場合は、ツールバーのデバッグアイコンをクリックし、デバッグモードを開始します。


デバッグ用ツールバーに変更されますので、ブレークポイント機能等を利用し、エラーが無くなるまでデバッグを行います。


デバッグ法方については、マイクロチップ社のマニュアル(英語)を参照してください。


実行ファイルをPICに書込む

MPLAB X IDE v6.20 を使って作成、ビルドした、C言語プログラムをPICマイコンライタ(PIC K150)を使ってPIC16F88に書込みます。

書込み準備

PIC K150をWindows11パソコンに接続し、microbrn.exeを起動すると「DIY K150 v 150807」ウィンドウが開きます。

「There appears to be a problem accessing the COM Ptort」エラーが表示された場合は、ドライバーが正常にインストールされていない可能性がありますので、「PIC16F88で実験する環境を構築しよう:PICマイコンライタ(PIC K150)」を参考にしてください。


Chip Selectorを「16F88」を選択し、実際のPIC16F88をPIC K150のゼロプレッシャーICソケットに、レバーを開閉して図のように取り付けます。

PIC16F88のピン1をICソケットのピン2に合わせます。






書込み

正常にビルドされたhexファイルをPIC16F88に書込むため、「Load」ボタンをクリックします。


「Open HEX File」ダイアログが表示されますので、ビルドした時に記録した保存先及びファイル名を指定し、「開く」をクリックします。


「DIY K150 v 150807」ウィンドウに戻りますので、「Program」ボタンをクリックして書込みます。


消去情報が表示されますので、「Yes」をクリックします。


正常に書き込まれると、「Program complete.」ダイアログが表示されますので、「OK」をクリックします。


書込みが完了しましたので、microbrn.exeを終了し、PIC16F88をPICマイコンライタ(PIC K150)から取りはずします。


実機で性能確認

C言語プログラムが書き込まれたPIC16F88を、赤色LEDを接続した実験回路 に実装します。

電源スイッチをONにすると、赤色LEDが500ms間隔で点灯、消灯します。




まとめ

MPLAB X IDE v6.20を使ってC言語でプログラミングを行い、ビルドした実行ファイルをPIC16F88に書込み、赤色LEDを接続した実験回路 に実装して、点灯・消灯させることができました。

ビルドしたHEXファイルを、PIC K150を使ってPIC16F88に書込み、実際に動作することを確認しました。