ご助力ください。

以下のような関数内でfloat型の変数の中身を文字列として使用したいのですが
PICのプログラム領域不足のためsprintfを使用することが出来ません。
何か代用になる関数等は無いでしょうか?
cMsgの中に1023を100%とした100分率の値を格納したいのです。
もしスレチでしたら誘導していただけるとありがたいです。

unsigned int giDuty;

void dispDuty(void){

float fDuty = 0;
unsigned char cMsg[16];

memset(cMsg, 0x00, sizeof(cMsg));
fDuty = giDuty / 1023 * 100;

sprintf(cMsg, "Heater:%3.1f %%\n", fDuty);  ←これが大きすぎてコンパイルできない。

sb1602_cmd(0xC0); // カーソルを先頭に移動
sb1602_str(cMsg); // LCD表示
}

開発言語:C
コンパイラ:HITEC C
マイコン:PIC12F683