PIC


stillalive

PIC

■ページ内リンク
1.16F84A
(1)リレー回路
2.12F683
(1)開発環境

16F84A

PIC(PIC16F84A)には、35個の命令がある。

PICの命令は、メモ帳などのテキストエディタで作成します。 命令の構文は次のようになっています。

ラベル  命令  オペランド 

ラベル 命令の場所(アドレス)に名前を付けたい時に記述する。 行の先頭から記述します。使用できる文字は、英数字と特殊文字のみ 命令 命令(ニーモニック)を記述 ラベルがある場合は、1つ以上スペースを空けて記述します。ラベルが無い場合は、行の先頭から1つ以上のスペースを空けて記述します。 オペランド 命令毎に決められているオペランド(命令のパラメータ)を記述します。 命令の後に1つ以上のスペースを空けて記述します。

; コメント セミコロン(;)より右は、行の最後までコメントを記述できる。

《例》 
ラベル  命令  オペランド  ; コメント  
LOOP    ; ラベルだけの行があっても良い  
 〜   ; COUNTが0になるまで繰り返す処理を記述  
  DECFSZ  COUNT,F  ; COUNT - 1 が0なら次の命令をスキップ(NEXTへ)  
  GOTO  LOOP  ; LOOPに戻る  
NEXT    

PICの命令

PICの命令は、以下の3種類。 

・バイト対応のファイルレジスタ命令(18命令) ・ビット対応のファイルレジスタ命令(4命令) ・リテラルおよびコントロール命令(13命令)

・ アセンブラ命令 

アセンブラ命令は、PICの命令では無く、アセンブラ(MPLAB IDE)に対する命令です。

アセンブラがソースプログラムを翻訳する時に、アセンブラ命令に従って翻訳し、PICの命令(機械語)を作成(ビルド)します。

〜代表的なアセンブラ命令〜
LIST 使用するPICの種類などを定義する  
INCLUDE 設定ファイルを指定する  
__CONFIG PICの動作モードなどを指定する  
EQU 定数をラベル名で定義する  
CBLOCK
ENDC 連続した定数をラベル名で定義する  
ORG 以降の命令の先頭アドレスを指定する  
END ソースの最後である事を定義する  
《使用例》

        LIST    P=PIC16F84A  ; LIST宣言で使用するPICを16F84Aと定義する
        INCLUDE P16F84A.INC  ; 設定ファイルp16f84a.incを読み込む  
        __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

       ORG     0           ; リセットベクタ(0番地)を指定する。

LIST命令

LIST命令では、使用するPICの種類を定義する。  
   LIST  P=PIC16F84A (PIC16F84Aを使用する場合)

INCLUDE命令

INCLUDE命令では、設定ファイルを指定する。
設定ファイルは、PICの種類毎にアセンブラ(MPLAB IDE)が提供されている。

   INCLUDE  P16F84A.INC (PIC16F84Aを使用する場合)

__CONFIG命令<PIC16F84A>

__CONFIG命令では、PICの動作モードを指定する。

設定できる値 それぞれの設定値は、「&」でつなげて記述します。 動作モード 設定値と意味

・コードプロテクト有無 
 _CP_ON コードプロテクトする  
 _CP_OFF コードプロテクトしない  
・オシレータの種類 
 _LP_OSC 100KHz以下(水晶振動子,省電力モード)  
 _XT_OSC 4MHz以下(水晶振動子orセラミック振動子)  
 _HS_OSC 4MHz〜20MHz(水晶振動子orセラミック振動子)  
 _RC_OSC 4MHz以下(R/C発振)  
・パワーアップタイマ有効・無効 
 _PWRTE_ON パワーアップタイマ有効  
 _PWRTE_OFF パワーアップタイマ無効  
・ウォッチドックタイマ使用有無 
 _WDT_ON ウォッチドックタイマ有効  
 _WDT_OFF ウォッチドックタイマ無効  

記述例

   __CONFIG  _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF 

EQU命令

EQU命令は、オペランドで指定した値を使う代わりに、ラベルで指定した名前を使用できる。

例えば、データメモリの0Ch番地(汎用RAMの先頭)をカウンタで使用するケースでは、以下のどちらの方法でも同じ結果になりますが、名前が付いていた方が分かりやすいと思います。

0Ch番地を値で参照 0Ch番地を名前で参照  

 DECFSZ 0Ch,F COUNTER  EQU  0Ch

 DECFSZ  COUNTER,F 

また、汎用レジスタの先頭アドレスは、PICの種類により異なりますので、名前を付けて使っていれば別の機種に移行する時も楽になります。(EQU命令のアドレスを変えるだけで良い)

CBLOCK,ENDC命令

CBLOCKとENDC命令は、EQU命令と同じで、値に名前を付ける命令です。

EQU命令との違いは、連続した値に名前を付ける時、個々の名前に値を指定せずにCBLOCK命令のオペランドで値を指定すれば、ENDCまでの名前に+1した値が自動的に割り当てられます。 CBLOCK〜ENDC命令の例を、EQU命令と対比して載せます。

CBLOCK〜ENDCの例 同じ事をEQU命令で書くと

CBLOCK  0Ch  
SAVE_ST    
SAVE_W    
COUNTER    
ENDC    
 SAVE_ST  EQU  0Ch  
SAVE_W  EQU  0Dh  
COUNTER  EQU  0Eh  

ORG命令

ORG命令は、以降に続く命令をプログラムメモリの何番地から格納するかを指定します。

プログラムの先頭では、通常以下のように記述します。   ORG  0  ; リセットベクタ(0番地)を指定  
 GOTO  START  ; STARTに行く  
 ORG  4  ; 割込みベクタ(4番地)を指定  
   ; ここに割込み処理を記述  

START  ; ここから通常処理開始

割込みについては、(5)TMR0割込みを使うの「割込みとは」を参照下さい。

END命令

END命令は、ソースプログラムの最後を宣言する命令で、最終行に記述します。  
  END 

リレー回路

2.12F683

(1)開発環境

PICの開発環境を整備する。PICの開発には大まかに下記が必要である。
1.統合開発環境(MPLAB)
2.デバッガダウンロードケーブル(マイコンデバッグ、書き込みを行う。)
3.CコンパイラMPLAB XC8

今回C言語にてプログラミングを行う前提なので3が必要ですが、アセンブラでプログラミングする場合は不要です。
MPLAB XC8は純正コンパイラで、統合開発環境をインストールするとき、一緒に組み込むことができます。

1.統合環境インストール
下記PICマイコンメーカーからダウンロードします。

ダウンロードリンク

microchip_DL
MPLABダウンロードリンク
2017/7/14時点でWindows x64版はv1.00aでした。

ダウンロード後解凍したファイルは下記の通り。
MPLABX-v1_00-a-windows-installer.exe

exeファイルをダブルクリックすると始まるが、javaのインストールを要求されることがある。
要求された場合は、それに合うものをインストールすること。
このときJRE1.6.nがないといわれるので、Javaのサイトより下記をインストールする。
このとき最新は1.8.n Java SE 8とよばれるものでこれではVerが合わない。
Javaのアーカイブから古いVerをインストールする必要がある。
JRE 1.6.nは Java SE 6に相当する。下記のものをダウンロードする。

Java JRE1.6.n
JAVAダウンロードリンク
ファイル名:jdk-6u45-windows-x64.exe

Javaダウンロード


JRE 1.6.nをダウンロードした後に、MPLABX-v1_00-a-windows-installer.exeをダブルクリックすると下記画面となる。

Javaダウンロード


インストールには"同意"し、基本的に"Next"をクリックしていけばダウンロードができる。

Javaダウンロード


Javaダウンロード


3.コンパイラ

microchip_DL
コンパイラダウンロードリンク
2017/7/14時点:HITECH CではなくこちらのMPLAB XC8が現行のコンパイラ

使用しているOSなどから適したものをダウンロードする。
Win7 x64の場合は下記。
MPLAB® XC8 Compiler v1.42

xc8-v1.42-full-install-windows-installer.exeをダブルクリックしてインストール開始。

Javaダウンロード


下記は"Program Files (x86)"の(x86)を削除してつぎへ進む。

Javaダウンロード


下記は、すべてチェックしてから次へ進む。

Javaダウンロード


下記は、そのまま次へ進む。free版で使用する場合。

Javaダウンロード


2.デバッガダウンロードケーブルのセットアップ PICkit3をUSBポートに指すと自動的に認識し、ドライバがインストールされる。

Javaダウンロード