X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
编程基础
[原创] 单片机C语言的十六进制(HEX)转BCD码程序
tiankai001
2018-3-23 11:05
楼主
此内容由EEWORLD论坛网友
tiankai001
原创,如需转载或用于商业用途需征得作者同意并注明出处
说明:本程序分别列举了单字节HEX码转换为BCD型数据;2字节HEX码转换为BCD型数据;4字节HEX码转换为BCD型数据的的方法。
void HEXtoBCDData(void)
{
unsigned char ucHEXdata[10] = {0},ucBCDdata[10] = {0};
unsigned int uiHEXdata = 0;
unsigned long int ulHEXdata = 0;
//[color=#00ff][size=4]单字节HEX码转换为BCD型数据[/size][/color]
ucHEXdata[0] = 0x63; //十进制为99
ucBCDdata[0] = (ucHEXdata[0]/10)*0x10 + (ucHEXdata[0]%10);
//ucBCDdata[0]=99
ucHEXdata[0] = 0xf5; //十进制为245
ucHEXdata[1] = ucHEXdata[0]/100;
ucHEXdata[2] = ucHEXdata[0]%100;
ucBCDdata[0] = ucHEXdata[1];
ucBCDdata[1] = (ucHEXdata[2]/10)*0x10 + (ucHEXdata[2]%10);
//ucBCDdata[1]=2,ucBCDdata[0]=45
//[color=#00ff][size=4]2字节HEX码转换为BCD型数据[/size][/color]
uiHEXdata = 0xfff5; //十进制为65525
ucHEXdata[1] = uiHEXdata%100;
ucBCDdata[0] = (ucHEXdata[1]/10)*0x10 + (ucHEXdata[1]%10);
uiHEXdata = uiHEXdata/100;
ucHEXdata[2] = uiHEXdata%100;
ucBCDdata[1] = (ucHEXdata[2]/10)*0x10 + (ucHEXdata[2]%10);
uiHEXdata = uiHEXdata/100;
ucHEXdata[3] = uiHEXdata%100;
ucBCDdata[2] = (ucHEXdata[3]/10)*0x10 + (ucHEXdata[3]%10);
//ucBCDdata[2]=6,ucBCDdata[1]=55,ucBCDdata[0]=25
//[color=#00ff][size=4]4字节HEX码转换为BCD型数据[/size][/color]
ulHEXdata = 0xfffffff5; //十进制为4294967285
ucHEXdata[1] = ulHEXdata%100;
ucBCDdata[0] = (ucHEXdata[1]/10)*0x10 + (ucHEXdata[1]%10);
ulHEXdata = ulHEXdata/100;
ucHEXdata[2] = ulHEXdata%100;
ucBCDdata[1] = (ucHEXdata[2]/10)*0x10 + (ucHEXdata[2]%10);
ulHEXdata = ulHEXdata/100;
ucHEXdata[3] = ulHEXdata%100;
ucBCDdata[2] = (ucHEXdata[3]/10)*0x10 + (ucHEXdata[3]%10);
ulHEXdata = ulHEXdata/100;
ucHEXdata[4] = ulHEXdata%100;
ucBCDdata[3] = (ucHEXdata[4]/10)*0x10 + (ucHEXdata[4]%10);
ulHEXdata = ulHEXdata/100;
ucHEXdata[5] = ulHEXdata%100;
ucBCDdata[4] = (ucHEXdata[5]/10)*0x10 + (ucHEXdata[5]%10);
//ucBCDdata[4]=42,ucBCDdata[3]=94,
//ucBCDdata[2]=96,ucBCDdata[1]=72,ucBCDdata[0]=85
ulHEXdata = 0xfffffff4; //十进制为42 94 96 72 84
for(int i=0;i<5;i++)
{
ucHEXdata[i]=ulHEXdata%100;
ulHEXdata=ulHEXdata/100;
ucBCDdata[i]=(ucHEXdata[i]/10)*0x10+ucHEXdata[i]%10;
}
//ucBCDdata[4]=42,ucBCDdata[3]=94,
//ucBCDdata[2]=96,ucBCDdata[1]=72,ucBCDdata[0]=84
}
本帖最后由 tiankai001 于 2018-3-23 11:08 编辑
点赞
回复评论 (3)
沙发
star_66666
兄弟,不错啊,分享些有用的小程序片段,多谢了,已经拷贝,留着备用了
点赞
2018-3-23 13:01
板凳
tiankai001
引用:
star_66666 发表于 2018-3-23 13:01
兄弟,不错啊,分享些有用的小程序片段,多谢了,已经拷贝,留着备用了
感谢支持,回头我再分享一些
点赞
2018-3-23 14:05
4楼
star_66666
期待啊
点赞
2018-3-23 14:16
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
EETALK——master 60连胜职业棋手,人工智能还将带来什么
如何使弹出菜单的菜单项变灰
C语言函数调用的一般形式
想请教下,有谁真正买了鼎阳SHS800那款非隔离手持示波表的,到底用起来怎么样?
几百米无线通信用什么方式比较好?
今天开车的时候突发奇想,做个手机APP带行车记录仪如何?
高频电路
语音、红外定位摄像头跟踪云台方案
STM32的ADC保护
用过AD2S80的朋友请进
proteus自学资料
为什么单片机系统中上拉电阻非常有必要?
MCD2 常见问题解答
求响应时间快的继电器型号 或者替代品
如何使用PC VC访问WINCE中的文件?
EEWORLD大学堂----机器学习深入研究
MEMS传感器加速进入消费类应用领域
高频情况下电压有效值的测量
Thonny 4.0 版发布
MSP430与小数运算
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复