本帖最后由 51armfpga 于 2014-4-10 23:04 编辑 3. Cx51程序结构 Cx51程序结构与一般C语言没什么区别。一个Cx51程序大体上是一个函数定义的集合,在这个集合中仅有一个名为main的主函数,主函数是程序的入口,主函数中的所有语句执行完毕,则程序执行结束。 Cx51语言的基本结构分为顺序结构、选择结构、循环结构。 3.1顺序结构 顺序结构是一种最基本、最简单的编程结构。在这种结构中,程序由低地址顺序执行指令代码。如图2-7所示,先执行A操作,然后再执行B操作,两者是顺序执行的关系。 图2-7 3.2选择结构 如果计算机只能做像顺序结构那样简单的基本操作,那么它的用途将十分有限。计算机功能强大的原因在于它具有决策能力,或者说具有选择能力。C语言的一个基本判断(条件选择)语句就是if语句,它是串行多分子结构的关键语句,它的基本结构如下所示: if(表达式) //基本条件判断 {语句;} //基本任务 else if(表达式) //补充条件(可选) {语句;} //补充条件下的任务 else //条件之外情况(可选) {语句;} //条件之外任务 if语句还可以多层嵌套: if(表达式) //基本条件判断 { //嵌套条件语句 if(表达式) //嵌套基本条件判断 {语句;} //嵌套基本任务 else if(表达式) //嵌套补充条件(可选) {语句;} //嵌套补充任务 } else if(表达式) //补充条件(可选) {语句;} //补充条件下的任务 else //条件之外情况(可选) {语句;} //条件之外任务 在如图2-8所示地选择结构中,程序首先对一个条件(P)进行检测,当条件为真(Y)时执行任务A,反之(N)则执行任务B。 图2-8 在串行多分支结构中,以单选择结构中的某一条件(P)为真的分支方向作为串行多分支方向继续进行选择结构的操作;假如条件为假,则执行另外的操作A。最终程序在若干种选择之中选出一种操作来执行,并从一个共用的出口退出,如图2-9。 图2-9 实际应用中常常会遇到多分支选择问题。例如,以一个变量的值作为判断条件,进行多路并行任务的跳转。switch/case语句是并行多分支结构的关键语句,其结构如下所示: switch(表达式) //基本条件判断 { case 值0: //条件0 {语句;break;} //条件0任务 case 值1: //条件1 {语句;break;} //条件1任务 default: //所有条件外 {语句;} //所有条件外任务 } 和if语句一样,switch/case语句也可以多层嵌套: switch(a) //基本条件判断 { case 0: //条件0 {c=0;break;} //条件0任务 case 1: //条件1 {c=2; break;} //条件1任务 default: //条件外情况(可选) { switch(a) //嵌套基本条件判断 { case 0: //嵌套条件0 {c=10;break;} //任务0 case 2: //嵌套条件1 {c=20; break;} //嵌套任务1 default: //嵌套条件外情况 {c=30;} //嵌套条件之外任务 } } 3.3循环结构 所有的分支机构都使程序流程一直向前执行,除非使用了定向跳转语句goto,而使用循环结构可以使分支程序重复地执行。 while语句的一般形式为: while(表达式) {语句; /*循环体*/ } 其中表达式是while语句能否继续的条件,而语句部分则是循环体,用来完成某些任务。只要表达式为真,就重复执行其中的循环体,直到表达式结果为假时,中断这个循环,继续执行循环体之外的其它任务。若表达式一开始就是假的,那么就没有机会执行循环体内的任务;反之加入表达式一直为真,那么就不会从循环体跳出,出现死循环。while结构的最大特点在于,其循环测试条件处于循环体的开头,若想进入循环体这必须首先进行循环条件测试。若测试条件一开始就不合格,则循环体内语句就一次都不会执行。while循环体内的语句必须使用花括号{ }括起来,表示整个花括号内的内容是一个统一的循环体。否则循环体只是紧接着while语句后的第一个语句。 “while”型循环结构如图2-10所示。 图2-10 do while语句的一般形式为: do { 语句; /*循环体*/ } while ( 表达式 ) 其中表达式仍然是while语句能否继续的条件,语句部分同样是循环体,用来完成某些任务。只要表达式为真,就重复执行其中的循环体,直到表达式结果为假时,中断这个循环,继续执行循环体之外的其它任务。 “do while”型循环结构如图2-11所示。 图2-11 这两种循环结构非常类似,唯一的区别在于执行A的次数。在“while”循环中,当条件P一开始就为假时,就没有任何机会执行A;而在“do while”循环中,即便条件P一开始就为假,也至少有一次执行A的机会。 for语句的一般形式为: for ( 初始语句; 循环条件P; 结尾语句 ) { 语句 ;/*循环体*/ } C语言中for循环语句 可以用于循环次数已确定的情况, 可以用于循环次数不确定的情况。 for循环语句中: 初始语句:用来给定进入循环体之前所需要初始化的变量, 循环条件P: 给定继续执行循环体的条件, 结尾语句:则给定循环体执行完毕后,在继续执行循环的条件判断之前需要执行的变量改变(尺度增量) 。 通常情况下for循环语句都会有一个循环变量,它在初始语句中被初始化,条件语句给出循环变量的变化范围,而结尾语句则给定每次循环后该循环变量的改变方式。 for循环语句的语法流程如图2-12所示: 图2-12 4. Protues简介 Proteus 是一款非常不错的单片机模拟软件。虽然电子模拟软件不少,但是能很好的模拟单片机的只有 Proteus 软件。该软件能模拟51 单片机,avr单片机,pic 单片机,以及部分 arm 芯片。支持的外围器件也很多包括LED发光二极管,数码管,按键,温度,时钟,A/D,D/A,LCD1602,LCD12864(不带字库)等元器件。对初学者来说,是非常好的入门工具。当然,实际的开发板在学习中还是很有必要的,毕竟这个软件只是模拟。调试程序时可以使用Protues进行仿真,仿真成功后再用实际电路进行验证。一般在开发板做过很多程序的工程师用起来Protues会得心应手,但是只会熟练Protues仿真的工程师不在真实环境上验证的,只能说是纸上谈兵,因为在仿真中可能会成功,在实际电路中并以一定可行,仿真中有些条件可以都是可以忽略的,比如单片机你不画电源,不画地,不画晶振,不管EA脚电平,仿真都是没问题的,但是在真实环境中,有一个地方忽略,你不会得到想要的结果,所以大家学习Protues的同时,不能完全依赖它,而是利用它的优点,与实际电路一起来学习单片机,这样的话就如虎添翼了。下面介绍一下Protues软件的安装方法。 先从21IC网站下载Protues软件,软件的版本是Protues7.5,软件的下载地址是:http://bbs.21ic.com/icview-443664-1-1.html 解压缩后,打开Protues文件夹,双击Proteus 7.5 SP3 Setup.exe,单击下一步,直至Finish。然后进入crack文件夹,双击LXK Proteus 7.5 SP3 v2.1.3.exe,出现一安装路径,此路径要与安装Protues的路径保持一致。至此,Protues安装成功。下面接单介绍一下Protues的使用方法及技巧。 单击屏幕左下方的“开始”→“程序”→“Proteus 7 Professional” →“ISIS 7 Professional”,出现如图2-13所示屏幕,表明进入Proteus ISIS集成环境。 图2-13 打开后就进入Protues的工作界面,如图2-14所示,Protues工作界面是一种标准的Windows界面,包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。 图2-14 从下一课开始就进入Protues仿真与程序调试了,不再是纯理论的知识,学习起来会更有趣一些。 |
|
来自: lixinhecom > 《C语言》