单片机应用技术(C语言) 教学课件 ppt 作者 汤宇 课题三

上传人:E**** 文档编号:89480214 上传时间:2019-05-25 格式:PPT 页数:66 大小:1.28MB
返回 下载 相关 举报
单片机应用技术(C语言) 教学课件 ppt 作者 汤宇 课题三_第1页
第1页 / 共66页
单片机应用技术(C语言) 教学课件 ppt 作者 汤宇 课题三_第2页
第2页 / 共66页
单片机应用技术(C语言) 教学课件 ppt 作者 汤宇 课题三_第3页
第3页 / 共66页
单片机应用技术(C语言) 教学课件 ppt 作者 汤宇 课题三_第4页
第4页 / 共66页
单片机应用技术(C语言) 教学课件 ppt 作者 汤宇 课题三_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《单片机应用技术(C语言) 教学课件 ppt 作者 汤宇 课题三》由会员分享,可在线阅读,更多相关《单片机应用技术(C语言) 教学课件 ppt 作者 汤宇 课题三(66页珍藏版)》请在金锄头文库上搜索。

1、任务1 C51程序结构及内部单元赋值操作,任务2 C51运算符的应用,任务3 选择语句的应用,任务4 循环语句的应用,任务5 指针的定义及引用,任务1 C51程序结构及内部单元赋值操作,1了解C51程序的基本结构。,2掌握C51语言的数据类型 。,3利用绝对地址方式访问片内RAM存储单元 。,在单片机内部,运行时的程序及数据均存放在存储器中,运行过程中对内存单元的数据操作较为频繁。本任务主要练习如何手动修改单片机内部RAM单元的内容。如对单片机内部RAM存储空间地址为0x30的单元进行赋值运算操作。,一、C51程序基本结构,/*点亮单片机P1.0口发光二极管.C*/ #include /包含头

2、文件 sbit LED=P10; /位定义单片机 /的P1.0口 void main( ) /主函数 LED=0; / 点亮P1.0口LED ,预处理命令 main( ) 语句1; / 语句注释 语句2; ,1预处理命令,主要包括文件包含(include)、宏定义(define)和条件编译(ifndef)。程序中的“#include ”代码表示在该程序中调用了AT89系列单片机的头文件。常用的还有“#include ”、“#include ”。这个文件中定义了AT89系列单片机内部的特殊功能寄存器(SFR)的所有端口。,文件的调用一般位于程序的开头,常见的调用表示方法有两种: (1)#incl

3、ude (2)#include “AT89X51.h”,2main主函数,一个C程序中有且只有一个main主函数,它是函数的入口。main函数可以调用其他的功能函数,但其他功能函数不能调用main函数。函数后面一定要有一对大括号“ ”,程序就写在大括号里面。 main前面的“void”表示“空”,即当main函数执行完后,不返回任何值,编程时可省略不写。main后面的“()”中没有写任何参数,表示了main函数和其他函数间没有任何的参数传递。但后面的“()”必须有,不能省略。,3语句,语句是构造函数的主体部分,C程序中的语句大致分为两类:一类为说明语句,用来描述数据,决定内存的分配;另一类为执

4、行语句,用来描述对数据进行的动作,决定内存的内容。,C51程序没有行号,书写格式自由,一行内可以书写多条语句,一条语句也可分写在多行上,但为了区分程序中不同结构层次的语句,通常要求在同一结构层次上的语句,在行中缩进相同的字数。并且每条语句最后必须以一个分号“ ;”结尾,因为分号是语句的必要组成部分。,4注释,在C51程序中,为了增加程序的可读性,通常使用 “ / ”或一对“ /*/ ”对程序中的某些地方作必要注释。前者只能注释一行内容,后者则可以注释多行内容。,注释只是为了方便用户编写和阅读程序,其自身在编译时不参与编译。同时还经常利用 “ / ” 或 “ /*/ ” 屏蔽程序中的某些语句来调

5、试程序。,二、标识符与关键字,1标识符,指用来表示源程序中自定义对象名称的符号,可以是常量、变量、数组、结构、语句标号以及函数等。在C51中,标识符只能由字母(az,AZ)、数字(09)和下划线“_”组成,并且第一个字符必须是字母或者下划线。,在C51程序中,标识符区分大小写,如“max”和“MAX”表示两个完全不同的标识符。用户自定义的标识符不能与系统保留的关键字重复。,关键字是C51编译器保留的一些特殊标识符,具有特定的含义和用法。单片机C51程序语言继承了ANSI C标准定义的关键字共32个,如auto、double、int、break、else、switch、case等。,2关键字,s

6、fr P0=0x80; /*定义地址为“0x80”的特殊功能寄存器命名为“P0”。对P0口的操作也就是对地址为“0x80”的特殊功能寄存器操作*/ sbit LED=P20; /*位定义LED为单片机的P2.0端口,对LED操作也即对P2.0端口操作*/,同时结合单片机硬件的特点扩充了一些关键字,如sfr、sbit。,三、常量与变量,在程序运行过程中,数值不能被改变的量称为常量,可以为字符、十进制数或十六进制数;数值能被改变的量称为变量。,例已知符号常量“PI”,它的值为3.1415926,求任意圆的周长和面积。 #define PI 3.1415926 /*宏定义符号常量PI=3.14159

7、6*/ main( ) float r, c, s; / 定义三个实型变量分别为r、c、s c = 2*PI*r; / 圆的周长公式 s = PI*r*r; / 圆的面积公式 ,四、Keil C51支持的数据类型,(续表),一、程序设计,C51数据的存储类型与51单片机实际存储空间的对应关系:,在C51编译器中提供了一组宏定义对51单片机的code、data、pdata和xdata空间进行绝对寻址。并且规定只能以无符号数方式访问,定义了8个宏,其函数原型如下:,#define CBYTE(unsigned char volatile*)0x50000L) #define DBYTE(unsig

8、ned char volatile*)0x40000L) #define PBYTE(unsigned char volatile*)0x30000L) #define XBYTE(unsigned char volatile*)0x20000L) #define CWORD(unsigned int volatile*)0x50000L) #define DWORD(unsigned int volatile*)0x40000L) #define PWORD(unsigned int volatile*)0x30000L) #define XWORD(unsigned int volatil

9、e*)0x20000L),上述函数原型放在absacc.h文件中,使用时只需用预处理命令将其包含到源程序的文件中,即#include 。如对单片机片内RAM的0x30单元进行操作,可使用DBYTE以字节形式对data区寻址,即0x30的绝对地址为DBYTE0x30。接下来向单片机内存单元的赋值操作,可借助Keil C51编译器所支持的无符号字符变量进行操作。,unsigned char data30 = 0x15; / 将十六进制数15赋值给无 /符号字符变量data30 DBYTE0x30 = data30; / 将data30中的值(0x15)传送到 /片内RAM的30H单元,根据上述任务

10、分析编写完整的程序:,二、编写程序并录入,三、调试运行,编译无误后单击调试按钮,将自动弹出“debug”工具栏和存储器观察窗口。通过在存储器观察窗口地址栏内输入“字母:数字”即可显示相应单元值。其中字母代表的意义如下表所示。数字代表所要查看相应单元中的地址,可以为十进制数也可以为十六进制数。,在地址栏后的文本框内输入“D:0x30”,然后单击运行“ ”按钮,则程序进入运行状态,再单击停止“ ”按钮,程序执行结束,即可观察到地址为0x30开始的片内RAM新的单元值,如下图所示。,单击此处返回目录,任务2 C51运算符的应用,1了解C51的运算符、表达式及其规则。,2掌握每一种算术运算符对数据操作

11、的具体功能。,3能够完成计算梯形面积程序的设计与调试。,51系列单片机为单芯片微控制器(简称MCU),内部有具有数据运算处理能力的CPU。本任务主要利用C51中的算术运算符,计算下图所示梯形的面积(已知梯形的上底长为a,下底长为b,高是h),并通过串行窗口输出显示出来。,一、算术运算符,在运算过程中,当只用作加1和减1运算时,可以采用自增和自减运算符:,二、关系运算符,三、逻辑运算符,关系运算符和逻辑运算符通常用来判别某个条件是否满足,其运算结果只有“0”和“1”两种值。即当所指定的条件满足时结果为“1”,否则为“0”。,四、位运算符,(续表),逻辑与是判断“&”两侧的表达式是否都为真,都为真

12、则此逻辑与表达式值为真;按位与是将“&”两侧的数用二进制展开,每一位都求与运算(有0出0,全1出1),最后得到的二进制数即为结果。逻辑与结果只讲真和假,而按位与得出的仍然是一个二进制数。,五、复合赋值运算符,(续表),六、条件运算符,一般形式如下:,逻辑表达式?表达式1:表达式2,例当a=10,b=12时,求a、b中最大值。 其条件表达式: max = ( ab ) ? a : b,一、程序设计,梯形面积的计算主要分为三步:a+b;(a+b)h;(a+b)h2。根据C51中提供的算术运算符,则梯形的面积表达式为:,S=(a+b)* h / 2,为了保证梯形面积计算结果的准确,程序中应定义梯形上

13、底长a、下底长b、高h和梯形面积值S均为浮点型变量。,二、编写程序并录入,根据上述任务分析编写完整的程序:,三、调试运行,1载入源文件,编译无误后单击调试按钮,自动弹出“debug”工具栏和存储器观察窗口。为了查看程序的运行结果,单击“ ”按钮,弹出“serial #1”的串行窗口。,2单击运行按钮“ ”,按提示输入相应的值再分别按下回车键,则在串行窗口中即可显示出单片机计算后的梯形面积值。运行中可进行多次数据输入并计算,如图所示。,单击此处返回目录,任务3 选择语句的应用,1了解C51程序中选择结构的构建。,2了解if、switch/case语句的功能。,3能够完成学生成绩等级划分程序的设计

14、与调试。,将某校学生成绩划分为A、B、C、D、E五个等级,见下表。同时,要求根据不同的分数打印出其相应等级。,一、条件语句 if,1if (条件表达式) 语句 当条件表达式的结果为真时,就执行语句,否则就跳过。,例: if (a=b) a+; / 当a等于b时,a 就加 1,2if (条件表达式) 语句1 else 语句2 当条件表达式成立时,就执行语句 1,否则就执行语句 2 。,例: if (a=b) a+; /当 a等于b时, a 加1 else a - -; /当 a不等于b时,a 减1,3if (条件表达式1) 语句 1 else if (条件表达式 2) 语句 2 else if

15、(条件表达式 3) 语句 3 else if (条件表达式 m) 语句 m else 语句n,条件语句常用来实现多方向条件分支。使用时if 和else要配对使用,且else总是与最临近的 if 相配对,要是少了一个就会出现语法错误。,二、开关语句 switch/case,switch (表达式) case 常量表达式 1: 语句1; /如果常量表达式1满足,则执行语句1 break; /执行完语句1后,使用break跳出switch /结构 case 常量表达式 2: 语句2; break; case 常量表达式 n: 语句n; break; /如果常量表达式n满足,则执行语句n后并跳出 default: 语句n+1; /默认情况下(以上条件都不满足时), /执行语句(n+1) ,case后常量表达式的值必须是整型或字符型,且互不相同。每个case语句后面可以有“break”,也可以没有。有break语句,执行到break则退出switch结构;没有break语句,则会导致其后多条case语句连续执行,直到遇到break结束。,开关语句也是一种用来实现多方向条件分支的语句。虽然采用条件语句也可以实现多方向条件

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

当前位置:首页 > 高等教育 > 大学课件

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