补充:C51程序设计基础课件

上传人:我*** 文档编号:137834046 上传时间:2020-07-12 格式:PPT 页数:127 大小:1.54MB
返回 下载 相关 举报
补充:C51程序设计基础课件_第1页
第1页 / 共127页
补充:C51程序设计基础课件_第2页
第2页 / 共127页
补充:C51程序设计基础课件_第3页
第3页 / 共127页
补充:C51程序设计基础课件_第4页
第4页 / 共127页
补充:C51程序设计基础课件_第5页
第5页 / 共127页
点击查看更多>>
资源描述

《补充:C51程序设计基础课件》由会员分享,可在线阅读,更多相关《补充:C51程序设计基础课件(127页珍藏版)》请在金锄头文库上搜索。

1、1,C51程序设计基础,主要介绍了C51程序设计基础知识,包括C语言的数据类型、运算符、各种语句、数组与函数等知识,使大家具有单片机C语言程序设计的能力。,学习目的及要求:,2,*2.1 C51程序设计基础知识,*2.2 C51的函数与数组,3,*2.1 C51程序设计基础知识,2.1.1 C51特点,2.1.2 C51编程的例子,2.1.3 C51的标识符和保留字,2.1.4 C51的数据类型,2.1.5 C51的常量,2.1.6 变量,2.1.7 C51的常用运算符,2.1.8 C51的输入输出,2.1.9 C51的基本语句,4,2.1.1 C51特点,C51与ASM51相比,主要具有如下

2、特点:,1)编程调试灵活方便 2)生成的代码编译效率高 3)完全模块化 4)可移植性好 5)便于项目维护管理,5,C51语言与ANSI C的对比,C51与标准C语言对比 相同之处: 语法规则、程序结构、编程方法 差异之处: 数据结构(数据类型、存储模式)、中断处理 本章教学内容: C51的数据结构 C51编程实践与Keil C使用方法,6,7,2.1.2 C51编程的例子,【例2-1】 编程使接在P1.0引脚上的LED闪烁。,8,预处理命令-,函数说明-,全局变量定义-,主函数-,调用函数-,局部变量定义-,程序体,程序体-,9,2.1.2 C51编程的例子,1. 编译预处理部分,程序的第一行

3、是一个“文件包含”处理。程序中包含reg51.h文件的目的是为了要使用P1这个符号,即通知C51编译器,程序中所写的P1是指80C51单片机的P1端口而不是其他变量。 可根据不同的编程需要选择不同的头文件,一般情况下若只用简单控制,只需要下面3个头文件: #include /*寄存器说明头文件*/ #include /*输入/输出说明头文件*/ #include /*部分特殊指令说明头文件*/,10,2.1.2 C51编程的例子,在C语言里,如果直接写P1.0,C编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以需给它另起一个名字,这里使用了Keil C的关键字sbit来定义。,

4、2. 说明与定义部分,3. 函数,函数是C51程序的基本单位,一个C51程序至少有一个主函数main(),也可以由一个主函数main()和若干个其他函数构成。函数由函数说明部分和函数体两部分构成。,11,2.1.3 C51的标识符和保留字,标识符用于标识语句、数据类型、函数、变量、数组、存储方式等对象,也就是这些对象的名字。在C语言中,标识符严格区分大小写。在C51编译器中,支持标识符的前32位为有效标识,如果超长,则超长部分被舍弃。 注意:变量名只能由字母、数字、下划线组成,且只能由字母和下划线开头。变量不能是C语言的保留字(或称关键字),即不能使用C语言系统已经有固定含义的单词。,12,2

5、.1.3 C51的标识符和保留字,表2-1 C语言32个保留字,表2-2 C51扩展13个保留字,13,2.1.4 C51的数据类型,数据在计算机内存中的存放情况由数据结构决定。C语言的数据结构是由数据类型决定的,C51的数据类型分为基本数据类型和组合数据类型,组合数据类型是由基本数据类型构造而成的。组合数据类型有数组类型、结构体类型、共同体类型、枚举类型、指针类型和空类型。,14,2.1.4 C51的数据类型,15,float浮点型:,float型数据的长度为4字节,格式符合IEEE754标准的单精度浮点型数据,包含指数和尾数两部分,最高位为符号位,“1”表示负数,“0”表示正数,其次的8位

6、为阶码,最后的23位为尾数的有效数位,由于尾数的整数部分隐含为“1”,所以尾数的精度为24位。,2.1.4 C51的数据类型,16,2.1.4 C51的数据类型,* 指针型:,指针变量本身也是一个变量,在这个变量中存放的是指向另一个数据的地址。这个指针变量要占用一定的内存单元,对不同的处理器其长度不一样,在C51中它的长度一般为13个字节。,17,C51扩充数据类型:bit、sfr或sfr16、sbit,bit 型,关键词bit用于定义一个位变量,语法规则:,bit bit_name = 0或1;,例如:bit door = 0 ; /定义一个叫door的位变量且初值为0,注意:上述变量的物理

7、地址是由编译器分配的,18,sfr或sfr16型,关键词sfr或sfr16用于定义SFR字节地址变量,语法规则: sfr 或 sfr16 sfr_name = 字节地址常数;,51MCU中有21个SFR,如何定义与这些单元相关的变量?,19,例如,sfr P0 = 0 x80; /定义P0口地址80H sfr PCON = 0 x87; /定义PCON地址87H sfr16 DPTR=0 x82; /定义DPTR的低端地址82H,注意:SFR字节地址变量的物理地址是由MCU资源决定的,20,sbit型,部分SFR具有位地址,如何定义与这些位地址相关的变量?,两种位地址表达形式:绝对位地址、相对

8、位地址,21,1)将SFR的绝对位地址定义为位变量名 sbit bit_name = 位地址常数; 例如, sbit CY = 0 xD7;,3)将SFR的相对位位置定义位变量名 sbit bit_name = sfr_name 位位置; 例如, sbit CY = PSW7;,2)将SFR的相对位地址定义为位变量名 sbit bit_name = sfr字节地址 位位置; 例如, sbit CY = 0 xD07;,关键词sbit用于定义SFR位地址变量,三种定义形式:,采用这种方式定义的位地址或字节地址必须在80HFFH之间。,22,C51编译器在头文件“REG51.H”中定义了全部sfr

9、/sfr16和sbit变量。,用一条预处理命令#include 把这个头文件包含到C51程序中,无需重新定义即可直接使用它们的名称。,23,应用举例:,24,2.1.4 C51的数据类型,以上所述的数据类型中只有bit与unsigned char两种数据类型可以直接转换成机器指令。所以C语言中使用的其他数据类型,虽然语句上很简单,但都要C51编译器用一系列机器指令处理这些数据类型。特别是对浮点数,处理起来更加复杂,将明显增加程序的长度与执行时间。因此应该避免使用复杂的数据类型。在编制C51程序时,应该尽可能使用无符号字符变量和位变量。,25,2.1.5 C51的常量,常量是指在程序执行过程中其

10、值不能改变的量。在C51中支持整型常量、浮点型常量、字符型常量和字符串型常量。,整型常量也就是整型常数,根据其值范围在计算机中分配不同的字节数来存放。在C51中它可以表示成以下几种形式: (1) 十进制数。如123、-45、0等。 (2) 十六进制数。以0 x开头表示,如0 x12、-0 x3B等。,1整型常量,26,2浮点型常量,浮点型常量也就是实型常数。有十进制表示形式和指数表示形式。 十进制表示形式又称定点表示形式,由数字和小数点组成,如3.14159、0.36。 指数表示又称科学记数法,常用于表示较大、较小的实型常量,指数形式为: 数字 .数字 e 整数 如:6.021023,可表示成

11、6.02e+23或6.02e23。 -1.610-19,可表示成:-1.6e-19。,27,字符型常量是用单引号括起的字符,如2、A、n等。可以是可显示的ASCII字符,也可以是不可显示的控制字符。,3字符型常量,28,4字符串型常量,字符串型常量由一对双引号括起来的零个或多个字符组成,双引号仅起定界作用,本身并不是字符串中的内容。如“0123”、“Hello!”、“I am a student. ”、“”等。 注意:字符串常量与字符常量是不一样的,一个字符常量在计算机内只用一个字节存放,而一个字符串常量在内存中存放时不仅双引号内的每个字符占一个字节,而且系统会自动的在后面加一个转义字符“0”

12、作为字符串结束符。“0”代表空操作字符,它不引起任何操作,也不会显示到屏幕上。 如字符串student在内存中的存储形式如下:,29,5. 符号常量,#difine False 0 x0; /用预定义语句可以定义常量 #difine True 0 x1; /这里定义False为0,True为1 /在程序中用到False编译时自动用0替换,同理True替换为1 #difine PI 3.1415926;,C51允许将程序中的常量定义为一个标示符,称为符号常量。,30,2.1.6 变量,在程序执行过程中,数值可以发生改变的量称为变量。,变量名与存储单元地址相对应,变量值与存储单元的内容相对应。,例

13、如,在哈佛结构的存储空间中如何建立变量概念?,31,2.1.6 变量,【存储种类】数据类型【存储类型】 变量名,(标准C),(标准C),* 括号项可以缺省(但需有缺省值),C51变量定义的四要素:,(C51特有),(标准C+C51),32,【存储种类】数据类型【存储类型】变量名,共有四个说明符: 1、auto(自动型)变量的作用范围在定义它的函数体或语句块内。执行结束后,变量所占内存即被释放。 2、extern(外部型) 在一个源文件中被定义为外部型的变量,在其它源文件中需要通过extern说明方可使用。 3、static(静态型) 利用static可使变量定义所在的函数或语句块执行结束后,其

14、分配的内存单元继续保留。 4、register(寄存器型) 将变量对应的储存单元指定为通用寄存器,以提高程序运行速度。,缺省存储种类为auto (自动)型变量,33,在定义变量时,必须通过数据类型说明符指明变量的数据类型,指明变量在存储器中占用的字节数。,数据类型,unsigned int i, j, k ;,unsigned char x=100;,float a=3.1415926,34,存储类型,存储类型是用于指明变量所处的单片机的存储区域情况。存储类型与存储种类完全无关。,35,51单片机的 三个逻辑存储空间:,片内数据存储器,片外数据存储器和程序存储器。,36,建立C51存储类型与存

15、储空间的对应关系,37,38,(1)data区,data区的寻址是最快的,所以应该把经常使用的变量放在data区,但是data区的空间是有限的,data区除了包含程序变量外,还包含了堆栈和寄存器组。 data区声明中的存储类型标式符为data,通常指片内RAM的低128字节的内部数据存储的变量,可直接寻址。 声明举例如下: unsigned char data system_status=0; unsigned int data unit_id2; char data inp_string16;,39,(2)bdata,bdata实际是data中的位寻址区,在这个区中声明变量就可以进行位寻址。

16、位变量的声明对状态寄存器来说是十分有用的,因为它可能仅仅需要某一位,而不是整个字节。 以下是在bdata区中声明的位变量和使用位变量的例子:,40,unsigned char bdata status_byte; unsigned int bdata status_word; unsigned long bdata status_dword; sbit stat_flag=status_byte4; if(status_word15) stat_flag=1;,41,(3)idata区,idata区也可以存放使用比较频繁的变量,使用寄存器作为指针进行寻址。idata区声明中的存储类型标识符为idata,指内部的256字节的存储区,但是只能间接寻址,速度比直接寻址慢。,unsigned char idata system_status=0; unsi

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

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

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