MPLAB IDE V8.3
MPLAB IDEがV.8.2からV8.3に変わっていました。早速バージョンアップを行いました。いつもと同じようにとくに問題なくバージョンアップが完了しました。このバージョンアップでは、サポート・デバイスの追加のほかにPICkit3がPIC32をサポートするようになったようです。PIC16Fシリーズを対象としている事項ではめだった項目は見つかりませんでした。
PICkit3またはPICkit2の接続ポートを用意
テスト・ボード01をPIC16F88用に変更した回路に、PICkit用の接続ポートを6ピンのピン・ヘッダで用意しました。
前回示した回路図とは、LEDの向きを反対にして、出力がHのときに点灯するように変えました。「作りながら学ぶPICマイコン入門」の記事に合わせました。CR発振回路のCの値も30pFから100pFに変えてあります。
PICkitとの接続方法
6ピンのピン・ヘッダをブレッドボードに立てて、PICkitとの接続ポートとします。このピン・ヘッダにPICkitを接続するとブレッドボードにPICkitが直立します。PICkit単独の場合は直立していて余り動かないのですが、PCと接続するためのUSBケーブルを接続すると不安定になります。
そのため、次に示す6ピンの2.5mmピッチのコネクタでとリード線で、ブレッドボードとPICkitとを接続することにします。
ピン・ヘッダとPICkitは、黒、茶、赤、橙、黄、緑の0から5までのカラーコード・リード線で接続します。圧着端子は、ホーザンのP706かエンジニアリングのPA09の圧着ペンチで、次に示すように圧着します。
デバイスがPIC16F877AからPIC16F88に換わりました。そのためプロジェクトのデバイスの設定も変更しなければなりません。そのために、新しくプロジェクトを作成し、新しいソース・プログラムの作成を開始し、内容は前回作成したf877010.asmの内容をコピーし、変更が必要な箇所を修正します。
変更個所
(1) デバイスが変わったので PIC16f877に関するところをPIC16F88に変更
(2) LEDへの出力をPORTDからPORTBに変更
(3) DIPからの入力ポートをPORTBからPORTAに変更
; f88010.asm f877010.asm –>; f88010.asm
list p=16f88 ; list directiveでPICの型番を指定(16f877->16f88
#include<p16f88.inc>;変数の定義したファイルを読み込むp16f877.inc-> p16f88.inc
; 次に コンフィグレーションビットを設定
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_OFF & _DEBUG_OFF & _CPD_OFF
;***** 変数定義域
t_work1 equ 020h ;
t_work2 equ 021h
;**********************************************************************
ORG 0x000 ; リセット時のプログラム開始アドレス
nop ; インサーキット・デバッガ用のnop なくてもよい
goto main ; プログラムの開始部へジャンプ
org 01ch
main bcf STATUS,RP0 ; バンク0を選択
clrf PORTB ; ポートDをクリア D -->B
bsf STATUS,RP0 ; バンク1を選択
Clrf TRISB ; ポートDを出力に設定 D-->B
; bcf OPTION_REG,NOT_RBPU ; Bポートのプルアップ指定
bcf STATUS,RP0 ; バンク0を選択loop swapf PORTA,W ; ポートBを読みニブルを入れ替える B--A
movwf PORTB ; ポートDへ出力 D-->B
loop2 call delay ; 時間待ちサブルーチンへ
decfsz PORTB,F ; ポートDの値を1減算 D-->B
goto loop2 ; 時間待ち処理へ戻る
goto loop
; サブルーチン
delay movlw 00ffh ; 255を繰り返し回数としてWレジスタにセット
movwf t_work1 ; 汎用レジスタにセット
rep2 movlw 0ffh ; 第二の繰り返し回数をWレジスタにセット
movwf t_work2 ; 汎用レジスタにセット
rep1 nop ; 何もしない
decfsz t_work2,F ; 内側のカウンタを-1し0なら終わり
goto rep1 ; 0以外繰り返す
decfsz t_work1,F ; 外側の繰り返しカウンタを-1し0なら終わり
goto rep2 ; 0以外繰り返す
return ; メイン・ルーチンに戻る
END ; 擬似命令 プログラムの終了を示す
次回、このポートの変更を行ったプログラムをアセンブルしてみます。各ポートはディジタル・ポートとしての機能をもっていますのでこれでよいと思うのですが、本当にこれでよいのか次に試してみます。
