这个问题似乎很简单,keilC中也用sprintf()函数嘛,用就行了。但对于“寸土寸金”的单片机来说,问题可没那么简单。
看看我代码中这句弃之不用的代码吧:
//sprintf(sFileLen,"%d",fileLen*128);print(sFileLen); //使用这个库函数,体积一下增加2563. 我的程序空间马上溢出不够用了。 OMG! C51库函数,伤不起啊
能自己写就自己写,尽量不用库函数吧。谱太大,用不起啊。下面这个函数就是类似sprintf()的作用。为了节省几个字节,结果就直接发出来了,不必存储到uchar[]中了。
// 向串口发送一个整数,支持0-65535,如 uint=8189,发送的是'8' '1' '8' '9'
void serial_put_uint(unsigned int number)
{
unsigned int i;
unsigned int nTmp;
//感觉这写法怪怪的吗?干嘛不for(i=1;i<5;i++) 因为这样不需要使用库函数pow()
for(i=10000;i>=1;i=i/10)
{
nTmp = number/i;
if(nTmp >=1 ) serial_put_char((unsigned char)(nTmp%10 + 0x30));
}
}