有用的小程序的总结

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;
}

待续......

原文地址:https://www.cnblogs.com/longbiao831/p/4556286.html