⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hextodec.c

📁 TI5509A-DSP-192*64液晶显示驱动
💻 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 + -