PIC18F26K22によるBK1088 DSPラジオ

BK1088 のラジオはこれで何作目になるだろうか?と言っても、完成したラジオが形として存在するわけではなく、ブレッドボードの段階で、完成したとして、次のMPUに交代しているわけです。今回は何とか満足できたので、ラジオの形になるかもしれません。 ソースコードは「pockyの木工ライフ」さんの素晴らしい力作を使用させていただきました。pockyさんはMikroCProを使用されていますが、無償版だと2kbの制限があり、コンパイルが出来ませんでした。それで、ある程度使用経験のあるMPLAB XのXC8でコンパイルしてみましたが、エラーが山のように吐き出され、前途多難でしたが、MikroCはライブラリが非常に豊富で、XC8はそれらが貧弱だという違いがありました。MikroCのI2Cのライブラリーのソースを探し回りましたが、全く見つからず、公開されていないということがわかりました。結局I2CのライブラリはPIC用に作製された「ソフトウエア開発・サーバ管理のメモ帳」というページの「PIC microcontroller用I2C汎用ライブラリ」を参照させていただきました。(PIC12FとPIC16F用だということですが、PIC18Fでも問題なく動きました。ただし、PIC18F26K22の2つ使える1個目だけです。)

一度に全部を完成させるのは難しいので、まずはI2C LCDだけ表示を完成させ、その次はBK1088 だけ完成させ、と順を追っていきうまくいきました。

BK1088+P18F26K22
BK1088+P18F26K22

FM/AM/SWともちゃんと動作しました。最初ロータリーエンコーダーが動かなかったのですが、Interruptルーチンの手直しが必要でした。
pockyさんのMikroCProでのhexファイルは16kb。今回のXC8でのhexファイルは18kbですので矢張り、MikroCProのほうが最適化がされているようです。XC8も有料Versionはちゃんと最適化がされるようですが、今のところ最適化が気になるようなProgramingもできないので、無償版で制限なく使えるので暫くはこれで行こうかと思っています。
コンパイル時に排出されるメッセージの一部です。
Memory Summary:
Program space used 19FDh ( 6653) of 10000h bytes ( 10.2%)
Data space used 110h ( 272) of F38h bytes ( 7.0%)
Configuration bits used 7h ( 7) of 7h words (100.0%)
EEPROM space used 0h ( 0) of 400h bytes ( 0.0%)
ID Location space used 8h ( 8) of 8h bytes (100.0%)
Data stack space used 0h ( 0) of 8CCh bytes ( 0.0%)

ProgramスペースはPIC18F26K22のわずか10%程度、dataスペースは7%しか使っていないようです。

以下ソースコードです。6個のテキストファイルです。
const.c
i2c-lcdlib-strawberry1602b.c
i2c-lcdlib-strawberry1602b.h
i2c-lib.c
i2c-lib.h
main.c