深圳市华胄科技有限公司 >> MCU专题 >> 单片机教程


单片机教程,51单片机C语言学习(七)



提交者 烟如人生  在  2007-9-26 14:35:18 

上一篇 下一篇

单片机教程,51单片机C语言学习


第七课 运算符和表达式(1)


  上课到这一课相隔了好长一段时间,这些日子里收到不少网友的来信支持和鼓励,要求尽快完成余下的部分。出门在外的人不得不先为吃饭而努力,似乎这也成为我的借口,以后每晚抽空打一些吧这样大家也就可以不用隔太久就能看到一些新东西。或许我的笔记并不是很正确,但我尽量的保证每课的实验都会亲自做一次,包括硬件的部分,已求不会误人子弟。


随着访问量不断的增加,网站已启用了


  呵,费话少说了。上两课说了常量和变量,先来补充一个用以重新定义数据类型的的语句吧。这个语句就是typedef,这是个很好用的语句,但我自己却不常用它,通常我定义变量的数据类型时都是使用标准的关键字,这样别人可以很方便的研读你的程序。如果你是个DELPHI编程爱好者或是程序员,你对变量的定义也许习惯了DELPHI的关键字,如int类型常会用关键字Integer来定义,在用C51时你还想用回这个的话,你可以这样写:


    typedef int integer;


    integer a,b;


  这两句在编译时,其实是先把integer定义为int,在以后的语句中遇到integer就用int置换,integer就等于int,所以a,b也就被定义为int。typedef不能直接用来定义变量,它只是对已有的数据类型作一个名字上的置换,并不是产生一个新的数据类型。下面两句就是一个错误的例子:


    typedef int integer;


    integer = 100;


使用typedef可以有方便程序的移植和简化较长的数据类型定义。用typedef还可以定义结构类型,这一点在后面详细解说结构类型时再一并说明。typedef的语法是


    typedef 已有的数据类型 新的数据类型名


  运算符就是完成某种特定运算的符号。运算符按其表达式中与运算符的关系可分为单目运算符,双目运算符和三目运算符。单目就是指需要有一个运算对象,双目就要求有两个运算对象,三目则要三个运算对象。表达式则是由运算及运算对象所组成的具有特定含义的式子。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语言中,+,/,就是算术运算符。C51中的算术运算符有如下几个,其中只有取正值和取负值运算符是单目运算符,其它则都是双目运算符:


   + 加或取正值运算符


   - 减或取负值运算符


   * 乘运算符


   / 除运算符


   % 取余运算符


算术表达式的形式:


   表达式1 算术运算符 表达式2


如:a+b*(10-a), (x+9)/(y-a)


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


  :( 还有这么多运算符呀!暂时停一停吧,我们先来做一个实验吧。学习运算符和另外一些知识时,我们还是给我们的实验板加个串行接口吧。借助电脑转件直观的看单片机的输出结果,以后我还会用一些简单的实例讲解单片机和PC串口通讯的简单应用和编程。如果你用的是成品实验板或仿真器,那你就可以跳过这一段了。


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



51<b><b>单片机</b></b>教程


图7-1 MAX232




  在上两课的电路的基础上按图7-3加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。


51<b><b>单片机</b></b>教程


图7-2 DB9接头


51<b><b>单片机</b></b>教程


图7-3 加上了MAX232的实验电路




  做好后我们就先用回第一课的"Hello World!"程序,用它来和你的电脑说声Hello!把程序烧到芯片上,把串口连接好。嘿嘿,这时要打开你的串口调试软件,没有就赶快到网上DOWN一个了。你会用Windows的超级中端也行,不过我从不用它。我用comdebug,它是个不错的软件,我喜欢它是因为它功能好而且还有"线路状态"功能,这对我制作小玩意时很有用。串口号,波特率调好,打开串口,单片机上电,就可以在接收区看到不断出现的"Hello World!"。一定要先打开软件的串口,再把单片机上电,否则可能因字符不对齐而看到乱码哦。



51<b><b>单片机</b></b>教程


图7-4 调试结果





单片机教程,51单片机C语言学习(七)



单片机教程,五系列(55讲)电子书全集下载

论坛精选:
单片机教程,MCS51单片机从零开始 第一讲:初识单片机
http://bbs.huazhoucn.com/Topic.aspx?id=2539
单片机教程,MCS51单片机从零开始 第二讲:MCS-51单片机简述
http://bbs.huazhoucn.com/Topic.aspx?id=2540
单片机教程,MCS51单片机从零开始 第三讲:单片机相关常用名词解释
http://bbs.huazhoucn.com/Topic.aspx?id=2541
单片机教程,MCS51单片机从零开始 第四讲:计算机中数的表示及运算
http://bbs.huazhoucn.com/Topic.aspx?id=2542
单片机教程,MCS51单片机从零开始 第五讲:常用逻辑电路
http://bbs.huazhoucn.com/Topic.aspx?id=2544
单片机教程,MCS51单片机从零开始 第六讲:51单片机的结构及其组成
http://bbs.huazhoucn.com/Topic.aspx?id=2545
单片机教程,MCS51单片机从零开始 第七讲:51单片机的引脚
http://bbs.huazhoucn.com/Topic.aspx?id=2546
单片机教程,MCS51单片机从零开始 第八讲:8051单片机I/O引脚工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2547
单片机教程,MCS51单片机从零开始 第九讲:8051单片机的存储器结构
http://bbs.huazhoucn.com/Topic.aspx?id=2548
单片机教程,MCS51单片机从零开始 第十讲:编码及译码器工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2549
单片机教程,MCS51单片机从零开始 第十一讲:存储器的存储原理
http://bbs.huazhoucn.com/Topic.aspx?id=2550
单片机教程,MCS51单片机从零开始 第十二讲:51单片机的特殊功能寄存器
http://bbs.huazhoucn.com/Topic.aspx?id=2551
单片机教程,MCS51单片机从零开始 第十三讲:51单片机CPU的内部结构
http://bbs.huazhoucn.com/Topic.aspx?id=2552
单片机教程,MCS51单片机从零开始 第十四讲:定时器/计数器的基本结构及工作原理
http://bbs.huazhoucn.com/Topic.aspx?id=2553
单片机教程,MCS51单片机从零开始 第十五讲:51单片机的中断系统
http://bbs.huazhoucn.com/Topic.aspx?id=2554
单片机教程,MCS51单片机从零开始 第十六讲:51单片机的复位
http://bbs.huazhoucn.com/Topic.aspx?id=2555
单片机教程,MCS51单片机从零开始 第十七讲:51单片机执行指令的过程
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机教程,MCS51单片机从零开始 第十八讲:51单片机的延时及时序分析
http://bbs.huazhoucn.com/Topic.aspx?id=2557
单片机教程,MCS51单片机从零开始 第十九讲:汇编语言基础
http://bbs.huazhoucn.com/Topic.aspx?id=2558
单片机教程,MCS51单片机从零开始 第二十讲:汇编语言及汇编过程
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机教程,MCS51单片机从零开始 第二十一讲:汇编程序的基本结构
http://bbs.huazhoucn.com/Topic.aspx?id=2560
单片机教程,MCS51单片机从零开始 第二十二讲:51单片机的寻址方式
http://bbs.huazhoucn.com/Topic.aspx?id=2561
单片机教程,MCS51单片机从零开始 第二十三讲:数据传送类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2562
单片机教程,MCS51单片机从零开始 第二十四讲:算术运算类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2563
单片机教程,MCS51单片机从零开始 第二十五讲:逻辑运算及移位指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2564
单片机教程,MCS51单片机从零开始 第二十六讲:控制转移类指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2565
单片机教程,MCS51单片机从零开始 第二十七讲:布尔变量操作指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2566
单片机教程,MCS51单片机从零开始 第二十八讲:伪指令分析
http://bbs.huazhoucn.com/Topic.aspx?id=2567

1 楼  提交者:烟如人生 在 2007-9-26 14:35:42
回复看自己的
2 楼  提交者:zuowangcai 在 2007-9-26 15:33:12
太好了
3 楼  提交者:qianqian 在 2007-9-26 16:23:00
OK
4 楼  提交者:东方智能 在 2007-9-26 18:00:42
888
5 楼  提交者:偶然 在 2007-9-26 19:51:38
看看是否好东西
6 楼  提交者:96168 在 2007-9-26 22:22:19
see看看是否好东西
7 楼  提交者:jkfeitue 在 2007-9-27 9:42:56
不错
8 楼  提交者:deyangfan100 在 2007-9-27 10:33:17
不错,还没看呢???以前的看了,学习了
9 楼  提交者:deyangfan100 在 2007-9-27 10:38:12
楼主是猪自己顶起来的,有我们给你顶不就行了
10 楼  提交者:良心 在 2007-9-27 10:52:42
ha0 
11 楼  提交者:凌雪无晴 在 2007-9-27 12:41:41
继续!
12 楼  提交者:Guest 在 2007-9-27 13:31:42
13 楼  提交者:volcanohp 在 2007-9-27 17:07:41
df
14 楼  提交者:Guest 在 2007-9-27 17:14:48
看看再说
15 楼  提交者:lcx7113 在 2007-9-27 17:51:20
马上看看
16 楼  提交者:lyylyy 在 2007-9-27 19:52:56
呵呵
17 楼  提交者:永远爱着云 在 2007-9-27 20:14:17
支持
18 楼  提交者:lyylyy 在 2007-9-27 22:11:33
看看
19 楼  提交者:306663570 在 2007-9-28 7:18:56

20 楼  提交者:private80 在 2007-9-28 11:02:33
这个网站的确不错,大力支持!!!
21 楼  提交者:黄梁 在 2007-9-28 11:16:53

22 楼  提交者:renjinguo 在 2007-9-28 12:31:30
hao 
23 楼  提交者:Guest 在 2007-9-28 13:34:31
好,不错
24 楼  提交者:田恒 在 2007-9-28 14:29:22
大哥,小弟我~~~~~~~~~~~~~~~~~`
25 楼  提交者:bosw 在 2007-9-28 14:31:24
真好
26 楼  提交者:zhang 在 2007-9-28 16:27:27
  呵呵
27 楼  提交者:小星 在 2007-9-28 19:09:03
kankan
28 楼  提交者:Guest 在 2007-9-28 23:53:48
太好了, 马上看看
29 楼  提交者:yyxue0925 在 2007-9-29 10:05:17
呵呵
30 楼  提交者:yyxue0925 在 2007-9-29 10:05:18
呵呵
上一篇 下一篇
当前第〖1〗页 共有39页 转到第 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39