📄 hextodec.c
字号:
/*****************************************************************************
Filename: native.c
Version: 0.01
Description: calculate measure value
Returns: result
Revision History:
EQH-01, 屈宵军 09/25/04, - Original release
*****************************************************************************/
//16进制<->10进制互换程序
//#include<stdio.h>
#include <tms320.h>
unsigned char d[10]; //用于显示的10位显示缓存
//========================================================
//16进制to10进制输出子程序:显示数据,起始位,结束位,有无小数点
//========================================================
void HextoDec(unsigned long dd,ushort s,ushort e,ushort dip)
{
unsigned long div1;
ushort tm[8],i,j;
div1=10000000;
for (i=0;i<8;i++)
{
tm[i]=dd/div1;
dd%=div1;
div1/=10;
}
/* for (i=0;i<6;i++)
{
if (tm[i]!=0) break;
tm[i]='\0';
}*/
tm[5]|=dip; //小数点控制,请看“串行LED数码管显示驱动程序”
j=7;
for (i=s;i<e;i++)
{
d[i]=tm[j];
j--;
}
}
/******************************************************************************/
void Long_to_String(long data,char *chars)
{
unsigned long undata;
int i,start=0,number = 0;
if(data <0)
{
chars[number++] = '-';
undata = ~data + 1;
start = 1;
}
else
{
undata =data;
}
chars[number++] = 0;
do
{
for(i = number-1;i >=start ;i--)
{
chars[i+1] = chars[i];
}
number++;
chars[start]= 0x30 + (unsigned int)(undata%10L);
undata = undata/10L;
}while(undata);
return;
}
/***********************************************************************/
void Float16_to_String(int data,unsigned qbit,unsigned disnum,char *chars)
{
unsigned long diasdata =5L;
unsigned int undata;
unsigned int undata1;
unsigned long undata2;
int i,start=0,number = 0;
for(i =1;i<disnum;i++)
{
diasdata *= 10L;
}
if(data <0)
{
chars[number++] = '-';
undata = ~data + 1;
start = 1;
}
else
{
undata = data;
}
undata1 = undata >> qbit;
chars[number++] = '.';
undata2 = 0 ;
for(i =(1<<(qbit-1)) ;i >0; i= i>>1)
{
if(undata&i) undata2 += diasdata;
diasdata = diasdata>>1;
}
for(i = 0 ; i<disnum;i++)
{
chars[number+disnum-1-i] = 0x30 + (unsigned int)(undata2%10L);
undata2 = undata2/10L;
}
number +=disnum;
chars[number++] = 0;
do
{
for(i = number-1;i >=start ;i--)
{
chars[i+1] = chars[i];
}
number++;
chars[start]= 0x30 + undata1%10;
undata1 = undata1/10;
}while(undata1);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -