1、6/16/20221单片机应用技术单片机应用技术(语言版)(语言版)第章程序设计入门第章程序设计入门6/16/20222第章第章 单片机语言及程序设计单片机语言及程序设计 的基本数据类型的基本数据类型 变量的存储区域变量的存储区域 的运算符的运算符 数组数组 指针指针 结构结构 程序设计程序设计 函数的定义与调用函数的定义与调用目录目录6/16/20223 本章内容完全是结合单片机来讲解,也本章内容完全是结合单片机来讲解,也就是补充语言在单片机方面的概念、数据定就是补充语言在单片机方面的概念、数据定义和函数定义等。义和函数定义等。通过本章学习,使读者能够比较顺利地通过本章学习,使读者能够比较顺
2、利地编写程序。编写程序。 6/16/20224 “” “”概念:把概念:把“单片机语言单片机语言”称为称为“”“”,也称为,也称为“ ”。 用编写单片机程序,与用用编写单片机程序,与用 编写程序编写程序的不同之处是,需要根据单片机存储器的不同之处是,需要根据单片机存储器结构及内部资源,定义相应的数据类型结构及内部资源,定义相应的数据类型和变量。和变量。 其它的语法规定、程序结构及其它的语法规定、程序结构及程序设计方法,都与程序设计方法,都与 相同。相同。、 概述概述6/16/20225、 语言编程的优势语言编程的优势在编程方面,使用较汇编语言有诸多优在编程方面,使用较汇编语言有诸多优势:势:)
3、编程容易)编程容易 )容易实现复杂的数值计算)容易实现复杂的数值计算)容易阅读与交流)容易阅读与交流)容易调试与维护程序)容易调试与维护程序)容易实现模块化开发)容易实现模块化开发 )程序可移植性好)程序可移植性好 6/16/20226用汇编语言编写程序时,必须考虑其存用汇编语言编写程序时,必须考虑其存储器的结构,尤其要考虑其片内数据存储器、储器的结构,尤其要考虑其片内数据存储器、特殊功能寄存器是否正确合理的使用,以及特殊功能寄存器是否正确合理的使用,以及按照实际地址端口数据的处理。按照实际地址端口数据的处理。6/16/20227、 扩展的关键字扩展的关键字由于单片机在结构及编程上的特殊要求,
4、有自由于单片机在结构及编程上的特殊要求,有自己的特殊关键字,称之为扩展的关键字,下面给己的特殊关键字,称之为扩展的关键字,下面给出常用的扩展的关键字。出常用的扩展的关键字。 这些关键字在后面会陆续接触到,此处先不给这些关键字在后面会陆续接触到,此处先不给出它们的含义。出它们的含义。 6/16/20228 基本数据类型基本数据类型、数据类型:数据的不同格式。、数据类型:数据的不同格式。、数据类型分类:基本型(表)、构造类、数据类型分类:基本型(表)、构造类型(数组、结构体、共同体、枚举)、型(数组、结构体、共同体、枚举)、指针类型和空类型指针类型和空类型6/16/20229 在计算机中不能随意给
5、一个变量赋任在计算机中不能随意给一个变量赋任意的值,因为变量在单片机的内存中要占意的值,因为变量在单片机的内存中要占空间的,变量不同,所占的空间不同。空间的,变量不同,所占的空间不同。 为了合理利用单片机的内存空间,在为了合理利用单片机的内存空间,在编程时要设定合适的数据类型。编程时要设定合适的数据类型。6/16/2022106/16/202211补充:补充: 特殊功能寄存器与位变量的特殊功能寄存器与位变量的定义()定义()主要内容主要内容、 位特殊功能寄存器的定义位特殊功能寄存器的定义、 位特殊功能寄存器的定义位特殊功能寄存器的定义、 型位变量的定义型位变量的定义、 型位变量的定义型位变量的
6、定义6/16/202212、 位特殊功能寄存器的定义位特殊功能寄存器的定义定义的一般格式为:定义的一般格式为:特殊功能寄存器名特殊功能寄存器名 地址常数地址常数地址常数范围:。地址常数范围:。特殊功能寄存器定义例子(见、等文特殊功能寄存器定义例子(见、等文件):件):; ;定义寄存器定义寄存器; ;定义口寄存器定义口寄存器; ;定义定义; ;定义定义 6/16/202213、 位特殊功能寄存器的定义位特殊功能寄存器的定义定义的一般格式为:定义的一般格式为: 特殊功能寄存器名地址常数特殊功能寄存器名地址常数地址常数范围:。地址常数范围:。例如(见、等文件):例如(见、等文件): ; ; ; ;
7、含和含和6/16/202214几点说明:几点说明:)定义特殊功能寄存器中的地址必须)定义特殊功能寄存器中的地址必须在范围内。在范围内。)定义特殊功能寄存器,必须放在函数)定义特殊功能寄存器,必须放在函数外面作为全局变量。外面作为全局变量。)用或每次只能定义一个特殊功能寄存)用或每次只能定义一个特殊功能寄存器。器。)用或定义的是绝对定位的变量(因为)用或定义的是绝对定位的变量(因为名字是与确定地址对应的),具有特定的名字是与确定地址对应的),具有特定的意义,在应用时不能像一般变量那样随便意义,在应用时不能像一般变量那样随便使用。使用。 6/16/202215、 型位变量的定义型位变量的定义特殊功
8、能寄存器的位声明特殊功能寄存器的位声明 一般格式为:一般格式为: 位变量名位变量名 位地址表达式位地址表达式这里的位地址表达式有三种形式:这里的位地址表达式有三种形式:直接位地址直接位地址特殊功能寄存器名带位号特殊功能寄存器名带位号字节地址带位号字节地址带位号6/16/202216 、用直接位地址定义位变量、用直接位地址定义位变量定义特殊功能寄存器的位。例如:定义特殊功能寄存器的位。例如:; ; ; ; ; 定义的第位定义的第位; ; 定义的第位定义的第位 6/16/202217、特殊功能寄存器名带位号定义、特殊功能寄存器名带位号定义定义格式为:定义格式为:位变量名位变量名 特殊功能寄存器名特
9、殊功能寄存器名 位号常数位号常数这里的位号常数为。例如:这里的位号常数为。例如:; ; ; ; 定义的第位定义的第位; ; 定义的第位定义的第位 6/16/202218、寄存器地址带位号定义位变量、寄存器地址带位号定义位变量定义格式为:定义格式为:位变量名位变量名 特殊功能寄存器特殊功能寄存器地址地址 位号常数位号常数这里的位号常数同上,为。例如:这里的位号常数同上,为。例如:; ; ; ; 定义的第位定义的第位;定义的第位定义的第位 6/16/202219、几点说明、几点说明)用定义的位变量,必须能够按位操作,)用定义的位变量,必须能够按位操作,而不能够对无位操作功能的位定义位变量。而不能够
10、对无位操作功能的位定义位变量。)用定义位变量,必须放在函数外面作)用定义位变量,必须放在函数外面作为全局位变量,而不能在函数内部定义。为全局位变量,而不能在函数内部定义。)用每次只能定义一个位变量。)用每次只能定义一个位变量。)用定义的是一种绝对定位的位变量)用定义的是一种绝对定位的位变量(因为名字是与确定位地址对应的),具有(因为名字是与确定位地址对应的),具有特定的意义,不能随便使用。特定的意义,不能随便使用。6/16/202220、 型位变量的定义型位变量的定义常说的位变量指的就是型位变量。的型常说的位变量指的就是型位变量。的型位变量定义的一般格式为:位变量定义的一般格式为: 存储类型存
11、储类型 位变量名位变量名 初值初值 ,位变量名,位变量名 初值初值 ,位变量被保存在中的位寻址区域位变量被保存在中的位寻址区域例例如:如:; ; 6/16/202221数据类型转换数据类型转换()())自动转换)自动转换把赋值号右边的类型转换成左边的类型。把赋值号右边的类型转换成左边的类型。: 实型赋予整型实型赋予整型: : 整型赋予实型整型赋予实型: : 字符型赋予整型字符型赋予整型: 整型赋予字符型整型赋予字符型6/16/202222)强制转换)强制转换像像 一样,通过强制类型转换的方式一样,通过强制类型转换的方式进行转换。如:进行转换。如:; ; ; (); (); 6/16/20222
12、3 变量存储区域变量存储区域、 变量的定义变量的定义、 变量的存储类型变量的存储类型、 变量的存储区域变量的存储区域、 变量定义举例变量定义举例、 变量的存储模式变量的存储模式6/16/202224、 变量的定义变量的定义变量定义的一般格式为:变量定义的一般格式为: 存储类型存储类型 数据类型数据类型 存储区域存储区域 变量名变量名 初值初值 , ,变量名变量名 初值初值 , ,或或 存储类型存储类型 存储区域存储区域 数据类型数据类型 变量名变量名 初值初值 , ,变量名变量名 初值初值 , , ; ; 6/16/202225、 变量的存储类型变量的存储类型按照按照 ,语言的变量有种存储类型
13、:,语言的变量有种存储类型: ()()动态存储()动态存储()静态存储()静态存储()全局存储()全局存储()寄存器存储()寄存器存储() 6/16/202226()动态变量()动态变量动态(存储)变量:用定义的为动态变动态(存储)变量:用定义的为动态变量,也叫自动变量。量,也叫自动变量。作用范围:在定义它的函数内或复合语作用范围:在定义它的函数内或复合语句内部。执行时,分配存储空间,结束时释句内部。执行时,分配存储空间,结束时释放存储空间。放存储空间。定义变量时,可以省略定义变量时,可以省略6/16/202227()静态变量()静态变量静态(存储)变量:用定义的为静态变静态(存储)变量:用定
14、义的为静态变量。函数退出时,变量的值不消失。分为静量。函数退出时,变量的值不消失。分为静态局部和静态全局变量。态局部和静态全局变量。静态局部变量:在函数体内定义静态局部变量:在函数体内定义静态全局变量:在函数体外部定义静态全局变量:在函数体外部定义 若非必要,不要多用静态变量若非必要,不要多用静态变量6/16/202228()外部变量()外部变量外部(存储)变量:用声明的变量为外外部(存储)变量:用声明的变量为外部变量,是在其它文件定义过的全局变量。部变量,是在其它文件定义过的全局变量。用声明后,便可以在所声明的文件中使用声明后,便可以在所声明的文件中使用。用。6/16/202229补充:补充
15、: 函数的定义:函数功能的确立,包括制函数的定义:函数功能的确立,包括制定函数名、函数值类型、形参及其类型、定函数名、函数值类型、形参及其类型、函数体等,是一个完整的、独立的函数函数体等,是一个完整的、独立的函数单位。单位。函数的声明:把函数的名字、函数类型函数的声明:把函数的名字、函数类型以及形参类型、个数和顺序通知编译系以及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行统,以便在调用该函数时系统按此进行对照检查。对照检查。6/16/202230 () () () ()对被调函数的声明对被调函数的声明 ; ;定义外部变量定义外部变量(“”();(“”(); ( ) ( )定
16、义子函数定义子函数 ; ;();(); 6/16/202231()寄存器变量()寄存器变量寄存器(存储)变量:用定义的变量为寄存器(存储)变量:用定义的变量为寄存器变量。寄存器变量。寄存器变量存放在的寄存器中,这种变寄存器变量存放在的寄存器中,这种变量处理速度快,但数目少。量处理速度快,但数目少。中的寄存器变量:中的寄存器变量: 的编译器在编译时,的编译器在编译时,能够自动识别程序中使用频率高的变量,并能够自动识别程序中使用频率高的变量,并将其安排为寄存器变量,用户不用专门声明,将其安排为寄存器变量,用户不用专门声明,对无实际意义。对无实际意义。6/16/202232、 变量的存储区域()变量
17、的存储区域()变量的存储区属性是单片机扩展的概念,变量的存储区属性是单片机扩展的概念,非常重要,它涉及到个新的关键字。非常重要,它涉及到个新的关键字。单片机有四个存储空间,分成三类,它单片机有四个存储空间,分成三类,它们是片内、片外和。们是片内、片外和。 6/16/2022336/16/202234、 变量定义举例变量定义举例)定义存储在区域的动态)定义存储在区域的动态 变量:变量: , , ; , , ;)定义存储在区域的静态)定义存储在区域的静态 变量:变量: ; ;)定义存储在区域的静态)定义存储在区域的静态 变量:变量: ; ;6/16/202235)定义存储在区域的动态)定义存储在区
18、域的动态 变量:变量: , ; , ; )定义存储在区域的动态)定义存储在区域的动态 数组:数组: ; ; )定义在区域的动态有符号数组:)定义在区域的动态有符号数组: ; ; 6/16/202236)定义存储在区域的动态)定义存储在区域的动态 数组:数组: ; ;)定义存储在区域的)定义存储在区域的 数组:数组: , , , , , , , , ,; 定义共阴极数码管段码数组定义共阴极数码管段码数组6/16/202237、 变量的存储模式变量的存储模式()()存储模式:如果在定义变量时缺省了存存储模式:如果在定义变量时缺省了存储区,则编译器会自动选择默认的存储区域,储区,则编译器会自动选择默
19、认的存储区域,也就是存储模式。也就是存储模式。存储模式分为三种:小模式()、紧凑存储模式分为三种:小模式()、紧凑模式()和大模式()。编译模式由编译控模式()和大模式()。编译模式由编译控制命令决定。制命令决定。存储模式(编译模式)决定了变量的默存储模式(编译模式)决定了变量的默认存储区域和参数的传递方法。认存储区域和参数的传递方法。 6/16/202238()()模式模式在模式下,变量的默认存储区域是在模式下,变量的默认存储区域是“”“”、“”“”,并且堆栈也安排在该区域,并且堆栈也安排在该区域中。中。模式的特点:存储容量小,但速度模式的特点:存储容量小,但速度快。快。 默认存储模式:如果
20、文件或函数默认存储模式:如果文件或函数未指明存储模式,则编译器按模式处理。未指明存储模式,则编译器按模式处理。6/16/202239 () ()模式模式在模式下,变量的默认存储区域是在模式下,变量的默认存储区域是“”“”,最大变量数为字节,并且堆栈也安排在该区最大变量数为字节,并且堆栈也安排在该区域中。域中。模式的其特点:是存储容量较模式大,模式的其特点:是存储容量较模式大,速度较模式稍慢,但比模式要快。速度较模式稍慢,但比模式要快。6/16/202240() () 模式模式在模式下,变量的默认存储区域是在模式下,变量的默认存储区域是“”“”,最大变量数可达。最大变量数可达。模式的特点:存储容
21、量大,速度慢模式的特点:存储容量大,速度慢6/16/202241默认存储模式:如果文件或函数未指明默认存储模式:如果文件或函数未指明存储模式,则编译器按模式处理。存储模式,则编译器按模式处理。存储模式控制命令:存储模式控制命令: “ ( (或、或、)”)”应放应放在文件的开始。在文件的开始。 6/16/202242 的运算符6/16/202243思考题:思考题:? ? ? ?6/16/202244思考题:思考题:; ; ; ; ;例:例: ; ; ;求:()求:(); ;后,值是多少?后,值是多少? ()(); ;后,值是多少?后,值是多少?6/16/202245?6/16/2022466/1
22、6/202247复合运算符:复合运算符: ; ; * *; ; 复合运算的表达方式有利于提高编译效复合运算的表达方式有利于提高编译效率,产生质量较高的目标代码。但可读性率,产生质量较高的目标代码。但可读性相对较差。相对较差。6/16/202248 数组数组、数组:同一类型变量的有序组合。、数组:同一类型变量的有序组合。注:数组和普通变量一样,要先定义再使用。注:数组和普通变量一样,要先定义再使用。、定义方式:、定义方式:数据类型数据类型 数组名数组名 常量表达式常量表达式 ; ; 一维数组一维数组6/16/202249、赋值方式:、赋值方式:数据类型数据类型 存储区域存储区域 数组名数组名 常
23、量表达式常量表达式 常量表达式常量表达式 ; ; , , , ,;6/16/202250 字符数组字符数组、字符数组:基本类型为字符类型的数组。、字符数组:基本类型为字符类型的数组。用来存放字符的。用来存放字符的。、定义:方法同一般数组。、定义:方法同一般数组。如:如: ,;,;()()(“”);(“”);6/16/202251、字符串:在语言中,将字符串作为字符、字符串:在语言中,将字符串作为字符数组来处理的。数组来处理的。用字符串常量来使字符数组初始化:用字符串常量来使字符数组初始化: “”; “”;或或: “”;: “”;问:在内存中怎么存储的?问:在内存中怎么存储的?6/16/2022
24、52 注:注: 语言规定以语言规定以作为字符串结束作为字符串结束的标志,在程序中依靠检测的位置来判的标志,在程序中依靠检测的位置来判定字符串是否结束。定字符串是否结束。 “”; “”; ; ;( ) ( ) ();(); ; ; 6/16/202253 指针指针主要内容主要内容 指针概念指针概念 指针变量的定义、赋值与引用指针变量的定义、赋值与引用 的指针类型的指针类型6/16/202254 指针:对于一个存储单元来讲,单元的指针:对于一个存储单元来讲,单元的地址即为指针。地址即为指针。 指针变量:存放指针的变量,用来指向指针变量:存放指针的变量,用来指向另一个变量。另一个变量。 区别:一个指
25、针是指一个地址,是一个区别:一个指针是指一个地址,是一个常量;常量; 一个指针变量可以被赋予不同的一个指针变量可以被赋予不同的指针(地址),是一个变量。指针(地址),是一个变量。 指针概念指针概念6/16/202255 指针的定义、赋值与引用指针的定义、赋值与引用、定义、定义其格式为:其格式为: 存储类型存储类型 数据类型数据类型 * *指针名指针名 ,* *指针名指针名 ,例如:例如: * *; ;定义了一个指针变量,它所指向的是一个字符型的定义了一个指针变量,它所指向的是一个字符型的数据。数据。或定义为指向字符型变量的指针变量或定义为指向字符型变量的指针变量指针说明符指针说明符6/16/2
26、02256、赋值(指针变量使用前必须赋值)、赋值(指针变量使用前必须赋值)指针变量只能赋予地址。指针变量只能赋予地址。 ; * *; ( ; ( * *; ;); ;)6/16/202257、指针变量的引用、指针变量的引用注意:指针变量的定义和引用中注意:指针变量的定义和引用中* *的意义不的意义不同!同!在指针变量定义中:在指针变量定义中:* *是类型说明符,说明是类型说明符,说明其后的变量是指针类型其后的变量是指针类型在指针变量的引用中:在指针变量的引用中:* *是运算符,(取内是运算符,(取内容)容) * *, ;, ;* *; ;6/16/202258 的程序设计的程序设计 程序结构程
27、序结构常用常用C51C51的的头文件:头文件:reg51.h (定义特殊功能寄存器等);(定义特殊功能寄存器等);math.h (数学函数);(数学函数); ctype.h (字符函数);(字符函数); stdio.h (一般(一般IO函数);函数); stdlib.h (标准函数);(标准函数); absacc.h (绝对地址访问);(绝对地址访问); string.h (串函数)(串函数) .() 局部变量定义局部变量定义 () 局部变量定义局部变量定义 () 局部变量定义局部变量定义 包含包含 函数声明函数声明全局变量、参数定义全局变量、参数定义6/16/202259 ; 定义中引脚的定
28、义中引脚的“位位” ; ; ( ); 毫秒延时函数毫秒延时函数 () 主程序主程序 () 非为真,此为无限循环非为真,此为无限循环 ; (); ; (); ; (); ( ) 毫秒延时函数毫秒延时函数 ; () 非,为真,即时退出循环非,为真,即时退出循环 (); 包含文件包含文件 全程变量、全程变量、参数定义参数定义函数声明函数声明主函数主函数子函数子函数6/16/202260 流程控制流程控制.选择语句选择语句(表达式)(表达式) 语句语句; 例:(!)例:(!) ; (条件表达式条件表达式) 语句语句; 语句语句;例:例: () ; ;当当 等于等于 时,时, ,否则否则 (表达式)(表
29、达式) 语句语句; (表达式)(表达式) 语句语句; (表达式)(表达式) 语句语句; (表达式)(表达式) 语句语句; 语句语句;注:语句中为单一语句,注:语句中为单一语句, 可以不用花括弧。可以不用花括弧。 6/16/202261 (表达式)(表达式) ( ) ( ) 语句语句; ; ( ) ( ) 语句;语句; ( ) ( ) 语句语句; ; ( ) ( ) 语句;语句; 嵌套嵌套6/16/202262 () () ; ;()(); ; 举例:举例:6/16/202263 (表达式表达式) 常量表达式常量表达式:语句语句; 常量表达式常量表达式:语句语句; 常量表达式常量表达式:语句语句
30、; 常量表达式常量表达式:语句语句; :语句语句;. 语句语句也不是必须的也不是必须的6/16/202264. 语句语句 (条件表达式真条件表达式真) 语句语句; () ;先判断先判断后循环后循环例例非零为真非零为真6/16/202265补充:补充:()() ()() ; ;无限循环无限循环()() () () . . ; ; 退出大循环退出大循环()() . () ()停止(等待)停止(等待)6/16/202266 语句语句; (条件表达式真条件表达式真) ; , ; ; ; () 先循环先循环后判断后判断例例6/16/202267 ( (初值设定表达式初值设定表达式;循环条件表达式循环条件
31、表达式;条件更新表达式条件更新表达式) ) 循环语句循环语句; ; 例:例: , ;, ; (; ; ) (; )() (); (); 外层是多少,延外层是多少,延时大约多少时大约多少6/16/202269本课程不是专门学习语言的课程,本课程不是专门学习语言的课程,相关语言的系统知识请同学们自行复相关语言的系统知识请同学们自行复(学)习。(学)习。6/16/202270 函数的定义与调用函数的定义与调用主要内容主要内容 函数函数 中调用汇编中调用汇编 预处理命令预处理命令 头文件头文件 6/16/202271函数定义的一般格式如下:函数定义的一般格式如下:函数类型函数类型 函数名(形参表)函数
32、名(形参表) 局部变量定义局部变量定义执行语句执行语句 6/16/202272延时若干的子函数:延时若干的子函数: ( )( ) ; ;()() (); (); 子函数的调用:子函数的调用:();();6/16/202273主函数:主函数: ()() 6/16/202274注:注:、 里也可以什么不写,为空函数。里也可以什么不写,为空函数。、调用函数时,多个参数要用逗号隔开,、调用函数时,多个参数要用逗号隔开,且每个实参的类型、位置与形参一一对且每个实参的类型、位置与形参一一对应。应。、调用的函数是无参函数时,后面的括号、调用的函数是无参函数时,后面的括号不能省。不能省。、带参数的函数声明时,
33、必须将参数类型、带参数的函数声明时,必须将参数类型写上,类型后面的变量名可有可无。写上,类型后面的变量名可有可无。、主函数不能被其他函数调用。、主函数不能被其他函数调用。6/16/202275 预处理命令预处理命令预处理:在进行编译的第一遍扫描之前所预处理:在进行编译的第一遍扫描之前所做的工作。做的工作。()宏定义:()宏定义: () () * * * 6/16/202276注:注:、宏名一般用大写字母表示,以区别于一般、宏名一般用大写字母表示,以区别于一般的变量。的变量。、使用宏名替代一无规律字符串,宏名易记、使用宏名替代一无规律字符串,宏名易记住,且当需要改变某一常量时,只需改命住,且当需
34、要改变某一常量时,只需改命令行,一改全改。令行,一改全改。 、宏定义不是语句,不必在行末加分号。、宏定义不是语句,不必在行末加分号。、宏定义命令写在文件的开头,函数之前。、宏定义命令写在文件的开头,函数之前。有效范围为定义命令之后到本源文件结束。有效范围为定义命令之后到本源文件结束。6/16/202277()()文件包含:将另外的文件包含到本文件中。文件包含:将另外的文件包含到本文件中。 “文件名文件名”说明:说明:、一个、一个 命令只能指定一个被包含文件,若要包含个命令只能指定一个被包含文件,若要包含个文件,要用个文件,要用个 命令。命令。、文件名可以用、文件名可以用或或“”“”、后面不加分
35、号。、后面不加分号。6/16/202278 头文件头文件、头文件作用:对所使用的引脚进行定义以及、头文件作用:对所使用的引脚进行定义以及对同名的驱动函数中的自定义函数作出声明,对同名的驱动函数中的自定义函数作出声明,等。等。如:,等。如:,等。6/16/202279、定义头文件():、定义头文件(): 单独存盘单独存盘、另外的文件中引用头文、另外的文件中引用头文件:件:“”“”说明:说明:()()头文件定义完后,另写头文件定义完后,另写一个与头文件同名的驱一个与头文件同名的驱动程序()动程序()()()在头文件中也可以把所在头文件中也可以把所声明的函数程序一起写声明的函数程序一起写入,这样不用
36、再写驱动入,这样不用再写驱动程序了。程序了。( (、) )6/16/202280本章小结本章小结本章首先认识了单片机语言的优势及其与本章首先认识了单片机语言的优势及其与 的区别。的区别。其次介绍了的数据类型及存储区域。其次介绍了的数据类型及存储区域。接下来详细讨论了变量的定义、位变量的接下来详细讨论了变量的定义、位变量的定义、特殊功能寄存器的定义、指针的定义、定义、特殊功能寄存器的定义、指针的定义、引用等。引用等。然后讨论了函数的定义,调用等。然后讨论了函数的定义,调用等。6/16/202281本章小结本章小结( (续续) )本章是用单片机语言进行程序设计的基本章是用单片机语言进行程序设计的基础(非语言基础),必须要掌握好本章的内础(非语言基础),必须要掌握好本章的内容,才能够比较顺利地编写单片机语言程序,容,才能够比较顺利地编写单片机语言程序,成为单片机程序设计的高手,进而成为单片成为单片机程序设计的高手,进而成为单片机应用的高手。机应用的高手。6/16/202282个人收集整理,仅供交流学习!