单片机的程序设计课件

上传人:我*** 文档编号:141498397 上传时间:2020-08-09 格式:PPT 页数:57 大小:816.50KB
返回 下载 相关 举报
单片机的程序设计课件_第1页
第1页 / 共57页
单片机的程序设计课件_第2页
第2页 / 共57页
单片机的程序设计课件_第3页
第3页 / 共57页
单片机的程序设计课件_第4页
第4页 / 共57页
单片机的程序设计课件_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《单片机的程序设计课件》由会员分享,可在线阅读,更多相关《单片机的程序设计课件(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、编写程序代码并进行编译、运行 拓展:1、同时点亮几盏LED灯 2、设计流水灯,程序代码,#include main() P1=0 xF7; ,请用C语言编写程序计算234+78的和,main( ) int a, b, c; a =

2、 234; b = 78; c = a+b; printf(“234+78=%d”, c); ,1. C51语言,C语言编译调试工具效率高,数据类型及运算符丰富,经过不断完善,能满足单片机的开发要求,形成了单片机C语言。把51单片机C语言称为C51语言。 用C51编写单片机程序时,需要根据单片机存储结构及内部资源定义相应的数据类型和变量,而标准的C语言不需要考虑这些问题。另外,C51包含的数据类型、变量存储模式、输入输出处理、函数等方面与标准的C语言也有一定的区别。其他的语法规则、程序结构及程序设计方法则与标准的C语言相同。,C51语言的特点,编程者不需要了解单片机的指令系统,仅要求对单片机的

3、存储器结构有初步的了解,至于存储器的分配、寻址方式及数据类型等完全由编译器管理。 程序有规范化的结构,可以分为不同的函数,这种方式可以使程序结构化,将可变的选择与特殊操作组合在一起,增强程序的可读性。 编程和程序的调试时间显著缩短,从而提高了编程的效率,提供的库函数包含许多标准的子程序,具有较强的数据处理能力,可以将编好的程序很容易地移植到新程序。 C51作为一种非常方便的语言得到了广泛的支持,目前已经成为单片机开发的主要编程语言。,2. 简单的C51程序,【例】 如下图所示,在P1.0口上接有一个LED发光二极管,要求让发光二极管发光。,#include sbit P1_0=P10; voi

4、d main( ) P1_0=0; ,程序如下:,程序的开始是一个文件包含处理。这段程序中包含的是reg51.h文件,以.h为后缀的称为头文件,该头文件的作用是把特殊功能寄存器中的符号和地址对应起来,这里主要是应用到P1这个符号,如果没有包含reg51.h文件,C51编译器不知道P1具体指什么,在编译过程中就会发生错误。,给P1.0取名为P1_0,是通过编译器中增加的关键字sbit来定义的,程序最后是主函数,每一个C51程序有且只有一个主函数,函数后面使用一对大括号“”,在“”中书写具体内容。,(1) 一个C51程序从main函数开始执行,不管main函数在什么位置。,(2) C51中字母区分

5、大小写,如定义是sbit P1_0,若后面写成p1_0,在编译时就会出现错误。,(3) C51书写自由,一行可以写几个语句,一个语句也能写在几行上。,(4) 每个语句必须以分号结束。,(5) C51中的注释可以采用两种符号。第一种是“/*/”符号,从“/*”开始直到“*/”为止,中间的内容都是注释。第二种是“/”引导的注释语句,这种注释只对本行有效。,由此可见:,2.1 C语言的程序结构,在结构上可以把C51程序分为3类,即顺序结构、选择结构和循环结构。,2.1.1 顺序结构 顺序结构是一种最基本、最简单的编程结构,在这种结构下,程序按低地址向高地址顺序逐条执行指令代码,如右图所示。,请用C语

6、言编写程序计算234+78的和,main( ) int a, b, c; a = 234; b = 78; 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;,例2.1 单片机的P1.0接一小灯,P1.1接一开关,当开关闭合时,小灯亮;当开关断开时,小灯灭。请画出硬件电路图,

7、并写出程序代码。 #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;,(4) if语句的嵌套,if(表达式1) if (表达式2) 语句1 else 语句2 else if (表达式3) 语句3 else 语句4,使用if嵌套语句特别要注

8、意if和else配对,else总是和最近的if配对,2、switch语句,实际问题中,往往遇到以一个变量或表达式的值为判断条件,将此变量或表达式的值分成几段,每一段对应一种选择或操作,这种情况用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等语句。,1、while

9、 循环语句,while语句的一般表达形式为: while (表达式) 语句 当表达式的判断为“真”时,执行大括号内的语句,否则不执行。,2、do-while 循环语句,do-while语句是先执行循环体,然后判断循环条件是 否成立,其一般形式为: do 语句 while(表达式);,分析程序:P33 例2.4,3、for 循环语句,for语句的一般形式为:,for(表达式1;表达式2;表达式3) 语句,for循环语句的执行过程如下。 (1)先求解表达式1。 (2)求解表达式2,如果结果为“真”,即条件成立,则执行循环体语句;如果结果为“假”,转到第(5)步。 (3)求解表达式3。 (4)转回第

10、(2)步。 (5)退出for循环语句,执行下面的语句。,【例】流水灯的设计:在单片机的P1.0-P1.7上分别连接8个发光二极管,编程实现8个LED灯循环点亮。,程序如下: #include #define uchar unsigned char void 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( ); y=1; ,4、break语句和continue语句

11、,在一个循环语句中,可以通过判断条件来退出循环,也可以通过break语句来强制退出循环。 continue语句用于结束本次循环,即跳过循环体下面的语句,而直接进行下一次是否循环的判断。,【例】 单片机的P3.0接开关K1,P3.0接开关K2,要求按下K1后,则从D1开始依次点亮,至D8后停止并全部熄灭;待再次按下K1,重复上面过程;如果中间K2被按下,则灯立即全部熄灭,并返回初始状态。,#include regx51.h void Delay( unsigned int delaytime)/ 延时子程序 unsigned char i; for( ; delaytime0;delaytime

12、-) for( i=0; i=124; i+); ,void 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 的运算符主要有: 算术运算符、关系运算符、逻辑运算符、位运算符、赋值及复合赋值运算符。,2.2.1.赋值运算符和赋值表达式 (1)赋值运算符 “=

13、” 优先级较底,右结合性。 (2)赋值表达式 一般形式:变量名=表达式 赋值的类型转换规则: 在赋值运算中,当“=”两侧类型不一致时,系统自动将右边表达式 的值转换成左侧变量的类型,再赋值给该变量。 如:x=1+9; x=y=5;,2.2.2 算术运算符和算术表达式,(1) 基本的算术运算符 + - * / % (模运算或取余运算符) 注:1. 都是双目运算符,即需要两个操作数 2 . 对/,若两个整数相除,结果为整数(取整) 3 . 对于%,要求%两侧的操作数均为整型数据,所得结果的符号与左侧操作数符号相同。 如: 7/5=1 , 5/7=0 -93%23=-1 93%-23=1,(2)自增

14、,自减运算符 + +自增 - -自减 注:1、+ +和- -是单目运算符 2、+ +和- -只能用于变量,不能用与常量和表达式。 3、+ +j 先自增,再使用 j+ + 先使用,后自增 如:a=2 b=+a 后 b=3 a= 3 b=a+ 后 b=2 a=3,2.2.3 关系运算符和关系表达式 (1)关系运算符及优先级 ,=,=,!= 前四个优先级相同,后两个优先级相同,前四个优先级高于后两个。 注:在优先级上 算术运算符关系运算符赋值运算符,(2)关系表达式 用关系运算符将两个表达式连接起来的表达式称为关系表达式,关系表达式的值为逻辑值,真和假,1代表真,0代表假。 ab a=4 b=3 关

15、系表达式为真 ,值为1,2.2.4 逻辑运算符和逻辑表达式 (1)逻辑运算符及其优先级 b=a; a值不变, b=0 x65 (5)位左移运算符(左移1位相当与乘2) 如:unsigned char a=15 a=a1 00001111 a=a1左移1位 a=30 a=a2左移2位 a=60,(6)位右移运算 (右移1位相当于除2) int a=15 : a=a2 后a=3 注:1、左移运算中高位移出舍弃不用,低位补0 2、右移运算中低位移出舍弃不用,高位对 无符号数补0,对有符号数高位补符号位。,2.2.6 复合赋值运算符 赋值号前加上其他运算符构成复合赋值运算符,c51提供了下列十个复合赋值运算符 +=,一=,*=,/=,%=, /通过查表来显示对应数字1,2,3,4 void disp(int n) P2_4=0; /数码管控制位使能 P0 = tabn; /查表来显示数字 main() char answer = 1; /抢答标志使能 P2_4=1; /数码管控制位无显示 P2_0=1; P2_

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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