// hexbcd.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
/*
int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}
*/
//#i nclude <reg51.h>
unsigned char bcdData[3];
unsigned int ihexs;
unsigned char disp_buffer[5];
#define unchar unsigned char
//extern void hex_bcd(unsigned int iHex); // 声明外部函数
void hextobcd(unsigned int hexs,unsigned char j);
//16进制转bcd码
unchar HEXBCD2(unchar bcd_data) //hex转为bcd子程序
{
unchar temp;
temp=(bcd_data/16*10+bcd_data%16);
return temp;
}
unchar BCD2HEX(unchar hex_data) //BCD转为HEX子程序
{
unchar temp;
temp=(hex_data/10*16+hex_data%10);
return temp;
}
void main(void){
unchar hex_data[7]={20,13,11,22,10,20,30};//0x14 一个两位十进制,刚好可用两个8421BCD(4位)一个字节来表示,相当于压缩一半,从字节量来说
unchar bcd_data;
for(int i=0;i<7;i++)
{
bcd_data=BCD2HEX(hex_data[i]);
printf("%02x ",bcd_data);
}
//printf("%02x\n",bcd_data);
/*
return;
ihexs = 59999;
// hex_bcd(ihexs);
hextobcd(ihexs,5);
for(int i=0;i<5;i++)
printf("disp:%02x\n",disp_buffer[4-i]);
// while(1);
*/
}
/***************************
hex to bcd 转换程序
***************************/
void hextobcd(unsigned int hexs,unsigned char j) {
unsigned int va;
unsigned char i;
va = 10000; //最大数级万位
for(i=j-1;i;i--)
{
disp_buffer[i] = 0; //目标数组清零
while ((hexs>=va)&&(va>9))
{
hexs -= va; //减除数
disp_buffer[i]++; //商位加1
}
va /= 10; //除数除10,指向低一位
}
disp_buffer[0]=hexs; //最后个位数
}
//
#include "stdafx.h"
/*
int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}
*/
//#i nclude <reg51.h>
unsigned char bcdData[3];
unsigned int ihexs;
unsigned char disp_buffer[5];
#define unchar unsigned char
//extern void hex_bcd(unsigned int iHex); // 声明外部函数
void hextobcd(unsigned int hexs,unsigned char j);
//16进制转bcd码
unchar HEXBCD2(unchar bcd_data) //hex转为bcd子程序
{
unchar temp;
temp=(bcd_data/16*10+bcd_data%16);
return temp;
}
unchar BCD2HEX(unchar hex_data) //BCD转为HEX子程序
{
unchar temp;
temp=(hex_data/10*16+hex_data%10);
return temp;
}
void main(void){
unchar hex_data[7]={20,13,11,22,10,20,30};//0x14 一个两位十进制,刚好可用两个8421BCD(4位)一个字节来表示,相当于压缩一半,从字节量来说
unchar bcd_data;
for(int i=0;i<7;i++)
{
bcd_data=BCD2HEX(hex_data[i]);
printf("%02x ",bcd_data);
}
//printf("%02x\n",bcd_data);
/*
return;
ihexs = 59999;
// hex_bcd(ihexs);
hextobcd(ihexs,5);
for(int i=0;i<5;i++)
printf("disp:%02x\n",disp_buffer[4-i]);
// while(1);
*/
}
/***************************
hex to bcd 转换程序
***************************/
void hextobcd(unsigned int hexs,unsigned char j) {
unsigned int va;
unsigned char i;
va = 10000; //最大数级万位
for(i=j-1;i;i--)
{
disp_buffer[i] = 0; //目标数组清零
while ((hexs>=va)&&(va>9))
{
hexs -= va; //减除数
disp_buffer[i]++; //商位加1
}
va /= 10; //除数除10,指向低一位
}
disp_buffer[0]=hexs; //最后个位数
}