单片机应用技术(C语言版)第4章C51程序设计入课件_第1页
单片机应用技术(C语言版)第4章C51程序设计入课件_第2页
单片机应用技术(C语言版)第4章C51程序设计入课件_第3页
单片机应用技术(C语言版)第4章C51程序设计入课件_第4页
单片机应用技术(C语言版)第4章C51程序设计入课件_第5页
已阅读5页,还剩161页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

04.01.20231单片机应用技术

(语言版)

第章程序设计入门

27.12.20221单片机应用技术

(语言版)

第04.01.20232第章单片机语言及程序设计

的基本数据类型变量的存储区域的运算符数组

指针结构程序设计函数的定义与调用目录27.12.20222第章单片机语言及程序设计的基本04.01.20233

本章内容完全是结合单片机来讲解,也就是补充语言在单片机方面的概念、数据定义和函数定义等。 通过本章学习,使读者能够比较顺利地编写程序。27.12.20223本章内容完全是结合单片机来04.01.20234“”概念:把“单片机语言”称为“”,也称为“

”。用编写单片机程序,与用编写程序的不同之处是,需要根据单片机存储器结构及内部资源,定义相应的数据类型和变量。其它的语法规定、程序结构及程序设计方法,都与相同。、概述27.12.20224“”概念:把“单片机语言”04.01.20235、语言编程的优势

在编程方面,使用较汇编语言有诸多优势: )编程容易 )容易实现复杂的数值计算 )容易阅读与交流 )容易调试与维护程序 )容易实现模块化开发 )程序可移植性好27.12.20225、语言编程的优势 在编程方面04.01.20236

用汇编语言编写程序时,必须考虑其存储器的结构,尤其要考虑其片内数据存储器、特殊功能寄存器是否正确合理的使用,以及按照实际地址端口数据的处理。

27.12.20226 用汇编语言编写程序时,必须考虑其存04.01.20237、扩展的关键字

由于单片机在结构及编程上的特殊要求,有自己的特殊关键字,称之为扩展的关键字,下面给出常用的扩展的关键字。

这些关键字在后面会陆续接触到,此处先不给出它们的含义。27.12.20227、扩展的关键字 由于单片机在结04.01.20238

基本数据类型、数据类型:数据的不同格式。、数据类型分类:基本型(表)、构造类型(数组、结构体、共同体、枚举)、指针类型和空类型27.12.20228基本数据类型、数据类型:数据的不同04.01.20239

在计算机中不能随意给一个变量赋任意的值,因为变量在单片机的内存中要占空间的,变量不同,所占的空间不同。为了合理利用单片机的内存空间,在编程时要设定合适的数据类型。27.12.20229在计算机中不能随意给一个变量04.01.20231027.12.20221004.01.202311补充:特殊功能寄存器与位变量的定义()主要内容、位特殊功能寄存器的定义、位特殊功能寄存器的定义、型位变量的定义、型位变量的定义27.12.202211补充:特殊功能寄存器与位变量的定义04.01.202312、位特殊功能寄存器的定义 定义的一般格式为: 特殊功能寄存器名=地址常数 地址常数范围:~。 特殊功能寄存器定义例子(见、等文件): ; 定义寄存器 ; 定义口寄存器 ; 定义 ; 定义27.12.202212、位特殊功能寄存器的定义 定04.01.202313、位特殊功能寄存器的定义

定义的一般格式为: 特殊功能寄存器名=地址常数 地址常数范围:~。 例如(见、等文件):

; ; 含和27.12.202213、位特殊功能寄存器的定义 定04.01.202314 几点说明: )定义特殊功能寄存器中的地址必须在~范围内。 )定义特殊功能寄存器,必须放在函数外面作为全局变量。 )用或每次只能定义一个特殊功能寄存器。 )用或定义的是绝对定位的变量(因为名字是与确定地址对应的),具有特定的意义,在应用时不能像一般变量那样随便使用。27.12.202214 几点说明:04.01.202315、型位变量的定义

特殊功能寄存器的位声明一般格式为: 位变量名=位地址表达式 这里的位地址表达式有三种形式: 直接位地址 特殊功能寄存器名带位号 字节地址带位号27.12.202215、型位变量的定义 特殊功能寄存04.01.202316

、用直接位地址定义位变量 定义特殊功能寄存器的位。例如:

; ; ; 定义的第位

; 定义的第位27.12.202216 、用直接位地址定义位变量04.01.202317

、特殊功能寄存器名带位号定义 定义格式为: 位变量名=特殊功能寄存器名^位号常数 这里的位号常数为~。例如:

^; ^; ^; 定义的第位

^; 定义的第位27.12.202217 、特殊功能寄存器名带位号定义04.01.202318

、寄存器地址带位号定义位变量 定义格式为: 位变量名=特殊功能寄存器地址^位号常数 这里的位号常数同上,为~。例如:

^; ^; ^; 定义的第位

^; 定义的第位27.12.202218 、寄存器地址带位号定义位变量04.01.202319 、几点说明 )用定义的位变量,必须能够按位操作,而不能够对无位操作功能的位定义位变量。 )用定义位变量,必须放在函数外面作为全局位变量,而不能在函数内部定义。 )用每次只能定义一个位变量。 )用定义的是一种绝对定位的位变量(因为名字是与确定位地址对应的),具有特定的意义,不能随便使用。27.12.202219 、几点说明04.01.202320、型位变量的定义 常说的位变量指的就是型位变量。的型位变量定义的一般格式为: [存储类型] 位变量名[初值][,位变量名[初值]][,…] 位变量被保存在中的位寻址区域 例如: ; ;27.12.202220、型位变量的定义 常说的位变量04.01.202321 数据类型转换() )自动转换 把赋值号右边的类型转换成左边的类型。 :实型赋予整型 :整型赋予实型 :字符型赋予整型 :整型赋予字符型

27.12.202221 数据类型转换()04.01.202322)强制转换 像一样,通过强制类型转换的方式进行转换。如:

; ; ();27.12.202222)强制转换04.01.202323

变量存储区域、变量的定义、变量的存储类型、变量的存储区域、变量定义举例、变量的存储模式27.12.202223变量存储区域、变量的定义04.01.202324、变量的定义 变量定义的一般格式为: [存储类型] 数据类型 [存储区域]变量名[初值][,变量名[初值]][,…]或 [存储类型] [存储区域] 数据类型变量名[初值][,变量名[初值]][,…] ; 27.12.202224、变量的定义 变量定义的一般格04.01.202325、变量的存储类型

按照,语言的变量有种存储类型:() 动态存储() 静态存储() 全局存储() 寄存器存储()27.12.202225、变量的存储类型 04.01.202326

()动态变量 动态(存储)变量:用定义的为动态变量,也叫自动变量。 作用范围:在定义它的函数内或复合语句内部。执行时,分配存储空间,结束时释放存储空间。 定义变量时,可以省略27.12.202226 ()动态变量04.01.202327

()静态变量 静态(存储)变量:用定义的为静态变量。函数退出时,变量的值不消失。分为静态局部和静态全局变量。 静态局部变量:在函数体内定义 静态全局变量:在函数体外部定义若非必要,不要多用静态变量27.12.202227 ()静态变量04.01.202328

()外部变量 外部(存储)变量:用声明的变量为外部变量,是在其它文件定义过的全局变量。 用声明后,便可以在所声明的文件中使用。

27.12.202228 ()外部变量04.01.202329

补充:函数的定义:函数功能的确立,包括制定函数名、函数值类型、形参及其类型、函数体等,是一个完整的、独立的函数单位。 函数的声明:把函数的名字、函数类型以及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。27.12.202229 补充:04.01.202330<>(){ ()对被调函数的声明

;定义外部变量

(“\”());}()定义子函数{ ; >; ();}27.12.202230<>04.01.202331

()寄存器变量 寄存器(存储)变量:用定义的变量为寄存器变量。 寄存器变量存放在的寄存器中,这种变量处理速度快,但数目少。 中的寄存器变量:的编译器在编译时,能够自动识别程序中使用频率高的变量,并将其安排为寄存器变量,用户不用专门声明,对无实际意义。27.12.202231 ()寄存器变量04.01.202332、变量的存储区域()

变量的存储区属性是单片机扩展的概念,非常重要,它涉及到个新的关键字。 单片机有四个存储空间,分成三类,它们是片内、片外和。

27.12.202232、变量的存储区域() 变量的存04.01.20233327.12.20223304.01.202334、变量定义举例 )定义存储在区域的动态变量: ,,; )定义存储在区域的静态变量:; )定义存储在区域的静态变量: ; 27.12.202234、变量定义举例 )定义存储在区04.01.202335 )定义存储在区域的动态变量: ,;

)定义存储在区域的动态数组: []; )定义在区域的动态有符号数组: [];

27.12.202235 )定义存储在区域的动态变量:04.01.202336 )定义存储在区域的动态数组: []; )定义存储在区域的数组: [] {,,,,, }; 定义共阴极数码管段码数组27.12.202236 )定义存储在区域的动态数组:04.01.202337、变量的存储模式() 存储模式:如果在定义变量时缺省了存储区,则编译器会自动选择默认的存储区域,也就是存储模式。 存储模式分为三种:小模式()、紧凑模式()和大模式()。编译模式由编译控制命令决定。 存储模式(编译模式)决定了变量的默认存储区域和参数的传递方法。27.12.202237、变量的存储模式() 存储模式04.01.202338 ()模式 在模式下,变量的默认存储区域是“”、“”,并且堆栈也安排在该区域中。 模式的特点:存储容量小,但速度快。默认存储模式:如果文件或函数未指明存储模式,则编译器按模式处理。27.12.202238 ()模式04.01.202339()模式 在模式下,变量的默认存储区域是“”,最大变量数为字节,并且堆栈也安排在该区域中。 模式的其特点:是存储容量较模式大,速度较模式稍慢,但比模式要快。27.12.202239()模式04.01.202340 ()模式 在模式下,变量的默认存储区域是“”,最大变量数可达。 模式的特点:存储容量大,速度慢27.12.202240 ()模式04.01.202341

默认存储模式:如果文件或函数未指明存储模式,则编译器按模式处理。 存储模式控制命令:“

(或、)”应放在文件的开始。27.12.202241 04.01.202342

的运算符27.12.202242的运算符04.01.202343思考题:???27.12.202243思考题:04.01.202344思考题:;;;;例:;;求:();后,,值是多少?();后,,值是多少?27.12.202244思考题:04.01.202345??27.12.202245?04.01.20234627.12.20224604.01.202347复合运算符:

;*;

复合运算的表达方式有利于提高编译效率,产生质量较高的目标代码。但可读性相对较差。27.12.202247复合运算符:复合运算的表04.01.202348

数组、数组:同一类型变量的有序组合。注:数组和普通变量一样,要先定义再使用。、定义方式:数据类型数组名[常量表达式][];

一维数组27.12.202248数组、数组:同一类型变量的有序组04.01.202349、赋值方式:数据类型[存储区域]数组名[常量表达式]{常量表达式};[]{};[]{ , , , };27.12.202249、赋值方式:04.01.202350

字符数组、字符数组:基本类型为字符类型的数组。用来存放字符的。、定义:方法同一般数组。如:[]{‘’,’’,’’,’’,’’};(<)(“”[]);27.12.202250字符数组、字符数组:基本类型为字04.01.202351、字符串:在语言中,将字符串作为字符数组来处理的。

用字符串常量来使字符数组初始化:

[]{“”};或:[]“”;问:在内存中怎么存储的?27.12.202251、字符串:在语言中,将字符串作为字符04.01.202352

注:语言规定以’\’作为字符串结束的标志,在程序中依靠检测的位置来判定字符串是否结束。

[]{“”}; ; ([]‘\’) { ([]); ; }27.12.202252注:语言规定以’\’作为字符04.01.202353

指针主要内容指针概念指针变量的定义、赋值与引用的指针类型27.12.202253指针主要内容04.01.202354指针:对于一个存储单元来讲,单元的地址即为指针。指针变量:存放指针的变量,用来指向另一个变量。区别:一个指针是指一个地址,是一个常量;一个指针变量可以被赋予不同的指针(地址),是一个变量。

指针概念27.12.202254指针:对于一个存储单元来讲,单元的地04.01.202355

指针的定义、赋值与引用、定义其格式为:

[存储类型]数据类型*指针名[,*指针名][,…]例如:*;定义了一个指针变量,它所指向的是一个字符型的数据。或定义为指向字符型变量的指针变量

指针说明符27.12.202255 指针的定义、赋值与引用指针说明04.01.202356、赋值(指针变量使用前必须赋值)指针变量只能赋予地址。;*;(*;;)27.12.202256、赋值(指针变量使用前必须赋值)04.01.202357、指针变量的引用注意:指针变量的定义和引用中*的意义不同!!在指针变量定义中:*是类型说明符,说明其后的变量是指针类型在指针变量的引用中:*是运算符,(取内容)*,;*;27.12.202257、指针变量的引用04.01.202358

的程序设计程序结构常用C51的头文件:reg51.h(定义特殊功能寄存器等);math.h(数学函数);

ctype.h(字符函数);

stdio.h(一般IO函数);

stdlib.h(标准函数);

absacc.h(绝对地址访问);

string.h(串函数)…….(){

局部变量定义

<程序体>}……(){

局部变量定义

<程序体>}(){

局部变量定义

<程序体>}包含<头文件>函数声明全局变量、参数定义27.12.202258的程序设计常用C51的头文件:04.01.202359<>^;定义中引脚的“位”

^;^;();毫秒延时函数

()主程序

{()非为真,此为无限循环

{;();;();;();}}

()毫秒延时函数{;()非,为真,即时退出循环

{(<){;}}}包含文件全程变量、参数定义函数声明主函数子函数27.12.202259<>包含文件主函数子函数04.01.202360

流程控制.选择语句(表达式){语句;}例:(!)

{;}(条件表达式){语句;}

{语句;}例:(){;}

{;}当等于时,,否则

(表达式)

{语句;}

(表达式)

{语句;}

(表达式)

{语句;}……

(表达式)

{语句;}

{语句;}注:语句中为单一语句,可以不用花括弧。27.12.202260流程控制.选择语句(表达式)例04.01.202361(表达式){()语句;()语句;}

{()语句;()语句;}嵌套27.12.202261(表达式)嵌套04.01.202362() { ; () ; }举例:27.12.202262()举例:04.01.202363(表达式){

常量表达式:{语句;};

常量表达式:{语句;};

常量表达式:{语句;};……

常量表达式:{语句;};:{语句;}}.语句也不是必须的27.12.202263(表达式).语句也不是必须的04.01.202364.语句(条件表达式真){

语句;}(){

;}先判断后循环例非零为真27.12.202264.语句(条件表达式真)()先判断04.01.202365补充:()

(){;}无限循环()

(){...;}退出大循环()...()停止(等待)27.12.202265补充:04.01.202366

{

语句;}(条件表达式真);,;{;;}(<)先循环后判断例27.12.202266,;先循环例04.01.202367语句([初值设定表达式];[循环条件表达式];[条件更新表达式]){

循环语句;}例:,;(;<;){;}27.12.202267语句([初值设定表达式];[循环04.01.202368补充:嵌套(;;){ (;;){;}}延时

;(>){ (>);}外层是多少,延时大约多少27.12.202268补充:延时外层是多少,延时大约多少04.01.202369本课程不是专门学习语言的课程,相关语言的系统知识请同学们自行复(学)习。27.12.202269本课程不是专门学习语言的课程,04.01.202370

函数的定义与调用主要内容函数中调用汇编预处理命令头文件27.12.202270函数的定义与调用主要内容04.01.202371

函数定义的一般格式如下: 函数类型函数名(形参表)

{

局部变量定义 执行语句

}27.12.202271 函数定义的一般格式如下:04.01.202372延时若干的子函数:

(){ ; (>) (>);}子函数的调用:();27.12.202272延时若干的子函数:04.01.202373主函数:

(){

}27.12.202273主函数:04.01.202374注:、{}里也可以什么不写,为空函数。、调用函数时,多个参数要用逗号隔开,且每个实参的类型、位置与形参一一对应。、调用的函数是无参函数时,后面的括号不能省。、带参数的函数声明时,必须将参数类型写上,类型后面的变量名可有可无。、主函数不能被其他函数调用。27.12.202274注:04.01.202375

预处理命令预处理:在进行编译的第一遍扫描之前所做的工作。()宏定义:

()**

27.12.202275预处理命令预处理:在进行编译的第04.01.202376注:、宏名一般用大写字母表示,以区别于一般的变量。、使用宏名替代一无规律字符串,宏名易记住,且当需要改变某一常量时,只需改命令行,一改全改。

、宏定义不是语句,不必在行末加分号。、宏定义命令写在文件的开头,函数之前。有效范围为定义命令之后到本源文件结束。27.12.202276注:04.01.202377()文件包含:将另外的文件包含到本文件中。

“文件名”说明:、一个命令只能指定一个被包含文件,若要包含个文件,要用个命令。、文件名可以用<>或“”、后面不加分号。27.12.202277()文件包含:将另外的文件包含到本文04.01.202378

头文件、头文件作用:对所使用的引脚进行定义以及对同名的驱动函数中的自定义函数作出声明,等。如:,,,,,,等。27.12.202278头文件、头文件作用:对所使用的引04.01.202379、定义头文件():

单独存盘、另外的文件中引用头文件:“”说明:()头文件定义完后,另写一个与头文件同名的驱动程序()()在头文件中也可以把所声明的函数程序一起写入,这样不用再写驱动程序了。(、)27.12.202279、定义头文件():、另外的文件中引用04.01.202380本章小结

本章首先认识了单片机语言的优势及其与的区别。 其次介绍了的数据类型及存储区域。 接下来详细讨论了变量的定义、位变量的定义、特殊功能寄存器的定义、指针的定义、引用等。 然后讨论了函数的定义,调用等。27.12.202280本章小结 本章首先认识了单片机语言04.01.202381本章小结(续)

本章是用单片机语言进行程序设计的基础(非语言基础),必须要掌握好本章的内容,才能够比较顺利地编写单片机语言程序,成为单片机程序设计的高手,进而成为单片机应用的高手。27.12.202281本章小结(续) 本章是用单片机语言04.01.20238227.12.202282个人收集整理,仅供交流学习!个人收集整理,仅供交流学习!04.01.202384单片机应用技术

(语言版)

第章程序设计入门

27.12.20221单片机应用技术

(语言版)

第04.01.202385第章单片机语言及程序设计

的基本数据类型变量的存储区域的运算符数组

指针结构程序设计函数的定义与调用目录27.12.20222第章单片机语言及程序设计的基本04.01.202386

本章内容完全是结合单片机来讲解,也就是补充语言在单片机方面的概念、数据定义和函数定义等。 通过本章学习,使读者能够比较顺利地编写程序。27.12.20223本章内容完全是结合单片机来04.01.202387“”概念:把“单片机语言”称为“”,也称为“

”。用编写单片机程序,与用编写程序的不同之处是,需要根据单片机存储器结构及内部资源,定义相应的数据类型和变量。其它的语法规定、程序结构及程序设计方法,都与相同。、概述27.12.20224“”概念:把“单片机语言”04.01.202388、语言编程的优势

在编程方面,使用较汇编语言有诸多优势: )编程容易 )容易实现复杂的数值计算 )容易阅读与交流 )容易调试与维护程序 )容易实现模块化开发 )程序可移植性好27.12.20225、语言编程的优势 在编程方面04.01.202389

用汇编语言编写程序时,必须考虑其存储器的结构,尤其要考虑其片内数据存储器、特殊功能寄存器是否正确合理的使用,以及按照实际地址端口数据的处理。

27.12.20226 用汇编语言编写程序时,必须考虑其存04.01.202390、扩展的关键字

由于单片机在结构及编程上的特殊要求,有自己的特殊关键字,称之为扩展的关键字,下面给出常用的扩展的关键字。

这些关键字在后面会陆续接触到,此处先不给出它们的含义。27.12.20227、扩展的关键字 由于单片机在结04.01.202391

基本数据类型、数据类型:数据的不同格式。、数据类型分类:基本型(表)、构造类型(数组、结构体、共同体、枚举)、指针类型和空类型27.12.20228基本数据类型、数据类型:数据的不同04.01.202392

在计算机中不能随意给一个变量赋任意的值,因为变量在单片机的内存中要占空间的,变量不同,所占的空间不同。为了合理利用单片机的内存空间,在编程时要设定合适的数据类型。27.12.20229在计算机中不能随意给一个变量04.01.20239327.12.20221004.01.202394补充:特殊功能寄存器与位变量的定义()主要内容、位特殊功能寄存器的定义、位特殊功能寄存器的定义、型位变量的定义、型位变量的定义27.12.202211补充:特殊功能寄存器与位变量的定义04.01.202395、位特殊功能寄存器的定义 定义的一般格式为: 特殊功能寄存器名=地址常数 地址常数范围:~。 特殊功能寄存器定义例子(见、等文件): ; 定义寄存器 ; 定义口寄存器 ; 定义 ; 定义27.12.202212、位特殊功能寄存器的定义 定04.01.202396、位特殊功能寄存器的定义

定义的一般格式为: 特殊功能寄存器名=地址常数 地址常数范围:~。 例如(见、等文件):

; ; 含和27.12.202213、位特殊功能寄存器的定义 定04.01.202397 几点说明: )定义特殊功能寄存器中的地址必须在~范围内。 )定义特殊功能寄存器,必须放在函数外面作为全局变量。 )用或每次只能定义一个特殊功能寄存器。 )用或定义的是绝对定位的变量(因为名字是与确定地址对应的),具有特定的意义,在应用时不能像一般变量那样随便使用。27.12.202214 几点说明:04.01.202398、型位变量的定义

特殊功能寄存器的位声明一般格式为: 位变量名=位地址表达式 这里的位地址表达式有三种形式: 直接位地址 特殊功能寄存器名带位号 字节地址带位号27.12.202215、型位变量的定义 特殊功能寄存04.01.202399

、用直接位地址定义位变量 定义特殊功能寄存器的位。例如:

; ; ; 定义的第位

; 定义的第位27.12.202216 、用直接位地址定义位变量04.01.2023100

、特殊功能寄存器名带位号定义 定义格式为: 位变量名=特殊功能寄存器名^位号常数 这里的位号常数为~。例如:

^; ^; ^; 定义的第位

^; 定义的第位27.12.202217 、特殊功能寄存器名带位号定义04.01.2023101

、寄存器地址带位号定义位变量 定义格式为: 位变量名=特殊功能寄存器地址^位号常数 这里的位号常数同上,为~。例如:

^; ^; ^; 定义的第位

^; 定义的第位27.12.202218 、寄存器地址带位号定义位变量04.01.2023102 、几点说明 )用定义的位变量,必须能够按位操作,而不能够对无位操作功能的位定义位变量。 )用定义位变量,必须放在函数外面作为全局位变量,而不能在函数内部定义。 )用每次只能定义一个位变量。 )用定义的是一种绝对定位的位变量(因为名字是与确定位地址对应的),具有特定的意义,不能随便使用。27.12.202219 、几点说明04.01.2023103、型位变量的定义 常说的位变量指的就是型位变量。的型位变量定义的一般格式为: [存储类型] 位变量名[初值][,位变量名[初值]][,…] 位变量被保存在中的位寻址区域 例如: ; ;27.12.202220、型位变量的定义 常说的位变量04.01.2023104 数据类型转换() )自动转换 把赋值号右边的类型转换成左边的类型。 :实型赋予整型 :整型赋予实型 :字符型赋予整型 :整型赋予字符型

27.12.202221 数据类型转换()04.01.2023105)强制转换 像一样,通过强制类型转换的方式进行转换。如:

; ; ();27.12.202222)强制转换04.01.2023106

变量存储区域、变量的定义、变量的存储类型、变量的存储区域、变量定义举例、变量的存储模式27.12.202223变量存储区域、变量的定义04.01.2023107、变量的定义 变量定义的一般格式为: [存储类型] 数据类型 [存储区域]变量名[初值][,变量名[初值]][,…]或 [存储类型] [存储区域] 数据类型变量名[初值][,变量名[初值]][,…] ; 27.12.202224、变量的定义 变量定义的一般格04.01.2023108、变量的存储类型

按照,语言的变量有种存储类型:() 动态存储() 静态存储() 全局存储() 寄存器存储()27.12.202225、变量的存储类型 04.01.2023109

()动态变量 动态(存储)变量:用定义的为动态变量,也叫自动变量。 作用范围:在定义它的函数内或复合语句内部。执行时,分配存储空间,结束时释放存储空间。 定义变量时,可以省略27.12.202226 ()动态变量04.01.2023110

()静态变量 静态(存储)变量:用定义的为静态变量。函数退出时,变量的值不消失。分为静态局部和静态全局变量。 静态局部变量:在函数体内定义 静态全局变量:在函数体外部定义若非必要,不要多用静态变量27.12.202227 ()静态变量04.01.2023111

()外部变量 外部(存储)变量:用声明的变量为外部变量,是在其它文件定义过的全局变量。 用声明后,便可以在所声明的文件中使用。

27.12.202228 ()外部变量04.01.2023112

补充:函数的定义:函数功能的确立,包括制定函数名、函数值类型、形参及其类型、函数体等,是一个完整的、独立的函数单位。 函数的声明:把函数的名字、函数类型以及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。27.12.202229 补充:04.01.2023113<>(){ ()对被调函数的声明

;定义外部变量

(“\”());}()定义子函数{ ; >; ();}27.12.202230<>04.01.2023114

()寄存器变量 寄存器(存储)变量:用定义的变量为寄存器变量。 寄存器变量存放在的寄存器中,这种变量处理速度快,但数目少。 中的寄存器变量:的编译器在编译时,能够自动识别程序中使用频率高的变量,并将其安排为寄存器变量,用户不用专门声明,对无实际意义。27.12.202231 ()寄存器变量04.01.2023115、变量的存储区域()

变量的存储区属性是单片机扩展的概念,非常重要,它涉及到个新的关键字。 单片机有四个存储空间,分成三类,它们是片内、片外和。

27.12.202232、变量的存储区域() 变量的存04.01.202311627.12.20223304.01.2023117、变量定义举例 )定义存储在区域的动态变量: ,,; )定义存储在区域的静态变量:; )定义存储在区域的静态变量: ; 27.12.202234、变量定义举例 )定义存储在区04.01.2023118 )定义存储在区域的动态变量: ,;

)定义存储在区域的动态数组: []; )定义在区域的动态有符号数组: [];

27.12.202235 )定义存储在区域的动态变量:04.01.2023119 )定义存储在区域的动态数组: []; )定义存储在区域的数组: [] {,,,,, }; 定义共阴极数码管段码数组27.12.202236 )定义存储在区域的动态数组:04.01.2023120、变量的存储模式() 存储模式:如果在定义变量时缺省了存储区,则编译器会自动选择默认的存储区域,也就是存储模式。 存储模式分为三种:小模式()、紧凑模式()和大模式()。编译模式由编译控制命令决定。 存储模式(编译模式)决定了变量的默认存储区域和参数的传递方法。27.12.202237、变量的存储模式() 存储模式04.01.2023121 ()模式 在模式下,变量的默认存储区域是“”、“”,并且堆栈也安排在该区域中。 模式的特点:存储容量小,但速度快。默认存储模式:如果文件或函数未指明存储模式,则编译器按模式处理。27.12.202238 ()模式04.01.2023122()模式 在模式下,变量的默认存储区域是“”,最大变量数为字节,并且堆栈也安排在该区域中。 模式的其特点:是存储容量较模式大,速度较模式稍慢,但比模式要快。27.12.202239()模式04.01.2023123 ()模式 在模式下,变量的默认存储区域是“”,最大变量数可达。 模式的特点:存储容量大,速度慢27.12.202240 ()模式04.01.2023124

默认存储模式:如果文件或函数未指明存储模式,则编译器按模式处理。 存储模式控制命令:“

(或、)”应放在文件的开始。27.12.202241 04.01.2023125

的运算符27.12.202242的运算符04.01.2023126思考题:???27.12.202243思考题:04.01.2023127思考题:;;;;例:;;求:();后,,值是多少?();后,,值是多少?27.12.202244思考题:04.01.2023128??27.12.202245?04.01.202312927.12.20224604.01.2023130复合运算符:

;*;

复合运算的表达方式有利于提高编译效率,产生质量较高的目标代码。但可读性相对较差。27.12.202247复合运算符:复合运算的表04.01.2023131

数组、数组:同一类型变量的有序组合。注:数组和普通变量一样,要先定义再使用。、定义方式:数据类型数组名[常量表达式][];

一维数组27.12.202248数组、数组:同一类型变量的有序组04.01.2023132、赋值方式:数据类型[存储区域]数组名[常量表达式]{常量表达式};[]{};[]{ , , , };27.12.202249、赋值方式:04.01.2023133

字符数组、字符数组:基本类型为字符类型的数组。用来存放字符的。、定义:方法同一般数组。如:[]{‘’,’’,’’,’’,’’};(<)(“”[]);27.12.202250字符数组、字符数组:基本类型为字04.01.2023134、字符串:在语言中,将字符串作为字符数组来处理的。

用字符串常量来使字符数组初始化:

[]{“”};或:[]“”;问:在内存中怎么存储的?27.12.202251、字符串:在语言中,将字符串作为字符04.01.2023135

注:语言规定以’\’作为字符串结束的标志,在程序中依靠检测的位置来判定字符串是否结束。

[]{“”}; ; ([]‘\’) { ([]); ; }27.12.202252注:语言规定以’\’作为字符04.01.2023136

指针主要内容指针概念指针变量的定义、赋值与引用的指针类型27.12.202253指针主要内容04.01.2023137指针:对于一个存储单元来讲,单元的地址即为指针。指针变量:存放指针的变量,用来指向另一个变量。区别:一个指针是指一个地址,是一个常量;一个指针变量可以被赋予不同的指针(地址),是一个变量。

指针概念27.12.202254指针:对于一个存储单元来讲,单元的地04.01.2023138

指针的定义、赋值与引用、定义其格式为:

[存储类型]数据类型*指针名[,*指针名][,…]例如:*;定义了一个指针变量,它所指向的是一个字符型的数据。或定义为指向字符型变量的指针变量

指针说明符27.12.202255 指针的定义、赋值与引用指针说明04.01.2023139、赋值(指针变量使用前必须赋值)指针变量只能赋予地址。;*;(*;;)27.12.202256、赋值(指针变量使用前必须赋值)04.01.2023140、指针变量的引用注意:指针变量的定义和引用中*的意义不同!!在指针变量定义中:*是类型说明符,说明其后的变量是指针类型在指针变量的引用中:*是运算符,(取内容)*,;*;27.12.202257、指针变量的引用04.01.2023141

的程序设计程序结构常用C51的头文件:reg51.h(定义特殊功能寄存器等);math.h(数学函数);

ctype.h(字符函数);

stdio.h(一般IO函数);

stdlib.h(标准函数);

absacc.h(绝对地址访问);

string.h(串函数)…….(){

局部变量定义

<程序体>}……(){

局部变量定义

<程序体>}(){

局部变量定义

<程序体>}包含<头文件>函数声明全局变量、参数定义27.12.202258的程序设计常用C51的头文件:04.01.2023142<>^;定义中引脚的“位”

^;^;();毫秒延时函数

()主程序

{()非为真,此为无限循环

{;();;();;();}}

()毫秒延时函数{;()非,为真,即时退出循环

{(<){;}}}包含文件全程变量、参数定义函数声明主函数子函数27.12.202259<>包含文件主函数子函数04.01.2023143

流程控制.选择语句(表达式){语句;}例:(!)

{;}(条件表达式){语句;}

{语句;}例:(){;}

{;}当等于时,,否则

(表达式)

{语句;}

(表达式)

{语句;}

(表达式)

{语句;}……

(表达式)

{语句;}

{语句;}注:语句中为单一语句,可以不用花括弧。27.12.202260流程控制.选择语句(表达式)例04.01.2023144(表达式){()语句;()语句;}

{()语句;()语句;}嵌套27.12.202261(表达式)嵌套04.01.2023145() { ; () ; }举例:27.12.202262()举例:04.01.2023146(表达式){

常量表达式:{语句;};

常量表达式:{语句;};

常量表达式:{语句;};……

常量表达式:{语句;};:{语句;}}.语句也不是必须的27.12.202263(表达式).语句也不是必须的04.01.2023147.语句(条件表达式真){

语句;}(){

;}先判断后循环例非零为真27.12.202264.语句(条件表达式真

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论