📄 posutils.c
字号:
#include "posutils.h"
/***************************************************************************
SUPPOSE dsp CONTAINS THE ASSCII ARRAY "12345F" AND WE EXECUTE THIS FUNCTION
THEN THE ARRAY AT hex WILL CONTAIN 12H,34H, 5FH
****************************************************************************
void DSP_2_HEX(unsigned char *dsp, unsigned char *hex, int count)
{
int i;
for (i = 0; i < count; i++)
{
hex[i] = ((dsp[i << 1] <= 0x39) ? dsp[i << 1] - 0x30
: dsp[i << 1] - 0x41 + 10);
hex[i] = hex[i] << 4;
hex[i] += ((dsp[(i << 1) + 1] <= 0x39) ? dsp[(i << 1) + 1] - 0x30
: dsp[(i << 1) + 1] - 0x41 + 10);
}
}
/***************************************************************************
SUPPOSE HEX CONTAINS THREE BYTES:12H 34H, 5FH AND WE EXECUTE THIS FUNCTION
THEN dsp WILL CONTAIN ASCII BYTES "12345F"
**************************************************************************
void HEX_2_DSP(unsigned char *hex, unsigned char *dsp, int count)
{
int i;
unsigned char ch;
for(i = 0; i < count; i++)
{
ch = (hex[i] & 0xf0) >> 4;
dsp[i << 1] = (ch > 9) ? ch + 0x41 - 10 : ch + 0x30;
ch = hex[i] & 0xf;
dsp[(i << 1) + 1] = (ch > 9) ? ch + 0x41 - 10 : ch + 0x30;
}
}
/*将两字节bcd码转换成hex码*/
unsigned int bcd2hex(unsigned char *buf)
{
unsigned int temp;
temp=(buf[0]>>4)*1000 + (buf[0]&0x0f)*100 + (buf[1]>>4)*10 + (buf[1]&0x0f);
return(temp);
}
/***********************************************/
/* 将整形数字转换成两字节bcd码放入 buf*/
void hex2bcd(int hexnum, unsigned char *buf)
{
// int data th, ha, te, on;
for(buf[0]=0; hexnum >= 1000; buf[0] += 0x10, hexnum -= 1000);
for( ; hexnum >= 100; buf[0] += 0x01, hexnum -= 100);
for(buf[1]=0; hexnum >= 10; buf[1] += 0x10, hexnum -= 10);
buf[1] += hexnum;
/*
th = hexnum / 1000;
on = hexnum % 1000;
ha = on / 100;
on = on % 100;
te = on / 10;
on = on % 10;
buf[0] = th << 4 + ha;
buf[1] = te << 4 + on;
*/
}
/**********************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -