单片机中如何将BCD码拆开_单片机中 BCD码转换
unsigned int ui;//(16位无符号二进制数)
unsigned char uc[5];//(BCD码表示的5位十进制数)
uc[4]=(ui/10000)%10;
uc[3]=(ui/1000)%10;
uc[2]=(ui/100)%10;
uc[1]=(ui/10)%10;
uc[0]=ui%10;
_____________________________________________________________________
今天有人在问我BCD码如何转换成10进制码的问题
其实很简单
BCD 的表示法是 用4个二进制位来表示 一个十进制位,也就是一个字节能够表示2个十进制数位,这是一种压缩的十进制表示方式,应用很广,最常见的就是CMOS里的时间存放格
式就是BCD码格式,更具体的表示方法大家可以去百度一下就知道了不过其实知道我上面说的就差不多了。
明白了BCD是怎么表示后转换也就容易了,低4位和高4位分别转换然后合并起来就是了!
如15用BCD码表示为 0001 0101
低四位的值就是实现十进制数的低四,高4位就是高四位的值,这样我们有很高效的转换方法
低四位+高四位×10 (上面是2位十进制数的)
用C语言表达一下可能更能明白我上面说的意思
#include <stdio.h>
int main(void)
{
/** 15用BCD码表示为 0001 0101 **/
int bcd = 0x15;
int dec;
dec = (bcd & 15) + ((bcd>>4) * 10);
printf("%d\n",dec);
return 0;
}
所以实际转换可以定义成一个宏
#define BCDTODEC(bcd)
如
#include <stdio.h>
#define BCDTODEC(bcd) ((bcd) = ((bcd) & 15) + ((bcd)>>4) * 10)
int main(void)
{
/** 15用BCD码表示为 0001 0101 **/
int bcd = 0x15;
BCDTODEC(bcd);
printf("%d\n",bcd);
return 0;
}
______________________________________________________________________________________
#define BCD2BIN(val) (((val) & 0x0f) + ((val)>>4)*10)
#define BIN2BCD(val) ((((val)/10)<<4) + (val)%10)
//函数名:ZH_Data();
//返回参数:有.返回为十进制或十进制BCD码.
//输入参数:State=0 输入为十进制BCD码 输出为十进制.
//输入参数:State=1 输入为十进制,输出为十进制BCD码.
//设计人:wang1jin.
//设计版本:V1.0.
//
uint8 ZH_Data(bit State,uint8 Value)
{
if(State==0) //判断工作模式.
{
Value=(Value/16)*10+(Value%16); //把8421BCD码转为十进制
return Value; //返回;
}
else //把十进制转为8421BCD码;
{
Value=(Value/10)*16+Value%10; //把十进制转为8421BCD码.
return Value; //返回;
}
}
______________________________________________________________________________________
//16进制转bcd码
unchar HEXBCD2(unchar bcd_data) //hex转为bcd子程序
{
unchar temp;
temp=(b
单片机中如何将BCD码拆开_单片机中 BCD码转换相关推荐
- 单片机中如何将BCD码拆开_单片机二进制BCD码转换实验程序流程图
二进制BCD码转换 一.实验目的 1.掌握简单的数值转换算法 2.基本了解数值的各种表达方法 二.实验说明 单片机中的数值有各种表达方式,这是单片机的基础.掌握各种数制之间的转换是一种基本功.我们将给 ...
- 单片机中如何将BCD码拆开_单片机bcd码转换
信息与通信工程学院实验报告 (软件仿真性实验, 2017/2018 ( 2 ) ) 课程名称:单片机原理与应用 实验题目: BCD 码转换 指导教师: 一.实验目的和任务 1 .掌握 Keil μ V ...
- 给单片机焼写程序需要什么东西_单片机怎么烧写程序
1.单片机怎么烧写程序 STC系列单片机为例:首先,需要安装keil软件和STC_ISP程序下载软件.先对你想要实现对单片机的功能用keil编程,然后用STC_ISP下载软件下载到单片机上,最后打开给 ...
- socket用起始码分割_常用条码Code128码及EAN13码的介绍
在条码打印软件中,设计条码标签时经常用到的码制是Code128码和EAN13码.因为这两种码制比较贴近我们的生活.比如:我们去超市购物,商品上贴的条码标签都是EAN13码,因为EAN13码多用于零售产 ...
- 单片机交通灯的电路图以及代码_单片机晶振“问答篇”(下),17大单片机晶振问题全解答...
晶振,在现实生活中随处可见,因此人们对晶振的关注度逐渐提高.而对于单片机使用者而言,或多或少存在一些有关单片机晶振的疑问.为此,本文为大家带来17个网友提出的单片机晶振问题,并一一给出正确解答,以帮助 ...
- 地壳中元素含量排名记忆口诀_地壳中元素含量_地壳中元素含量口诀
地壳中元素含量 下面有关硅的叙述中,正确的是A.光导纤维是以硅酸盐为主要原料制成的B.硅是构成矿物和岩石的主要元素,硅在地壳中的含量在所有的元素 问题补充:试题难度:困难试题类型:选择题试题内容:下面 ...
- js判断数组中重复元素并找出_面试中常遇见的数组去重
导读 JS数组去重是面试中并不少见的问题,听起来很简单,当你兴高采烈地回答了你的方法之后,你以为这道题就结束了吗?No,一般来说,面试官会继续问你"除了你刚刚说的方法,还有其他更好的方法吗? ...
- java中如何限制输入非空_项目中的参数限制、非空、以及集合中的验证,你真的会做吗(Java)...
背景: 在项目管理中,我们通常要对一个个参数做验证, 前端校验,后端加校验,这里为了保证校验的一致性,我们需要将我们的校验写的比较高效率一点,不至于满篇都是is null的进行参数验证,为了成为一个成 ...
- 找出一个字符串中出现次数最多的字_海量数据中找出前k大数(topk问题)
在海量数据中找出出现频率最好的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题. 针对top K类问题,通常比较好的方案是分治+Trie树/hash+小顶堆(就是上面提到 ...
最新文章
- Cocos 发射和监听事件 事件派送(TypeScript)
- boost::timer::auto_cpu_timer相关的测试程序
- Linux进程的概念笔记
- ssl初一组周六模拟赛【2018.5.19】
- python自动寻路模板_Python实现的简单模板引擎功能示例
- 【ES6(2015)】Promise
- 一个小白的转行Python的经历!
- 如何快速入手 Shell 脚本编程
- 利用Word2010在博客园发布文章入门
- SqlTransaction事务和Response.Redirect
- 2018最新麻瓜编程实用主义学Python课程
- 斐讯K2破解任意校园网教程
- python微信投票该用户被锁定、恢复时间_微信登录多久恢复正常
- Xray工具~(Web自动化漏洞检测)
- 干净的国内系统镜像源
- 如何拆宏碁(acer)笔记本--个人动手更换风扇、清理灰尘
- log4j2 概述、配置详情、日志八种输出级别讲解
- 复习计算机专业知识心得体会,2018考研经验:清计算机专业研友心得体会.doc
- 【C++】C++顺序栈实现的计算器
- 对淘宝秒杀程序的实践【2022.9】