PIC16F1939は、PIC16ファミリーの一員ですが、その内実はPIC18を見ているかのような感覚を覚えます。PIC16F1939の各種の拡張は、PIC18が発表された際のそれに酷似しており、PIC16とPIC18にマーケティング的な機能差は残されているものの、決定的な差異はなくなりつつあるように感じます。
PIC16F1939を搭載したPICSYS16-CLCD
PIC16F1939の従来のPIC16からの拡張は色々と示されていますが、C言語でのプログラミングを考えると、以下の2点の拡張が極めて重要だと思います。
C言語でプログラムをモジュラ化して作成しようとすると、従来はスタックが浅かったため、関数の呼び出し深さに神経質になる必要がありました。割り込みを利用しないプログラムでは事実上気にする必要もなかったのですが、時間管理が必要だったり外部要因に迅速に反応するために割り込みを利用しようとすると、スタックを通常のコードと割り込み処理用のコードで共用して利用するため、簡単に溢れることとなるため十分な注意が必要でした。
また、配列を利用してデータ管理をする際には、RAMのリニアアドレッシング機能も非常に重要です。
これらの拡張でC言語によるプログラミングへの制約は事実上解消されたため、C言語で割り込み機能も利用して構築されているPICSYS16も安心して利用できるようになりました。PICSYS16を利用したPIC16F1939のプログラミングはPICSYS16-CLCDで楽しむことができます。
PIC16F1939はこれらの拡張により、やっとC言語でのプログラミングに対応できたことになります。PIC16の次世代MCUとしてPIC18が発表された時も、スタックレベルや命令の拡張はC言語などの高級言語での開発に対応することがその目的として示されていました。
その他の特徴を以下に示します。
PIC16F1939と同様な特徴を持つ代表的なPIC16をピン数ごとにまとめてみました。