« Arduino入門(3)ライブラリの使い方 | メイン | HC08マイコンの使い方QY4A編 -《44》QY4A内蔵A-D変換器(1) »

作りながら学ぶPICマイコン入門のフォロー(7)


MPLAB IDE V8.3
  MPLAB IDEがV.8.2からV8.3に変わっていました。早速バージョンアップを行いました。いつもと同じようにとくに問題なくバージョンアップが完了しました。このバージョンアップでは、サポート・デバイスの追加のほかにPICkit3がPIC32をサポートするようになったようです。PIC16Fシリーズを対象としている事項ではめだった項目は見つかりませんでした。

PICkit3またはPICkit2の接続ポートを用意
  テスト・ボード01をPIC16F88用に変更した回路に、PICkit用の接続ポートを6ピンのピン・ヘッダで用意しました。

PIC070010.jpg

 前回示した回路図とは、LEDの向きを反対にして、出力がHのときに点灯するように変えました。「作りながら学ぶPICマイコン入門」の記事に合わせました。CR発振回路のCの値も30pFから100pFに変えてあります。


PICkitとの接続方法
  6ピンのピン・ヘッダをブレッドボードに立てて、PICkitとの接続ポートとします。このピン・ヘッダにPICkitを接続するとブレッドボードにPICkitが直立します。PICkit単独の場合は直立していて余り動かないのですが、PCと接続するためのUSBケーブルを接続すると不安定になります。

 そのため、次に示す6ピンの2.5mmピッチのコネクタでとリード線で、ブレッドボードとPICkitとを接続することにします。

 

PIC070020.jpgリード線の色はカラーコードでピン番号と合わせる
  ピン・ヘッダとPICkitは、黒、茶、赤、橙、黄、緑の0から5までのカラーコード・リード線で接続します。圧着端子は、ホーザンのP706かエンジニアリングのPA09の圧着ペンチで、次に示すように圧着します。

 

PIC070030.jpg 6本のリード線は、コネクタのハウジングの三角マークの一番ピンの位置に黒のリード線を挿し込みます。後は、順番にリード線を挿し込みます。

 

PIC070040.jpg コネクタとPICkit、コネクタとブレッドボードは、次に示す上下のピンが同じ長さのピン・ヘッダを使用しています。このピン・ヘッダは、秋葉原の東京ラジオデパート1階のアイコー電子2号店で購入しました。

 

PIC070050.jpg これで、PICkitをぐらぐらと不安定な状態で使用しなくてもすみます。


PIC070060.jpgプログラムの変更
 デバイスが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 ; 擬似命令 プログラムの終了を示す


 次回、このポートの変更を行ったプログラムをアセンブルしてみます。各ポートはディジタル・ポートとしての機能をもっていますのでこれでよいと思うのですが、本当にこれでよいのか次に試してみます。

<神崎康宏>


カテゴリ:

トラックバック

このエントリーのトラックバックURL:
http://www.eleki-jack.com/mt/mt-tb.cgi/2829

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

カテゴリ

会社案内
情報セキュリティおよび個人情報の取り扱いについて

コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。
コメントはそれぞれ投稿した人のものです。

Powered by
Movable Type 4.1