从业十年,教你单片机入门 第16讲:
依据上一节的预告,原本这节应该讲判别句子的,可是考虑到后续章节的连贯性,决议先讲运算语法。
在讲运算语法之前,先讲一个我在前面忘了讲的知识点,那便是注释句子。何谓注释句子?在我前面一些章节的main函数中,经调查,发现一个规则,但凡中文说明的文字,要么前面有符号”//”,要么便是被包含在“/*”和”*/”之间。符号“//”和“/* */”都是注释句子。注释句子是用来添加文字备忘,便利程序员阅览回忆的。在注释句子里的文字是不会被编译器翻译成机器码的,也便是说即便注释里边的文字再多,也不会添加单片机的程序容量,它是被编译器过滤疏忽的,只是便利程序员做补白文字罢了。
符号“//”和“/* */”都是注释句子,但使用方面有点小差异。符号“//”是用来注释一行文字。而“/* */”往往是用来注释一段文字,当然“/* */”也能够注释一行文字。可是符号“//”只是能注释一行文字,却不能注释一段文字。
讲完注释句子,持续回到本节正题。单片机自身具有了简略的加减乘除运算才能,咱们只需求经过C言语调用相关的运算语法,即可指示单片机按咱们的要求进行简略的运算。至于内部详细的运算细节咱们能够不论,除非是涉及到大数据的运算才需求咱们额定编写算法。请先看以下的加法语法格局:
“保存变量”=“加数1”+“加数2”+…+“加数N”;
意义是:右边的“加数”与“加数”相加,而且把终究的运算成果赋值给左面的“保存变量”。留意,这儿的符号“=”不是等于号的意思,而是赋值的意思。左面的“保存变量”有必要是变量,不能是常量,不然编译时会报错。而右边的“加数”既能够是变量,也能够是常量,也能够是“保存变量”自身自己。多说一句,何谓变量和常量?变量便是能够在程序中被更改的,是分配的一个RAM空间。而常量往往便是数字,或许是被分配在ROM空间的一个详细数值。下面依据右边“被加数”与“加数”的不同组合,列出了加法运算的5种常用格局。
第1种:“加数1”是常量,“加数2”是常量。比方:
unsigned char a;
a=3+15;
数字“3”和“15”都是常量。履行上述句子后,保存变量a变成了18。
第2种:“加数1”是变量,“加数2”是常量。比方:
unsigned char b;
unsigned char x=10;
b=x+15;
x是变量,“15”是常量。因为本来x变量里边的数值是10,履行上述句子后,保存变量b变成了25。而变量x则坚持不变,x仍是10。
第3种:“加数1”是变量,“加数2”是变量。比方:
unsigned char c;
unsigned char x=10;
unsigned char y=6;
c=x+y;
x是变量,y也是变量。因为本来x变量里边的数值是10,y变量里边的数值是6,履行上述句子后,保存变量c变成了16。而变量x和y则坚持不变,x仍是10,y仍是6。
第4种:“加数1”是保存变量自身,“加数2”是常量。比方:
unsigned char d=2;
d=d+18;
d=d+7;
d是保存变量,“18”是常量。这类句子有一个特色,具有了自加功用,能够更改自己自身自己的数值。比方本来保存变量d的数值是2,履行“d=d+18;”句子后,d变成了20,接着再履行完“d=d+7;”句子后,d最终变成了27。
第5种:“加数1”是保存变量自身,“加数2”是变量。比方:
unsigned char e=2;
unsigned char x=10;
unsigned char y=6;
e=e+x;
e=e+y;
e是保存变量,x与y都是变量。这类句子有一个特色,具有了自加功用,能够更改自己自身自己的数值。比方本来保存变量e的数值是2,履行“e=e+x;”句子后,e变成了12,接着再履行完“e=e+y;”句子后,e最终变成了18。
现在编写一个程序来操练上述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=2; //界说一个变量d,而且分配了1个字节的RAM空间。初始化默以为2.
unsigned char e=2; //界说一个变量e,而且分配了1个字节的RAM空间。初始化默以为2.
unsigned char x=10; //界说一个变量x,而且分配了1个字节的RAM空间。初始化默以为10.
unsigned char y=6; //界说一个变量y,而且分配了1个字节的RAM空间。初始化默以为6.
//第1种:“加数1”是常量,“加数2”是常量。
a=3+15;
//第2种:“加数1”是变量,“加数2”是常量。
b=x+15;
//第3种:“加数1”是变量,“加数2”是变量。
c=x+y;
//第4种:“加数1”是保存变量自身,“加数2”是常量。
d=d+18;
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为18。
变量b为25。
变量c为16。
变量d为27。
变量e为18。
下节预告:加法的连写和自加运算的简写。