?? 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 + -