はじめに
初めに、簡単なプログラムを作成して、実際にPICを動作させてみる。作成するプログラムは、ポートAに入力した信号をそのままポートBに出力する単純なものである。
一般的なアセンブラによるプログラム開発手順を以下に示す。
- テキストエディタによるソースプログラムの記述
- アセンブラによるソースプログラムの機械語への変換
- ライタによるPICへの書き込み
- プログラムの実行
- 正常に動作していれば開発完了。問題があれば1.に戻りプログラムを修正する
開発環境の準備
シリアルケーブルにより、コンピュータのシリアルポートとPICプログラマを接続する。次にACアダプタによりPICプログラマに電源を供給する。図1-1に接続の様子を示す。
図1-1 コンピュータとPICプログラマの接続
実験回路の結線
ここではCPUボードとI/Oボードを用いる。これらを表1のように接続する。また接続の様子を図1-2に示す。
CPUボード | +5V | GND | RA0 | RA1 | RA2 | RA3 | RB0 | RB1 | RB2 | RB3 |
---|---|---|---|---|---|---|---|---|---|---|
I/Oボード | +5V | GND | OUT0 | OUT1 | OUT2 | OUT3 | IN0 | IN1 | IN2 | IN3 |
図1-2 実験1の結線
プログラム開発
MPLAB IDEの起動
パソコンを操作し、[スタート] → [Microchip] → [MPLAB IDE]の順に選び、MPLABを起動する。起動直後のMPLAB IDEを図1-3に示す。
図1-3 MPLAB IDEの初期画面
プロジェクトの作成
MPLABで開発するプログラムはプロジェクト単位で管理される。以下の手順で新規のプロジェクトを作成する。
- [Project] → [Project Wizard…]でProject Wizardダイアログが開く。
- をクリックする。
- Step ONE:
- Deviceで「PIC16F87」を選択し、 をクリックする。
- Step TWO:
- Active Toolsuiteで「Microchip MPASM Toolsuite」を選択し、Toolsuite Contentsで「MPASM Assembler[mpasmwin.exe] v5.51」を選択したら をクリックする。
- Step THREE:
- 「Create New Project File」で、プロジェクトの保存先フォルダ(「D:\pic」など)を指定する。「ファイル名」に「experiment01」などの名前をつける(日本語不可)。 をクリックする。
- Step FOUR:
- 既存のファイルをプロジェクトに追加する場合は、ここで追加する。今回は追加ファイルは無いので、そのまま をクリックする。 をクリックすると、プロジェクトができる。
ソースファイルの入力
MPLAB IDEにおいて、[File] → [New]でエディタを起動し、以下のプログラムをエディタで入力する。記述したプログラムは、例えばファイル名を「experiment01.asm」などとして保存する。ここでの保存先はプロジェクトの保存先と同じとする。
;
; 実験1 入出力テストプログラム
;
; CONFIG1
__CONFIG _CONFIG1, _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CCPMX_RB0 & _CP_OFF
; CONFIG2
__CONFIG _CONFIG2, _FCMEN_ON & _IESO_ON
list p=16F87
include <p16F87.inc>
ORG 0x000 ; リセットベクタを 0番地に指定
BSF STATUS,RP0 ; STATUSのビットPR0をセット(BANK 1)
MOVLW B'00001111' ; WレジスタにB'00001111'を転送
MOVWF TRISA ; Aポートの下位4bitを入力に設定
CLRF TRISB ; Bポートを全て出力に設定
BCF STATUS,RP0 ; STATUSのビットPR0をセット(BANK 0)
CLRF PORTA ; Aポートをクリア
LB0 MOVF PORTA,W ; Aポートの状態をWレジスタに転送
MOVWF PORTB ; Wレジスタの値をBポートに転送
GOTO LB0 ; ラベルLB0へジャンプ
END
List.1 入出力テストプログラム
プロジェクトへの追加
MPLAB IDEにおいて、Projectウィンドウの[Source File]を右クリックし、追加したいソースファイルを指定する。
Projectウィンドウが表示されていない場合は、[View] → [Project]を選択する。
アセンブル
MPLAB IDEにおいて、[Project] → [Build All]でソースファイルがアセンブルされる。途中[Absolute]と[Relocatable]を問われることがあるが、この場合は[Absolute]を選ぶとよい。アセンブルが終了すると、Outputウィンドウが表示される。エラーがあれば、Buildタブに表示される。
アセンブルに成功すれば、プロジェクトと同じフォルダ内に、拡張子が.hexのファイルが生成される。このファイルに機械語プログラムが格納されている。以後、このファイルをHEXファイルと呼ぶ。
PICへの書き込み
作成した機械語プログラムは、PICのプログラムメモリに書き込まれて、初めて実行することができる。機械語プログラムをPICに書き込むことを(少しややこしいが)「プログラム」という。このために、PICプログラマと、AKI-PICプログラマ(ソフト)を用いる。
PICプログラマの準備
PICプログラマの電源を入れ、AKI-PICプログラマ(ソフト)を起動する。[スタート] → [Akizuki] → [PIC Programmer V4 Beta]の順に選ぶ。PICプログラマの起動直後の様子を図1-5に示す。
起動後、右下欄に[COM3 :AE-PGM877A V6.73]が表示されていればPCとプログラマが通信に成功している。もしライターが接続できなかった場合は[オプション]→[COMポート設定]の順に選びCOM3を指定する。
もしもCOM3を指定しても通信が成功しなかった場合は[デバイスマネージャー]を開き、[ポート]から[USB Serial Port]に記載されているCOMポートに繋ぐとよい。
図1-4 COMポート設定画面
図1-5 AKI-PICプログラマの初期画面
(通信に失敗した場合)
図1-6 AKI-PICプログラマの初期画面
(通信に成功した場合)
HEXファイルのロード
[ファイル] → [HEXファイルのロード]で、先程生成されたHEXファイルを指定する。
コンフィギュレーションワードの設定
PICは、使用する条件によりコンフィギュレーションワードを設定する必要がある。PICプログラマの図1-7に示す部分でコンフィギュレーションワードの設定を行う。
実験で用いるコンフィギュレーションワードの設定を表2に示す。このうち、オシレータタイプ(FOSC)は班により異なるので、表3により確認し、正しい設定を行うこと。
図1-7 コンフィギュレーションワードの設定
Config. Word | 設定 |
---|---|
FOSC | 表3の設定 |
WDTE | Disable |
PWRTE | Enable |
MCLRE | RA5=MCLR |
BODEN | Disable |
LVP | RB3=I/O |
CPD | Not_Protect |
WRT | Protection_Off |
DEBUG | Disable |
CCPMX | CCP1=RB0 |
CP | Not_Protect |
班名 | オシレータ | 設定 |
---|---|---|
PIC001 | 4MHzセラロック | XT |
PIC002 | 8MHzセラロック | HS |
PIC003 | 10MHzセラロック | HS |
PIC004 | 4MHzセラロック | XT |
PIC005 | 8MHzセラロック | HS |
PIC006 | 10MHzセラロック | HS |
PIC007 | 4MHzセラロック | XT |
PIC008 | 8MHzセラロック | HS |
PIC009 | 10MHzセラロック | HS |
PIC010 | 8MHzセラロック | HS |
PICの挿入
PICプログラマのソケットにPICを装着する。装着位置、方向を間違えないように注意する。なお、必ずPICプログラマの準備が完了してからPICを装着すること。手順を間違えるとPICは破損する場合がある。また、プログラマのBUSYランプが点灯しているときは、絶対にPICの脱着を行ってはいけない。
PICのプログラム
をクリックすると、ロードしたHEXファイルがPICに書き込まれる。PICに既に別のプログラムが書き込まれている場合には、「書込み済みです。上書きしますか?」のメッセージダイアログが開く。構わなければ をクリックする。問題があれば、PICを交換する。BUSYランプの確認を忘れずに行うこと。
動作確認
PICプログラマから書込み済みのPICを取り外し、CPUボードに装着する。電源を投入して、I/Oボードのスイッチを操作すると、それに応じたLEDが点滅することを確認する。
動作に問題がある場合は直ちに電源を切り、結線、プログラムの確認を行う。