C语言 百分网手机站

单片机C语言知识点全攻略

时间:2020-09-29 15:12:29 C语言 我要投稿

单片机C语言知识点全攻略

  为了让有需要的朋友进一步了解单片机C语言知识,下面的文章将为大家讲解单片机C语言的知识内容,欢迎学习!

单片机C语言知识点全攻略

  C51运算符和表达式

  运算符,双目运算符和三目运算符。单目就是指需要有一个运算对象,双目就要求有两个运 算对象,三目则要三个运算对象。表达式则是由运算及运算对象所组成的具有特定含义的式 子。C 是一种表达式语言,表达式后面加“;”号就构成了一个表达式语句。

  赋值运算符

  对于“=”这个符号大家不会陌生的,在 C 中它的功能是给变量赋值,称之为赋值运算 符。它的作用不用多说大家也明白,就是但数据赋给变量。如,x=10;由此可见利用赋值运 算符将一个变量与一个表达式连接起来的式子为赋值表达式,在表达式后面加“;”便构成 了赋值语句。使用“=”的赋值语句格式如下:

  变量 = 表达式; 示例如下

  a = 0xFF; //将常数十六进制数 FF 赋于变量 a

  b = c = 33; //同时赋值给变量 b,c d = e; //将变量 e 的值赋于变量 d

  f = a+b; //将变量 a+b 的值赋于变量 f 由上面的例子能知道赋值语句的意义就是先计算出“=”右边的表达式的值,然后将得到 的值赋给左边的变量。而且右边的表达式能是一个赋值表达式。

  在一些朋友的来信中会出现“==”与“=”这两个符号混淆的错误原码,问为何编译报 错,一般就是错在 if (a=x)之类的语句中,错将“=”用为“==”。“==”符号是用来进行相 等关系运算。

  算术,增减量运算符

  对于 a+b,a/b 这样的表达式大家都很熟悉,用在 C 语言中,+,/,就是算术运算符。单片机c语言 中的算术运算符有如下几个,其中只有取正值和取负值运算符是单目运算符,其它则都是双 目运算符:

  + 加或取正值运算符

  - 减或取负值运算符

  * 乘运算符

  / 除运算符

  % 取余运算符 算术表达式的形式:

  表达式 1 算术运算符 表达式 2 如:a+b*(10-a), (x+9)/(y-a)

  除法运算符和一般的算术运算规则有所不一样,如是两浮点数相除,其结果为浮点数。

  10.0/20.0 所得值为 0.5,而两个整数相除时,所得值就是整数,如 7/3,值为 2。像别的语 言一样 C 的运算符与有优先级和结合性,同样可用用括号“()”来改变优先级。这些和我们 小时候学的数学几乎是一样的,也不必过多的说明了。

  ++ 增量运算符

  -- 减量运算符

  这两个运算符是 C 语言中特有的一种运算符。在 VB,PASCAL 等都是没有的。作用就是 对运算对象作加 1 和减 1 运算。要注意的`是运算对象在符号前或后,其含义都是不一样的,虽 然同是加 1 或减 1。如:I++,++I,I--,--I。

  I++(或 I--) 是先使用 I 的值,再执行 I+1(或 I-1)

  ++I(或--I) 是先执行 I+1(或 I-1),再使用 I 的值。增减量运算符只允许用于变量的运算中,不能用于常数或表达式。 先来做一个实验吧。学习运算符和另外一些知识时,我们还是给我们的实验板加个串行

  接口吧。借助电脑转件直观的看单片机的输出结果,如果你用的是成品实验板或仿真器,那你就能跳过这一段了。

  在制作电路前我们先来看看要用的 MAX232,这里不去具体讨论它,只要知道它是 TTL和 RS232 电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,能省一点,效 果也不错 (如有兴趣能查看 网站中的相关资料)。下图就是 MAX232 的基本接线图。

 

  图 6-1 MAX232

  在上两课的电路的基础上按图 6-3 加上 MAX232 就能了。串行口座用 DB9 的母头,这样 就能用买来的 PC 串行口延长线进行和电脑相连接,也能直接接到电脑 com 口上。

  图 6-2 DB9 接头

  图 6-3 加上了 MAX232 的实验电路 做好后,就先用回前面的“Hello World!”程序,用它来和你的电脑说声 Hello!把程序

  烧到芯片上,把串行口连接好。嘿嘿,这个时候要打开你的串行口调试软件,没有就赶快到网上 DOWN 一个了。你会用 Windows 的超级终端也行,不过我从不用它。我用 http://emouze.com 的 comdebug,它是个不错的软件,我喜欢它是因为它功能好而且还有“线路状态”功能,这对

  我制作小玩意时很有用。串行口号,波特率调好,打开串行口,单片机上电,就能在接收区看 到不断出现的“Hello World!”。一定要先打开软件的串行口,再把单片机上电,不然可能因字符不对齐而看到乱码哦。

  运算符和表达式(关系运算符)

  关系运算符,同样我们也并不陌生。单片机C语言中有六种关系运算符,这些东西同样是在我们小时候学算术时就已经学习过了的:

  > 大于

  < 小于

  >= 大于等于

  <= 小于等于

  == 等于

  != 等于

  或者你是个非 C语言 程序员,那么对前四个一定是再熟悉不过的了。而“==”在 VB 或 PASCAL 等中是用“=”,“!=”则是用“not ”。

  小学时的数学课就教授过运算符是有优先级别的,计算机的语言也不过是人类语言的一种扩展,这里的运算符同样有着优先级别。前四个具有相同的优先级,后两个也具有相同的优先级,但是前四个的优先级要高于后2个的。

  当两个表达式用关系运算符连接起来时,这个时候就是关系表达式。关系表达式通常是用来判别某个条件是否满足。要注意的是用关系运算符的运算结果只有 0 和 1 两种,也就是逻辑的真与假,当指定的条件满足时结果为 1,不满足时结果为 0。

  表达式 1 关系运算符 表达式 2 如:I

  借助我们在上一课做好的电路和学习了的相关操作。我们来做一个关系运算符相关的实例程序。为了增加学习的趣味性和生动性,不妨我们来假设在做一个会做算术的机器人,当然真正会思考对话的机器,我想我是做不出来的了,这里的程序只是用来学习关系运算符的基本应用。

  #include 《AT89X51.H》

  #include 《stdio.h》

  void main(void)

  {

  int x,y;

  SCON = 0x50; //串行口方式 1,允许接收 TMOD = 0x20; //定时器 1 定时方式 2

  TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;

  TI = 1;

  TR1 = 1; //启动定时器

  while(1)

  {

  printf(“您好!我叫 Robot!我是一个会做算术的机器人! ”); //显示

  printf(“请您输入两个 int,X 和 Y ”); //显示

  scanf(“%d%d”,&x,&y); //输入

  if (x 《 y)

  printf(“X《Y ”); //当 X 小于 Y 时

  else //当 X 不小于 Y 时再作判断

  {

  if (x == y)

  printf(“X=Y ”); //当 X 等于 Y 时

  else

  printf(“X》Y ”); //当 X 大于 Y 时

  }

  }

  }

  要注意的是,在连接 PC 串行口调试时。发送数字时,发送完一个数字后还要发送一个回车符,以使 scanf 函数确认有数据输入。

【单片机C语言知识点全攻略】相关文章:

如何优化C语言(单片机)10-04

单片机C语言的好处11-26

如何提高单片机C语言代码效率12-04

C语言知识点集锦11-05

单片机C语言有几种内存泄露问题10-06

C语言数组知识点总结10-05

用单片机C语言精确延时(定时)的方法12-02

C语言基础知识点集锦01-28

C语言知识点及其简单应用12-01

如何写出高效优美的单片机C语言代码10-04