1.幂函数
//m^n函数
u32 mypow(u8 m,u8 n)
{
u32 result=1;
while(n--)result*=m;
return result;
}
2.同事写的浮点转字符串函数
/************************************************************************/
/* 输入参数d 输入float数据
dlen 输入的数据的小数点位数
buf 转换后输出的数组地址
clen buf的大小
调用方式 my_dtoa(12.56, 2,buf , sizeof(buf)); */
/************************************************************************/
int my_dtoa(double d,char dlen,char* buf,char clen)
{
#define ARRLEN 10
char m_arr[]={'0','1','2','3','4','5','6','7','8','9'};
char tmpArr[ARRLEN]={0};
char* ptmp=tmpArr;
int nZS=0;
double dXS=0;
double dtmp=d;
char i=0;
if (d<0)
{
dtmp=-d;
clen--;
}
nZS=(int)dtmp;
dXS=dtmp-nZS;
if (nZS==0)
{
*ptmp++=0;
++i;
}
else
{
while(nZS!=0)
{
if (++i>clen)
{
return -1;
}
*ptmp++=nZS%10;
nZS/=10;
}
}
if (clen<=i+dlen+1)
{
return -1;
}
ptmp=buf;
if (d<0)
{
*ptmp++='-';
}
while(i--)
{
*ptmp++=m_arr[tmpArr[i]];
}
if (dlen==0)
{
return 0;
}
*ptmp++='.';
for (i=0;i<dlen;i++)
{
dXS*=10;
*ptmp++=m_arr[(int)dXS];
dXS-=(int)dXS;
}
return 0;
#undef ARRLEN
}
3:按键扫描函数
//键盘扫描程序
U8 Key_Scan(void)
{
static U8 key_up=1;
U8 KeyTemp;
if (key_up&&(P0&0xff)!=0xff)
{
key_up=0;
delay_ms(10);
KeyTemp=P0&0xff;
KeyTemp^=0xff;
return KeyTemp;
}
else if((P0&0xff)==0xff)
{
key_up=1;
return 0;
}
else return 0;
}
待续......