第65节:大数据的除法运算
扫描二维码
随时随地手机看文章
从业近十年!手把手教你单片机程序框架 第65讲
开场白:
直接用C语言的“/”运算符进行除法运算时,“被除数”,“ 除数”,“商”,这三个数据的最大范围是unsigned long 类型,也就是数据最大范围是4个字节,十进制的范围是0至4294967295。一旦超过了这个范围,则运算会出错。因此,当进行大数据除法运算时,我们要额外编程序,实现大数据的算法。其实这种算法并不难,就是我们在小学里学的四则运算算法。
我们先要弄清楚一个新的概念。不考虑小数点的情况下,数据有两种表现形式。一种是常用的变量形式,另外一种是BCD码数组形式。变量的最大范围有限,而BCD码数组的形式是无限的,正因为这个特点,所以我们可以进行大数据运算。
这一节要教大家一个知识点:
第一个:如何编写涉及到大数据除法运算的算法程序函数,同时也复习了指针的用途。
具体内容,请看源代码讲解。
(1)硬件平台:
基于朱兆祺51单片机学习板。
(2)实现功能:
波特率是:9600 。
通过电脑串口调试助手模拟上位机,往单片机发送组合BCD码的被除数和除数,单片机把组合BCD码的运算结果返回到上位机。被除数与除数的最大范围都是从0到9999,如果运算的商超过允许保存的最大位数范围或者除数为0,则返回EE EE EE报错。
往单片机发送的数据格式:EB 00 55 XX XX 0d 0a YY YY 0d 0a指令,其中EB 00 55是数据头,XX XX是被除数,是1到2个字节的组合BCD码。YY YY是除数,是1到2个字节的组合BCD码。0d 0a是固定的结束标志。
例如:
(a)9816 ÷ 8= 1227
上位机发送数据:eb 00 55 98 16 0d 0a 08 0d 0a
单片机返回:12 27
(b)9816 ÷ 0= 出错了,除数不能为0。
上位机发送数据:eb 00 55 98 16 0d 0a 00 0d 0a
单片机返回:EE EE EE
(3)源代码讲解如下:
总结陈词:
前面四个章节讲完了四则运算的大数据算法,下一节讲单片机的外部中断功能。外部中断是单片机非常重要的内部资源,应用很广,它是单片机的高速开关感应器输入接口,它可以检测脉冲输入,可以接收红外遥控器的输入信号,可以检测高速运转的车轮或者电机圆周运动的反馈信号,可以检测输液器里瞬间即逝的水滴信号,可以接收模拟串口的数据信息,等等。单片机外部中断的有什么特点?欲知详情,请听下回分解----单片机外部中断的基础。