📄 num.c
字号:
/*
;************************************************************************************************************
;* 北京达盛科技有限公司
;* 研 发 部
;*
;* http://www.techsine.com
;*
;*--------------------------------------------- 文件信息 ----------------------------------------------------
;*
;* 文件名称 : Glib.h
;* 文件功能 : 该文件为GUI的图形显示程序API。
;* 补充说明 :
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : ARM开发小组
;* 修改日期 : 2004/00/00
;* 版本声明 : V1.0.1
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 : ARM开发小组
;* 创建日期 : 2004/07/07
;* 版本声明 : v1.0.0
;*-----------------------------------------------------------------------------------------------------------
*************************************************************************************************************
*/
#include "Glib.h"
/*
*************************************************************************************************************
- 函数名称 : void GUI_DispDecAt(I32 v, I16P x, I16P y, U8 Len)
- 函数说明 : 显示十进制函数
- 输入参数 : x,y
- 输出参数 : 无
*************************************************************************************************************
*/
void GUI_DispDecAt(I32 v, I16P x, I16P y, U8 Len) {
char ac[12];
char* s = ac;
GUI_AddDecShift(v, Len, 0, &s);
Disp_String(ac, x, y);
}
const U32 GUI_Pow10[10] = {
1 , 10, 100, 1000, 10000,
100000, 1000000, 10000000, 100000000, 1000000000
};
/*
*************************************************************************************************************
- 函数名称 : void GUI_AddDecShift(I32 v, U8 Len, U8 Shift, char**ps)
- 函数说明 : 填加十进制函数
- 输入参数 : x,y
- 输出参数 : 无
*************************************************************************************************************
*/
void GUI_AddDecShift(I32 v, U8 Len, U8 Shift, char**ps) {
char c,GUI_DecChar;
long d;
GUI_DecChar = '.';
if (Shift) Len--;
if ((U32)v >= GUI_Pow10[Len])
v = GUI_Pow10[Len]-1;
while (Len)
{
if (Len--==Shift)
*(*ps)++ = GUI_DecChar;
d = GUI_Pow10[Len];
c = (char) (v/d);
v -= c*d;
*(*ps)++ = c+'0';
}
**ps = 0;
}
/*
*************************************************************************************************************
- 函数名称 : void GUI_DispBinAt(U32 v, I16P x, I16P y, U8 Len)
- 函数说明 : 显示2进制函数
- 输入参数 : x,y
- 输出参数 : 无
*************************************************************************************************************
*/
void GUI_DispBinAt(U32 v, I16P x, I16P y, U8 Len) {
char ac[33];
char* s = ac;
GUI_AddBin(v, Len, &s);
Disp_String(ac, x, y);
}
void GUI_AddBin(U32 v, U8 Len, char**ps)
{
char *s = *ps;
(*ps) += Len;
**ps = '\0'; /* Make sure string is 0-terminated */
while(Len--) {
*(s+Len) = (char)('0'+ (v&1));
v>>=1;
}
}
/*
*************************************************************************************************************
- 函数名称 : void GUI_DispHexAt(U32 v, I16P x, I16P y, U8 Len)
- 函数说明 : 显示16进制函数
- 输入参数 : x,y
- 输出参数 : 无
*************************************************************************************************************
*/
void GUI_DispHexAt(U32 v, I16P x, I16P y, U8 Len) {
char ac[9];
char* s = ac;
GUI_AddHex(v, Len, &s);
Disp_String(ac, x, y);
}
static const char acHex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
/*
*************************************************************************************************************
- 函数名称 : void GUI_AddHex(U32 v, U8 Len, char**ps)
- 函数说明 : 填加16进制函数
- 输入参数 : x,y
- 输出参数 : 无
*************************************************************************************************************
*/
void GUI_AddHex(U32 v, U8 Len, char**ps) {
char *s = *ps;
if (Len > 8)
return;
(*ps) += Len;
**ps = '\0'; /* Make sure string is 0-terminated */
while(Len--) {
*(s+Len) = acHex[v&15];
v>>=4;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -