第24节:乘法运算的5种常见格式

发布者:huanguu最新更新时间:2016-03-10 来源: eefocus关键字:乘法运算  常见格式  单片机 手机看文章 扫描二维码
随时随地手机看文章
从业十年,教你单片机入门 第24讲:

请先看以下的乘法语法格式:

“保存变量”=“被乘数1”*“乘数2”*... *“乘数N”;

含义是:右边的“被乘数”与各“乘数”相乘,并且把最终的运算结果赋值给左边的“保存变量”。注意,这里的符号“=”不是等于号的意思,而是赋值的意思。左边的“保存变量”必须是变量,不能是常量,否则编译时会报错。右边的“被乘数”和“乘数”既可以是变量,也可以是常量,也可以是“保存变量”本身自己。多说一句,何谓变量和常量?变量是可以在程序中被更改的,是被分配的一个RAM空间。常量往往是数字,或者是被分配在ROM空间的一个具体数值。下面根据右边“被乘数”与“乘数”的不同组合,列出了乘法运算的5种常见格式。

第1种:“被乘数1”是常量,“乘数2”是常量。比如:

unsigned char a;

a=15*3;

数字“15”和“3”都是常量。执行上述语句后,保存变量a变成了45。

第2种:“被乘数1”是变量,“乘数2”是常量。比如:

unsigned char b;

unsigned char x=15;

b=x*10;

x是变量,“10”是常量。由于原来x变量里面的数值是15,执行上述语句后,保存变量b变成了150。而变量x则保持不变,x还是15。

第3种:“被乘数1”是变量,“乘数2”是变量。比如:

unsigned char c;

unsigned char x=15;

unsigned char y=6;

c=x*y;

x是变量,y也是变量。由于原来x变量里面的数值是15,y变量里面的数值是6,执行上述语句后,保存变量c变成了90。而变量x和y则保持不变,x还是15,y还是6。

第4种:“被乘数1”是保存变量本身,“乘数2”是常量。比如:

unsigned char d=18;

d=d*2;

d=d*7;

d是保存变量,“2”和“7”都是常量。这类语句有一个特点,具备了自乘功能,可以更改自己本身自己的数值。比如原来保存变量d的数值是18,执行“d=d*2;”语句后,d变成了36,接着再执行完“d=d*7;”语句后,d最后变成了252。

第5种:“被乘数1”是保存变量本身,“乘数2”是变量。比如:

unsigned char e=2;

unsigned char x=15;

unsigned char y=6;

e=e*x;

e=e*y;

e是保存变量,x与y都是变量。这类语句有一个特点,具备了自乘功能,可以更改自己本身自己的数值。比如原来保存变量e的数值是2,执行“e=e*x;”语句后,e变成了30,接着再执行完“e=e*y;”语句后,e最后变成了180。

现在编写一个程序来练习上述5种格式的乘法语句,最后把程序编译后下载到坚鸿51学习板观察结果。请直接复制第十节模板程序,修改的main程序代码如下:

void main() //主程序

{

/*---C语言学习区域的开始---------------------------------------------------------------------------*/

unsigned char a; //定义一个变量a,并且分配了1个字节的RAM空间。

unsigned char b; //定义一个变量b,并且分配了1个字节的RAM空间。

unsigned char c; //定义一个变量c,并且分配了1个字节的RAM空间。

unsigned char d=18; //定义一个变量d,并且分配了1个字节的RAM空间。初始化默认为18.

unsigned char e=2; //定义一个变量e,并且分配了1个字节的RAM空间。初始化默认为2.

unsigned char x=15; //定义一个变量x,并且分配了1个字节的RAM空间。初始化默认为15.

unsigned char y=6; //定义一个变量y,并且分配了1个字节的RAM空间。初始化默认为6.

//第1种:“被乘数1”是常量,“乘数2”是常量。

a=15*3;

//第2种:“被乘数1”是变量,“乘数2”是常量。

b=x*10;

//第3种:“被乘数1”是变量,“乘数2”是变量。

c=x*y;

//第4种:“被乘数1”是保存变量本身,“乘数2”是常量。

d=d*2;

d=d*7;

//第5种:“被乘数1”是保存变量本身,“乘数2”是变量。

e=e*x;

e=e*y;

GuiWdData0=a; //把变量a这个数值放到窗口变量0里面显示

GuiWdData1=b; //把变量b这个数值放到窗口变量1里面显示

GuiWdData2=c; //把变量c这个数值放到窗口变量2里面显示

GuiWdData3=d; //把变量d这个数值放到窗口变量3里面显示

GuiWdData4=e; //把变量e这个数值放到窗口变量4里面显示

/*---C语言学习区域的结束---------------------------------------------------------------------------*/

while(1)

{

initial();

key_service();

display_service();

}

}

如何在坚鸿51学习板上观察a,b,c,d,e这5个变量?按下S1或者S5按键即可切换显示不同的窗口,从而显示不同的变量。上坚鸿51学习板观察程序执行的结果如下:

变量a为45。

变量b为150。

变量c为90。

变量d为252。

变量e为180。

下节预告:乘法连写的简写

关键字:乘法运算  常见格式  单片机 引用地址:第24节:乘法运算的5种常见格式

上一篇:第25节:连乘以及自乘运算的简写
下一篇:第23节:变量都转换成unsigned long数据类型

推荐阅读最新更新时间:2024-03-16 14:46

基于单片机和光电耦合器实现自动节能窗体系统的应用方案
引言 目前,国内外广泛使用PVC塑料窗体型材,其良好的隔热、保温、密封、隔音、节能、节木、保护环境等众多优点,使其日趋成为建筑用窗的主流材料。我国塑窗制造业的现状存在规模大、品级低、功能差、无高档、产能过剩、低水平等一系列问题,提高窗体产品质量和技术含量是塑窗业发展的主要方向。自动窗作为一种新兴技术,与电子、通信、光、IT技术组合,形成自动开启、关闭的新型窗体产品,将成为窗体产品中最具生命力的新星。自动窗控制器采用光机电一体化集成技术,集机械、电子控制、遥控、通信等技术于一体,可以开发出多种功能、多种结构和启闭方式的系列化自动控制的节能窗体系统。 自动窗控制逻辑关系复杂,并且该产品尚处于研发和试生产阶段,需要经常修改设计。如果
[单片机]
基于<font color='red'>单片机</font>和光电耦合器实现自动节能窗体系统的应用方案
51单片机做的温湿度测量仪
本人去年用51单片机做的温湿度传感器模块,有实物,有程序,供大家分享。 该1602液晶的D0~D7数据口连接单片机的P17~P10口,所以程序里的指令和数据都是逆向输入的。 程序和电路图下载: http://www.51hei.com/f/温湿度传感器+1602原理图.rar #include reg52.h #include intrins.h #include math.h #define uchar unsigned char #define uint unsigned int #define noACK 0 #define ACK 1 #define STATUS_REG_W 0x06 #define STA
[单片机]
51<font color='red'>单片机</font>做的温湿度测量仪
单片机小白学习之路(十二)---直流电机的控制
目标:直流电机的控制 1.直流电机简介 直流电机是指能将直流电能转换成机械能的旋转电机。 相关参数: 轴长:8mm 轴径:2mm 电压:1-6v 参考电流:0.35-0.4A 3v转速:17000-18000转每分钟 直流电机 2.模块电路 直流电机模块 TC1117芯片构造与TC1508一样,那就来看看TC1508的 引脚 INA, INB与INC,IND是两组输入端OUTA,OUTB与OUTC,OUTD是两组输出端 真值表 INA和INB都输入低电平时,电机是待命状态 INA高,INB低时,电机是前进,顺时针 INA低,INB高时,电机是后退,逆时针 INA和INB都输入高电平时,电机是刹车的状态,就是
[单片机]
<font color='red'>单片机</font>小白学习之路(十二)---直流电机的控制
51单片机与VB串行通信的实现
1.引言:   随着计算机系统的应用和微机网络的发展,各种控制设备之间的通信功能越来越显得重要。在设计的减振控制系统中,控制器(下位机)采用两片AT89C52单片机,分别用于对左右减振器实施控制,同时将测量的温度、电流、速度等信号按一定采样时间保存在E2PROM ATC256中。为了能测试控制器的工作情况,包括初始安装时的状况测试和读取历史记录并做测试诊断以及能根据参数变化情况进行故障诊断,为此,同时开发了通信系统,上位机采用便携式PC机,上、下位机之间通过MAX485芯片实现串行数据通信。 2.通信系统硬件电路设计   通信系统硬件电路设计的突出特点是,控制器的外围一改传统的并行扩展,而采用新型串行芯片进行串行总线扩展。与传统
[单片机]
51<font color='red'>单片机</font>与VB串行通信的实现
PCF8574 STC15单片机的驱动程序 LCD1602显示
网上找了很多的的1602程序,结果要么全是ARDUINO和STM32,要么没一个靠谱的,所以决定自己写,测了N久终于写出来了,看上去效果不错哈哈哈哈! (MCU是STC15F2K60S2) 制作出来的实物图如下: 单片机源程序如下: #include pcf8574.h #define WriteADDR 0x4e #define ReadADDR 0x4f #define u8 unsigned char #define CSSet 0x04//EN=1 #define CSReset 0x00//EN=0 #define COMSet 0x08 // RS=0 RW=0 #define DATSet 0x0
[单片机]
PCF8574 STC15<font color='red'>单片机</font>的驱动程序 LCD1602显示
一种便携式单片机控制液晶显示型心率计设计
引言   过去人们测量脉搏时常用的方法是使用测量脉搏的听诊器,或者使用吸附在人体上的电极等老式测量方法,这些方法无疑都不便于室外场所使用。本心率计在设计时就充分考虑到了这一点。它采用红外线来进行检测采集人体的脉搏,检测的部位为被检测人的任意一个手指或者是耳垂。   检测的基本原理是:随着心脏的搏动,人体组织半透明度随之改变。当血液送到人体组织时,组织的半透明度减小;当血液流回心脏,组织的半透明度增大。这种现象在人体组织较薄的手指尖、耳垂等部位最为明显。因此,本心率计将红外发光二极管产生的红外线照射到人体的上述部位,并用装在该部位另一侧或旁边的红外光电管来检测机体组织的透明程度并把它转换成电信号。由于此信号的频率与人体每分钟的脉
[单片机]
一种便携式<font color='red'>单片机</font>控制液晶显示型心率计设计
51单片机串口实验时波特率怎么调才合适
一般而言,波特率的高低与串口传输距离和使用环境有关,距离越远,波特率一般越低,使用环境干扰越大,波特率越低,如果是在同一块板上的串口通讯,可以做到很高,比如115200bps,另外最好使用11.0592M之类的晶振,这样标准波特率可以做到没有误差。 通过我的使用经验,一般RS232传输距离在1米以内的话,115200bps的波特率是没有什么问题的。10米以内的话9600bps肯定可以稳定传输(关键是要保证电压,也就是解决压降的问题。)。超过10米的话最好用485了。
[单片机]
基于PIC24F16KA102 XLP设计的16位MCU开发技术
PIC24F16KA102是极低16位MCU,采用改进型哈佛架构,32MHz时高达16MIPS,带4x PLL选择和多个除法选择的8MHz振荡器,17位x17位单周期硬件乘法器,32位x16位硬件除法器,16位x16位工作寄存器阵列,C编译器,运行模式的功耗低到8uA,深度睡眠模式的功耗为20nA,工作电压1.8V到 3.6V,住要用途包括RF传感器,数据采集器,温度传感器,电子门锁,测量传感器,遥控,安全传感器,智能卡和能量收获等。 图1。PIC24F16KA102系列通用方框图 图2。PIC24F16KA102系列PIC24F CPU核方框图 XLP 16位开发套件 Microchip Technology’s XLP 1
[单片机]
基于PIC24F16KA102 XLP设计的16位<font color='red'>MCU</font>开发技术
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved