单片机c程序设计及应用

上传人:j****9 文档编号:54125429 上传时间:2018-09-08 格式:PPT 页数:134 大小:1.03MB
返回 下载 相关 举报
单片机c程序设计及应用_第1页
第1页 / 共134页
单片机c程序设计及应用_第2页
第2页 / 共134页
单片机c程序设计及应用_第3页
第3页 / 共134页
单片机c程序设计及应用_第4页
第4页 / 共134页
单片机c程序设计及应用_第5页
第5页 / 共134页
点击查看更多>>
资源描述

《单片机c程序设计及应用》由会员分享,可在线阅读,更多相关《单片机c程序设计及应用(134页珍藏版)》请在金锄头文库上搜索。

1、第8章 单片机C程序设计及应用,8.1 单片机C51程序设计 8.2 采用C51程序的设计实例 本章小结 练习与思考题,8.1 单片机C51程序设计 8.1.1 单片机C程序的基本概念 目前仍在使用的单片机开发设计语言大致有两类:汇编语言和C语言。C语言由于其结构化、移植性好和高效性的特点,是进行单片机开发的一种利器。C语言是一种源于编写UNIX操作系统的语言,与汇编语言相比,有以下优点:,(1) 不需要了解51单片机的指令系统,仅仅要求初步了解存储器结构。 (2) 程序有规范的结构,可分为不同的函数,使程序结构化。 (3) 程序可读性好。 (4) 提供很多标准库函数,数据处理能力强。 (5)

2、 程序易于做到模块化,移植性好。,8.1.2 单片机C程序的基本结构 C语言是一种通用性很强的结构化程序设计语言。从程序流程的角度来看,单片机C程序可以分为3种基本结构:顺序结构、选择结构和循环结构。这3种基本结构可以组成各种复杂程序。,1顺序结构 顺序结构程序是仅包含一个main( )函数的简单程序,适当运用表达式语句就能设计出具有某特定功能的顺序结构C51程序。这是一种最简单的基本结构,程序只由低地址向高地址顺序执行指令代码,如图8-1所示。虽然该程序设计方法简单,但在具体运用中的算法仍然采用自顶向下逐步求精的方法进行设计。,图8-1 顺序结构,2选择结构 使单片机具有决策能力的是选择结构

3、,这种结构也称为分支结构,如图8-2(a)所示。选择结构中包含一个判断框,执行流程根据判断条件P的成立与否,选择执行其中的一路分支。图8-2(b)所示的是特殊的选择结构,即一路为空的选择结构。这种选择结构中,当P条件成立时,执行A操作,然后脱离选择结构;如果P条件不成立,则直接脱离选择结构。它包括if语句结构和switch语句结构两种。,图8-2 选择结构,1) if语句结构 C语言的if语句有3种形式:基本if形式、if-else形式、if-else-if形式。 基本if形式语法结构如下: if(表达式) 处理程序; 处理机理是:如果表达式的值为“真”,则执行“处理程序”的语句内容,否则不执

4、行该语句内容。例如:,void main( ) uchar sp0=0, buffer02=0, 0; if (sp0 = 0) buffer0sp0=RXBUF0; /接收串口数据 if-else形式语法结构如下: if(表达式) 处理程序1; else 处理程序2;,处理机理是:如果if表达式的值为“真”,则执行“处理程序1”的语句内容,否则执行“处理程序2”语句内容。例如: void main( ) uchar end,rev_flag; if (end = 1) rev_flag0=1; else rev_flag0=0; ,if-else-if形式语法结构如下: if(表达式1) 处

5、理程序1; else if (表达式2) 处理程序2; else (表达式n) 处理程序n;,处理机理是:如果表达式1的值为“真”,则执行与之相对应的“处理程序1”的语句内容;如果表达式2的值为“真”,则执行与之相对应的“处理程序2”的语句内容,依次判断表达式“x”是否为“真”,如果为“真”则执行与之相对应的“处理程序x”语句内容。例如:,void main( ) uchar sp0=0, rev_byte0, buffer02=0, 0, receive_frame10; if (sp0 = 0) buffer0sp0=RXBUF0; /接收串口数据 if (buffer00 = 0xEB

6、) sp0+; ,/* 判断第二个字节 */ else if (sp0 = 1) buffer0sp0=RXBUF0; if ( buffer00 = 0xEB ) else if (sp0 = 2) ,receive_framerev_byte0=RXBUF0; rev_byte0+; ,2) switch语句结构 C语言的switch语句又称开关语句,它可以从多种情况中选择满足条件的一种情况,是多分支选择结构语句。 switch形式语法结构如下:,switch(表达式) case:处理序列1;break case:处理序列2;break case:处理序列n;break default:处

7、理序列n+1; ,处理机理是:计算表达式的值,并逐个与其后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等,即执行其后的处理序列语句,然后不再进行判断,继续执行后面所有case后的处理序列语句。如表达式的值与所有case后的常量表达式都不相同时,则执行default后的处理序列语句。C语言还提供了一种break语句,专用于跳出switch语句。例如:,void main( ) uchar flag=0,up=0,down=0,left=0,right=0; switch(flag) case 1:up=1;break; /置标志 case 2:down=1;break; case

8、3:left=1;break; case 4:right=1;break; default:error=1;break; ,本例中输入一个整数,经switch判断后,选择输出是一周中的星期几,整数不在17的范围内时就输出“Error”。可见此类多分支程序用switch语句可以很容易实现。,3循环结构 计算机的基本特征之一就是具有重复执行一组语句的能力循环能力。循环结构是程序中一种很重要的结构。其特点是:在给定条件成立时,反复执行某程序段,直到条件不成立时为止。 循环结构有两种形式:当型循环和直到型循环。,1) 当型循环 判断条件P是否成立,若成立,则重复执行A操作,直至某次判断条件P不再成立,

9、就不再执行A操作而退出循环结构,见图8-3(a)。 2) 直到型循环 重复执行A操作,然后判断条件P是否成立,如果不成立再执行A操作,直到条件P成立,不再执行A操作,退出循环,见图8-3(b)。,图8-3 循环结构,无论是顺序结构、选择结构,还是循环结构,它们有一个共同点,即只有一个入口且只有一个出口。从示意图中可以看到,如果把基本结构看做是一个整体(用虚线框表示),执行流程从a点进入基本结构,而从b点脱离基本结构。整个程序由若干个这样的基本结构组合而成,必然有良好的可读性和可维护性。它包括for语句结构和while语句结构两种。,(1) for语句结构。C语言中,for语句是一种使用最为方便

10、灵活的循环控制语句结构,它提供了一个应用非常灵活的控制部分,既可以实现计数循环程序设计,又可以实现条件控制循环程序设计。 for形式语法结构如下: for(表达式1;表达式2;表达式3) 处理程序;,处理机理是:首先计算“表达式1”的值;再计算“表达式2”的值,若值为“真”则执行循环体一次,否则跳出循环;然后再计算“表达式3”的值,转回第2步重复执行。在整个for循环过程中,“表达式1”只计算一次,作为for的入口语句条件,“表达式2”和“表达式3”则可能计算多次。循环体也可能多次执行,也可能一次都不执行。例如:,void main( ) int n, sum=0; for(n=0;n=50;

11、n+) sum+=n; 在使用for语句中有几点要特别注意: 循环体内的处理程序可以为空操作; for语句的各表达式都可以省,而分号不能省,在省略各表达式时要特别小心分析,防止造成无限死循环。,(2) while语句结构。while形式语法结构有当while形式和直到while形式两种。 当while形式如下: while(表达式) 处理程序; 处理机理是:计算“表达式”的值,若为“真”则执行循环体的处理程序一次,然后再对表达式进行计算执行,直到表达式的值为“假”时停止循环。循环体也可能多次执行,也可能一次都不执行。例如:,void main( ) int n=0, sum=0; while(

12、n50) n+=1; sum+=n; ,直到循环do-while形式如下: do 处理程序; while(表达式); 处理机理是:先执行处理程序,到while时计算“表达式”的值,若为“真”则再次执行循环体的处理程序一次,直到表达式的值为“假”时停止循环。循环体至少会执行一次。例如:,void main( ) int n=0, sum=0; do n+=1; sum+=n; while(n=50); ,8.1.3 单片机C程序的数据类型 数据是计算机操作的对象。无论用何种语言、算法进行程序设计,最终在计算机中运行的只有数据流。数据的不同格式称为数据类型。开始单片机C程序的学习之前先应该熟悉它所

13、支持的数据类型。 C语言数据类型包括:基本类型、构造类型、指针类型以及空类型。其中,基本数据类型包括位(bit)、字符(char)、整型(int)、短整型(short)、长整型(long)、浮点型(float)以及双精度浮点型(double);构造类型包括数组(array)、结构体(struct)、共用体(union)以及枚举类型(enum)。,对于51系列单片机编程而言,支持的数据类型是和编译器有关的,比如C51编译器中整型(int)和短整型(short)相同,浮点型(float)和双精度浮点型(double)相同。表8-1列出了C51编译器KEIL uVision2 C51编译器所支持的数据类型。,表8-1 KEIL uVision2 C51编译器所支持的数据类型,下面来看看它们的具体定义。 1字符类型char char类型的长度是一个字节,通常用于定义处理字符类型的变量或常量。它分为无符号字符类型unsigned char和有符号字符类型signed char,默认值为signed char 类型。unsigned char 类型用字节中所有位表示数值,可以表达的数值范围是0(281)。signed char 类型用字节中最高位表示数据的符号,“0”表示正数,“1”表示负数,负数用补码表示,可以表达的数值范围是 27+(271)。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号