您现在的位置: 主页 > MCU > 单片机学习 > 第61节:组合BCD码,非组合BCD码,以及数值三者之间的相互转换和
本文所属标签:
为本文创立个标签吧:

第61节:组合BCD码,非组合BCD码,以及数值三者之间的相互转换和

来源: 网络用户发布,如有版权联系网管删除 2018-08-31 

[导读]从业近十年!手把手教你单片机程序框架 第61讲开场白:本来这一节打算讲大数据的加法运算的,但是考虑大数据运算的基础是非组合BCD码,所以多增加一节讲BCD码的内容。计算机中的BCD码,经常使用的有两种格式,即组合B

从业近十年!手把手教你单片机程序框架 第61讲

开场白:

本来这一节打算讲大数据的加法运算的,但是考虑大数据运算的基础是非组合BCD码,所以多增加一节讲BCD码的内容。

计算机中的BCD码,经常使用的有两种格式,即组合BCD码,非组合BCD码。

组合BCD码,是将两位十进制数,存放在一个字节中,例如:十进制数51的存放格式是0101 0001。

非组合BCD码,是将一个字节的低四位编码表示十进制数的一位,而高4位都为0。例如:十进制数51的占用了两个字节的空间,存放格式为:00000101 00000001。

这一节要教大家两个知识点:

第一个:如何编写组合BCD码,非组合BCD码,以及数值三者之间的相互转换函数。

第二个:通过转换函数的编写,重温前面几节所讲到的指针用法。

具体内容,请看源代码讲解。

(1)硬件平台:

基于朱兆祺51单片机学习板。

(2)实现功能:

波特率是:9600 。

通过电脑串口调试助手模拟上位机,往单片机发送EB 00 55 XX YY YY … YY YY 指令,其中EB 00 55是数据头,XX 是指令类型。YY是具体的数据。

指令类型01代表发送的是数值,需要转成组合BCD码和非组合BCD码,并且返回上位机显示。

指令类型02代表发送的是组合BCD码,需要转成数值和非组合BCD码,并且返回上位机显示。

指令类型03代表发送的是非组合BCD码,需要转成数值和组合BCD码,并且返回上位机显示。

返回上位机的数据中,中间3个数据EE EE EE是分割线,为了方便观察,没实际意义。

例如:十进制的数据52013140,它的十六进制数据是03 19 A8 54。

(a)上位机发送数据:eb 00 55 01 03 19 a8 54

单片机返回:52 01 31 40 EE EE EE 05 02 00 01 03 01 04 00

(b)上位机发送组合BCD码:eb 00 55 02 52 01 31 40

单片机返回:03 19 A8 54 EE EE EE 05 02 00 01 03 01 04 00

(c)发送非组合BCD码:eb 00 55 03 05 02 00 01 03 01 04 00

单片机返回:03 19 A8 54 EE EE EE 52 01 31 40

(3)源代码讲解如下:

第六十一节源代码讲解.rar
文件类型: .rar 47bc1882c27b0d10ff3faf808a031020.rar (3.60 KB)

总结陈词:

有了这一节非组合BCD的基础知识,下一节就开始讲大数据的算法程序。这些算法程序经常要用在计算器,工控,以及高精度的仪器仪表等领域。C语言的语法中不是已经提供了+,-,*,/这些运算符号吗?为什么还要专门写算法程序?因为那些运算符只能进行简单的运算,一旦数据超过了unsigned long(4个字节)的范围就会出错。而这种大数据算法的程序是什么样的?欲知详情,请听下回分解----大数据的加法运算。



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机学习 > 第61节:组合BCD码,非组合BCD码,以及数值三者之间的相互转换和
 

"第61节:组合BCD码,非组合BCD码,以及数值三者之间的相互转换和"的相关文章

网站地图

围观()