1.プログラミング一般知識

 8ビット系PIC16Fシリーズはご承知のように、わすか35種の命令語で構成され、非常にシンプルで覚えやすい構造になっていますが、例えば、よくあるAファイルからBファイルにデータを移したい場合でも直接処理する一般的なMOVE命令すら用意されてなく、MOVF命令でいったんAファイルのデータをWレジスタに取り込み、MOVWF命令でBファイルに書き込む2つの命令の組み合わせで実現する必要があります。

 このように、RISCプロセッサは命令語の少ない分を命令語の組み合わせでカバーする必要があり、その分プログラミング量が多くなりますが、高速で効率的に処理できる特徴を持っています。  以下に一般的なプログラミングの知識と16F88の注意点を列記します。

 

(1)まず、コーディングを始める前にマクロ的に全体のプログラムの流れを考え、何処で、何の処理をするか決めます。(一般

慣れるまでは、頭の中で考えた流れを流れ図に書き出して、複雑な処理を単純化する作業を繰り返します。 この作業は重要であり、思いつきでプログラミングを始めると、どこかで行詰まり何度も書き直すことになります。

 

(2)  プログラム構造を決める。(一般

次に(1)で考えた流れに従ってプログラム構造を決め、コメント行(;)を利用して、処理ブロックの名前を入力します。(詳細は別項で)

 

(3)  コーディングを始める。

(2)で入力した処理ブロックの名前の下の行から順次コーディングを行う。

 

(4)  同じ処理の繰り返しはサブルーチン化する。(88

別の場所で2回以上同じ処理をする場合はサブルーチンを利用して単純化する。   但し、サブルーチンの中から別のサブルーチンをコールする場合は8レベル(8回)以内とする。 割込みを利用する場合を考慮して4レベル以下が無難です。

8レベルを超えると、スタック領域がオーバーフローし暴走します。

実績のあるサブルーチンは自分用のライブラリとして、保存し活用することで、楽に確実に新しいプログラムが作成できます。

 

(5)  外部入力などで迅速な処理が要求される場合は「割込み」を利用する。(一般

高速で複雑な処理を要求される場合には「割込み」が必須になりますが、割込みを利用する時のルールを把握すれば、比較的簡単に利用できます。

「割込み」はコンピュータの最大の特徴ですから、大いに利用して楽に複雑な処理を実現してください。(詳細は別項で)

 

  (6)「割込み」後の処理は簡潔に行う。(一般

割込み後の処理は迅速に簡潔に処理し、通常の処理に戻す。  割込み後の処理は割込み禁止で行いますので、早く通常処理に戻さないと次の割込みが受け付けられない。(詳細は別項で)

 

(7)  プログラミング量(2Kワード以上)が多い場合はページ切替えが必要になります。(88

PIC16F88の場合は4Kワードのプログラム領域を持っていますが、2Kワード以上使用するプログラムの場合は適切にページ切替えを行わないと、暴走の要因になります。

 

(8)  汎用レジスタへのアクセスはバンク切替えが必要となります。(88

PIC16F88の場合は4つのバンクがあり、事前に対象のバンクに切り替えておかないと、目的のレジスタをアクセスできません。