久しぶりにPICの開発環境を作ろうとした所、色々変わっていたのでメモ。
最初にMPLAB Xをインストール
ダウンロード
http://www.microchip.com/mplab/mplab-x-ide こちらよりダウンロードし、インストールする。
インストール
インストール方法はこちらで紹介されています。
MPLABX IDE使い方:MPLAB X インストール方法
次に、XC8コンパイラをインストール
ダウンロード
http://www.microchip.com/mplab/compilers
インストール
こちらでインストール方法が紹介されています
MPLAB IDE使い方:XC8コンパイラのインストール方法
サンプルソース
こちらで、XC8コンパイラの使い方やサンプルソースが公開されて参考になります。
日本語マニュアル
こちらに日本語マニュアルがあります http://ww1.microchip.com/downloads/jp/DeviceDoc/50002173A_JP.pdf
MCC(MPLAB® Code Configurator)をインストール
アドインとしてインストール
MCC(MPLAB® Code Configurator)をインストールします。こちらでインストール方法が紹介されています。 アドインとしてインストールします。 hirobe.tea-nifty.com ADCやシリアルなどの内部ペリフェラルを動かすコードを自動生成してくれます。 今後はこれを使ってくださいということで過去あったペリフェラルライブラリ(plib)が無くなっています。 MCCが対応していないデバイスや手動でやりたい、過去のコードを使いたいというときは次の方法でPlib(ペリフェラルライブラリ)をインストールできます。
ペリフェラルライブラリをインストール
ダウンロード
ペリフェラルライブラリをダウンロードしインストールする。 Peripheral Libraries (PLIBS) http://www.microchip.com/mplab/compilers
使い方・設定
使い方はこちらで詳しく説明されている。使うためにはプロジェクトの設定変更が必要。
XC8サンプルソース
XC8でLチカを書くとこんな感じです。 PICで「Cで書いた」と書いてあってもコンパイラが違うとコンパイルできないので難しいですね。
/* * File: main.c * Author: garyo_000 * * Created on December 28, 2016, 11:56 PM */ // PIC16F648A Configuration Bit Settings // 'C' source line config statements // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled) #pragma config MCLRE = ON // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR) #pragma config BOREN = ON // Brown-out Detect Enable bit (BOD enabled) #pragma config LVP = ON // Low-Voltage Programming Enable bit (RB4/PGM pin has PGM function, low-voltage programming enabled) #pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #define _XTAL_FREQ 20000000 #include <xc.h> void main(void) { TRISB = 0; while(1){ RB0 = 1; __delay_ms(1000); RB0=0; __delay_ms(1000); } return; }