《单片机的程序设计.ppt》由会员分享,可在线阅读,更多相关《单片机的程序设计.ppt(57页珍藏版)》请在优知文库上搜索。
1、 项目项目2 单片机的程序设计单片机的程序设计 2.1 C语言的程序结构语言的程序结构 2.2 C51的运算符及表达式的运算符及表达式 2.3 C51的数据的数据 2.4 C语言的函数语言的函数 2.5 C语言的数组语言的数组 2.6 程序设计实例程序设计实例 单片机的开发实例单片机的开发实例点亮一盏点亮一盏LED灯灯 问题描述:通过问题描述:通过C语言编程,实现单片机开发板上点亮一盏语言编程,实现单片机开发板上点亮一盏LED灯。灯。实验所需软件:实验所需软件:Keil、Progisp 实验步骤:实验步骤:1、熟悉硬件电路、熟悉硬件电路 2、掌握开发软件的使用方法、掌握开发软件的使用方法 3、
2、编写程序代码并进行编译、运行、编写程序代码并进行编译、运行 拓展:拓展:1、同时点亮几盏、同时点亮几盏LED灯灯 2、设计流水灯、设计流水灯程序代码程序代码#includemain()P1=0 xF7;请用请用C语言编写程序计算语言编写程序计算234+78的和的和main()int a,b,c;a=234;b=78;c=a+b;printf(“234+78=%d”,c);1.C51语言语言 C语言编译调试工具效率高,数据类型及运算符语言编译调试工具效率高,数据类型及运算符丰富,经过不断完善,能满足单片机的开发要求,形丰富,经过不断完善,能满足单片机的开发要求,形成了单片机成了单片机C语言。把语
3、言。把51单片机单片机C语言称为语言称为C51语言。语言。用用C51编写单片机程序时,需要根据单片机存储编写单片机程序时,需要根据单片机存储结构及内部资源定义相应的数据类型和变量,而标准结构及内部资源定义相应的数据类型和变量,而标准的的C语言不需要考虑这些问题。另外,语言不需要考虑这些问题。另外,C51包含的数据包含的数据类型、变量存储模式、输入输出处理、函数等方面与类型、变量存储模式、输入输出处理、函数等方面与标准的标准的C语言也有一定的区别。其他的语法规则、程语言也有一定的区别。其他的语法规则、程序结构及程序设计方法则与标准的序结构及程序设计方法则与标准的C语言相同。语言相同。C51语言的
4、特点语言的特点 编程者不需要了解单片机的指令系统,仅要求对编程者不需要了解单片机的指令系统,仅要求对单片机的存储器结构有初步的了解,至于存储器的分单片机的存储器结构有初步的了解,至于存储器的分配、寻址方式及数据类型等完全由编译器管理。配、寻址方式及数据类型等完全由编译器管理。程序有规范化的结构,可以分为不同的函数,这程序有规范化的结构,可以分为不同的函数,这种方式可以使程序结构化,将可变的选择与特殊操作种方式可以使程序结构化,将可变的选择与特殊操作组合在一起,增强程序的可读性。组合在一起,增强程序的可读性。编程和程序的调试时间显著缩短,从而提高了编编程和程序的调试时间显著缩短,从而提高了编程的
5、效率,提供的库函数包含许多标准的子程序,具程的效率,提供的库函数包含许多标准的子程序,具有较强的数据处理能力,可以将编好的程序很容易地有较强的数据处理能力,可以将编好的程序很容易地移植到新程序。移植到新程序。C51作为一种非常方便的语言得到了广泛的支持,作为一种非常方便的语言得到了广泛的支持,目前已经成为单片机开发的主要编程语言。目前已经成为单片机开发的主要编程语言。2.简单的简单的C51程序程序【例】【例】如下图所示,在如下图所示,在P1.0口上接有一个口上接有一个LED发光二极发光二极管,要求让发光二极管发光。管,要求让发光二极管发光。#include sbit P1_0=P10;void
6、 main()P1_0=0;程序如下:程序的开始是一个文件包含处理。这段程序中包含的是reg51.h文件,以.h为后缀的称为头文件,该头文件的作用是把特殊功能寄存器中的符号和地址对应起来,这里主要是应用到P1这个符号,如果没有包含reg51.h文件,C51编译器不知道P1具体指什么,在编译过程中就会发生错误。给P1.0取名为P1_0,是通过编译器中增加的关键字sbit来定义的 程序最后是主函数,每一个C51程序有且只有一个主函数,函数后面使用一对大括号“”,在“”中书写具体内容。(1)一个一个C51程序从程序从main函数开始执行,不管函数开始执行,不管main函数函数在什么位置。在什么位置。
7、(2)C51中字母区分大小写,如定义是中字母区分大小写,如定义是sbit P1_0,若后面,若后面写成写成p1_0,在编译时就会出现错误。,在编译时就会出现错误。(3)C51书写自由,一行可以写几个语句,一个语句也能书写自由,一行可以写几个语句,一个语句也能写在几行上。写在几行上。(4)每个语句必须以分号结束。每个语句必须以分号结束。(5)C51中的注释可以采用两种符号。第一种是中的注释可以采用两种符号。第一种是“/*/”符符号,从号,从“/*”开始直到开始直到“*/”为止,中间的内容都是注释。第为止,中间的内容都是注释。第二种是二种是“/”引导的注释语句,这种注释只对本行有效。引导的注释语句
8、,这种注释只对本行有效。由此可见:由此可见:2.1 C语言的程序结构语言的程序结构 在结构上可以把在结构上可以把C51程序分为程序分为3类,即顺序结构、类,即顺序结构、选择结构和循环结构。选择结构和循环结构。2.1.1 顺序结构顺序结构 顺序结构是一种最基本、顺序结构是一种最基本、最简单的编程结构,在这种结最简单的编程结构,在这种结构下,程序按低地址向高地址构下,程序按低地址向高地址顺序逐条执行指令代码,如右顺序逐条执行指令代码,如右图所示。图所示。过程过程A过程过程B过程过程C请用请用C语言编写程序计算语言编写程序计算234+78的和的和main()int a,b,c;a=234;b=78;
9、c=a+b;printf(“234+78=%d”,c);2.1.2 选择结构选择结构1、if语句语句(1)if(表达式表达式)语句语句如果表达式为如果表达式为“真真”,则执行语句,否则执行,则执行语句,否则执行if语句后语句后面的语句,如:面的语句,如:if(a5)b=3;条件表达式 语句 真 假(2)if(表达式表达式)语句语句1 else 语句语句2 如果表达式为如果表达式为“真真”,则执行,则执行语句语句1,否则执行语句,否则执行语句2,如:,如:if(a5)b=3;else b=-3;条件表达式 语句 1 真 假 语句 2 例例2.1 单片机的单片机的P1.0接一小灯,接一小灯,P1.
10、1接一开关,当开关闭合时,小灯亮;接一开关,当开关闭合时,小灯亮;当开关断开时,小灯灭。请画出硬件电路图,并写出程序代码。当开关断开时,小灯灭。请画出硬件电路图,并写出程序代码。#include void main()while(1)if(P11=0)P10=0;else P10=1;(3)if(表达式表达式1)语句语句1 else if(表达式表达式2)语句语句2 else if(表达式表达式3)语句语句3 else if(表达式表达式m)语句语句m else 语句语句m+1如:如:if(a10)b=1;else if(a6)b=2;else if(a2)b=3;else b=4;条件表达式
11、 1 真 假 条件表达式 2 条件表达式 3 条件表达式 m 语句 m 语句 m+1 语句 1 语句 2 语句 3 真 真 真 假 假 假(4)if语句的嵌套语句的嵌套if(表达式表达式1)if(表达式表达式2)语句语句1 else 语句语句2else if(表达式表达式3)语句语句3 else 语句语句4使用使用if嵌套语句特别要注嵌套语句特别要注意意if和和else配对,配对,else总总是和最近的是和最近的if配对配对 2、switch语句语句 实际问题中,往往遇到以一个变量或表达式的值为判实际问题中,往往遇到以一个变量或表达式的值为判断条件,将此变量或表达式的值分成几段,每一段对应一断
12、条件,将此变量或表达式的值分成几段,每一段对应一种选择或操作,这种情况用种选择或操作,这种情况用if语句来嵌套非常麻烦,于是,语句来嵌套非常麻烦,于是,C51提供了提供了switch语句。语句。switch语句的一般结构如下:语句的一般结构如下:switch(表达式表达式)case 常量表达式常量表达式1:语句语句1,break;case 常量表达式常量表达式2:语句语句2,break;case 常量表达式常量表达式n:语句语句n,break;default:语句语句n+1,break;2.1.3 循环结构循环结构构成循环结构的主要有构成循环结构的主要有while、do-while和和for等
13、语句。等语句。1、while 循环语句循环语句while语句的一般表达形式为:语句的一般表达形式为:while(表达式表达式)语句语句当表达式的判断为当表达式的判断为“真真”时,执行大括号内的语句,否则不执行。时,执行大括号内的语句,否则不执行。循环体语句 条件表达式 真 假 2、do-while 循环语句循环语句 do-while语句是先执行循环体,然后判断循环条件是语句是先执行循环体,然后判断循环条件是否成立,其一般形式为:否成立,其一般形式为:do 语句语句 while(表达式表达式);循环体语句 真 假 循环条件表达式 分析程序:分析程序:P33 例例2.43、for 循环语句循环语句
14、for语句的一般形式为:语句的一般形式为:for(表达式表达式1;表达式;表达式2;表达式;表达式3)语句语句for循环语句的执行过程如下。循环语句的执行过程如下。(1)先求解表达式先求解表达式1。(2)求解表达式求解表达式2,如果结果为,如果结果为“真真”,即条件成立,则,即条件成立,则执行循环体语句;如果结果为执行循环体语句;如果结果为“假假”,转到第,转到第(5)步。步。(3)求解表达式求解表达式3。(4)转回第转回第(2)步。步。(5)退出退出for循环语句,执行下面的语句。循环语句,执行下面的语句。表达式表达式 3 表达式表达式 2 真 假 表达式表达式 1 循环体语句循环体语句【例
15、】流水灯的设计:在单片机的【例】流水灯的设计:在单片机的P1.0-P1.7上分上分别连接别连接8个发光二极管,编程实现个发光二极管,编程实现8个个LED灯循环灯循环点亮。点亮。程序如下:程序如下:#include#define uchar unsigned charvoid delay()/延时子程序延时子程序 uchar i,j;for(i=0;i110;i+);for(j=0;j200;j+)void main()uchar x,y;while(1)y=0 x01;for(x=0;x8;x+)P1=y;delay();y0;delaytime-)for(i=0;i=124;i+);void
16、 main()unsigned char light=0 xfe;unsigned char i;while(1)if(P3_0)=0)light=0 xfe;P1=light;for(i=0;i=7;i+)Delay(1000);if(P3_1)=0)break;light=1;P1=light;P1=0 xff;2.2 C51的运算符及表达式的运算符及表达式C51 C51 的运算符主要有:的运算符主要有:算术运算符、关系运算符、逻辑运算符、位运算术运算符、关系运算符、逻辑运算符、位运算符、赋值及复合赋值运算符。算符、赋值及复合赋值运算符。2.2.1.赋值运算符和赋值表达式赋值运算符和赋值表达式(1)赋值运算符)赋值运算符 “=”优先级较底,右结合性。优先级较底,右结合性。(2)赋值表达式)赋值表达式 一般形式:变量名一般形式:变量名=表达式表达式 赋值的类型转换规则:赋值的类型转换规则:在赋值运算中,当在赋值运算中,当“=”两侧类型不一致时,系统自动将右两侧类型不一致时,系统自动将右边表达式边表达式 的值转换成左侧变量的类型,再赋值给该变量。的值转换成左侧变量的类型,再赋值给该变量