《基于8位单片机的C语言程序设计(第二版)---第一章课件.ppt》由会员分享,可在线阅读,更多相关《基于8位单片机的C语言程序设计(第二版)---第一章课件.ppt(87页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章第一章 嵌入式控制系统概论嵌入式控制系统概论v【本章知识架构本章知识架构】1/12/20232v【本章教学目标和要求本章教学目标和要求】v 了解单片机、嵌入式控制器、嵌入式控制系统的定义了解单片机、嵌入式控制器、嵌入式控制系统的定义v 学会嵌入式开发环境学会嵌入式开发环境KEIL C的安装,并在自己的计算的安装,并在自己的计算 机上安装一种嵌入式开发环境机上安装一种嵌入式开发环境v 熟练掌握开发环境的使用,了解系统软件资源并学会使熟练掌握开发环境的使用,了解系统软件资源并学会使用用v 熟练掌握项目的编辑、编译、联接和调试方法熟练掌握项目的编辑、编译、联接和调试方法提提示示:本本章章内内容
2、容对对后后面面的的学学习习很很重重要要,要要熟熟练练掌掌握握,特特别别是是开开发发环环境境的的使使用用和和项项目目的的编编辑辑、编编译译、联联接接和调试方法和调试方法1/12/202331.1单片机和嵌入式控制系统的定义、单片机和嵌入式控制系统的定义、嵌入式系统的分类嵌入式系统的分类v单片机就是在一片半导体硅片上集成了中央处理单单片机就是在一片半导体硅片上集成了中央处理单元元(CPU)、存储器(、存储器(RAM/ROM)和各种)和各种I/O接口的接口的微型计算机。这样一块集成电路芯片具有一台微型微型计算机。这样一块集成电路芯片具有一台微型计算机的功能,因此被称为单片微型计算机,简称计算机的功能
3、,因此被称为单片微型计算机,简称单片机。单片机。v有些单片机功能比较齐全,我们称之为通用单片机;有些单片机功能比较齐全,我们称之为通用单片机;有些单片机是专门为某一应用领域研制的,突出某有些单片机是专门为某一应用领域研制的,突出某一功能,例如专门的数控芯片、数字信号处理芯片一功能,例如专门的数控芯片、数字信号处理芯片等,我们称之为专用单片机。有时我们也把这两种等,我们称之为专用单片机。有时我们也把这两种单片机统称为微处理器。单片机统称为微处理器。1/12/20234v单片机主要应用在测试和控制领域,由于单片机在单片机主要应用在测试和控制领域,由于单片机在使用时,通常处于测试和控制领域的核心地位
4、并嵌使用时,通常处于测试和控制领域的核心地位并嵌入其中,因此我们也常把单片机称为嵌入式控制器入其中,因此我们也常把单片机称为嵌入式控制器(Embedded MicroController Unit),把嵌入某),把嵌入某种微处理器或单片机的测试和控制系统称为嵌入式种微处理器或单片机的测试和控制系统称为嵌入式控制系统(控制系统(Embedded Control System)。)。v在本书后面的叙述中单片机和嵌入式控制器意义是在本书后面的叙述中单片机和嵌入式控制器意义是相同的。相同的。v嵌入式控制系统在航空航天、机械电子、家用电器、嵌入式控制系统在航空航天、机械电子、家用电器、自动控制等各个领域
5、都有广泛应用,特别是家用电自动控制等各个领域都有广泛应用,特别是家用电器领域是嵌入式控制系统最大的应用领域,器领域是嵌入式控制系统最大的应用领域,MP3、MP4、MP5、数码像机、扫描仪、个人、数码像机、扫描仪、个人PC、车载电、车载电视、视、DVD、PDA(掌上电脑掌上电脑),到处都可以看到嵌入,到处都可以看到嵌入式控制系统的应用。式控制系统的应用。1/12/20235v随着超大规模集成电路工艺和集成制造技术的不断随着超大规模集成电路工艺和集成制造技术的不断完善,单片机的硬件集成度也在不断提高,已经出完善,单片机的硬件集成度也在不断提高,已经出现了能满足各种不同需要、具有各种特殊功能的单现了
6、能满足各种不同需要、具有各种特殊功能的单片机。在片机。在8位单片机得到广泛应用的基础上,位单片机得到广泛应用的基础上,16位位单片机和单片机和32位单片机也应运而生,特别是以位单片机也应运而生,特别是以ARM技技术为基础的术为基础的32位精减指令系统单片机(位精减指令系统单片机(RISC Microprocessor)的出现,由于其性能优良、价格)的出现,由于其性能优良、价格低廉,大有取代低廉,大有取代16位单片机而成为高挡主流机型的位单片机而成为高挡主流机型的趋势。趋势。v嵌入式控制系统由于其内核嵌入的微处理器不同,嵌入式控制系统由于其内核嵌入的微处理器不同,在应用上大致分为两个层次,在系统
7、简单、要求不在应用上大致分为两个层次,在系统简单、要求不高,成本低的应用领域,大多采用以高,成本低的应用领域,大多采用以MCS-51为代为代表的表的8位单片机。位单片机。1/12/20236v随着嵌入式控制系统与随着嵌入式控制系统与Internet的逐步结合,的逐步结合,PDA、手机、路由器、调制解调器等复杂的高端应用对嵌手机、路由器、调制解调器等复杂的高端应用对嵌入式控制器提出了更高的要求,在少数高端应用领入式控制器提出了更高的要求,在少数高端应用领域以域以ARM技术为基础的技术为基础的32位精减指令系统单片机得位精减指令系统单片机得到越来越多的青睐。嵌入式控制系统在高端应用领到越来越多的青
8、睐。嵌入式控制系统在高端应用领域还分为代嵌入式操作系统支持和不代嵌入式操作域还分为代嵌入式操作系统支持和不代嵌入式操作系统支持两种情况。系统支持两种情况。1/12/202371.2 MCS-51单片机在嵌入式控制系统单片机在嵌入式控制系统中的地位和作用中的地位和作用v 1980年,年,Intel公司在公司在MCS-48单片机基础上推单片机基础上推出出MCS-51单片机,单片机,MCS-51单片机包括三个基本型单片机包括三个基本型8031、8051、8751,还包括三个,还包括三个CMOS工艺的低工艺的低功耗型功耗型80C31、80C51、87C51。v虽然它们是虽然它们是8位单片机,但是它们品
9、种多,兼容位单片机,但是它们品种多,兼容性好,功能强,价格低廉,性能稳定和使用方便,性好,功能强,价格低廉,性能稳定和使用方便,特别是设计和应用资料齐全,受到广大工程技术人特别是设计和应用资料齐全,受到广大工程技术人员的青睐,成为我国应用最为广泛的机种。在今后员的青睐,成为我国应用最为广泛的机种。在今后相当一段时间,相当一段时间,MCS-51单片机还是嵌入式控制系单片机还是嵌入式控制系统的主流机型。统的主流机型。1/12/20238v由于由于MCS-51单片机技术先进,性能稳定,世界上单片机技术先进,性能稳定,世界上许多大的半导体公司也在根据许多大的半导体公司也在根据Intel公司技术生产公司
10、技术生产MCS-51单片机或改进型单片机或改进型MCS-51单片机。因此,单片机。因此,MCS-51单片机也成为单片机也成为8位单片机的实际技术标准,位单片机的实际技术标准,也是嵌入式控制系统中使用最多的嵌入式控制器。也是嵌入式控制系统中使用最多的嵌入式控制器。v在计算机技术飞跃发展的今天,在计算机技术飞跃发展的今天,16位和位和32位单片机位单片机已经出现并逐步得到推广应用,但已经出现并逐步得到推广应用,但MCS-51单片机单片机的应用还是非常广泛。的应用还是非常广泛。MCS-51单片机的设计思想单片机的设计思想在在16位和位和32位单片机中得到了进一步的继承和发展。位单片机中得到了进一步的
11、继承和发展。1/12/20239v我们掌握了我们掌握了MCS-51单片机的单片机的C语言程序设计方法,语言程序设计方法,可以完全满足一般嵌入式控制系统的设计要求,因可以完全满足一般嵌入式控制系统的设计要求,因为嵌入式控制系统大多具有小、巧、轻、灵、薄的为嵌入式控制系统大多具有小、巧、轻、灵、薄的特点,中小简单系统占嵌入式控制系统的绝大多数,特点,中小简单系统占嵌入式控制系统的绝大多数,少数高端应用我们遇到较少。同时掌握了少数高端应用我们遇到较少。同时掌握了8位嵌入位嵌入式控制系统的设计方法为进一步学习式控制系统的设计方法为进一步学习16位和位和32嵌入嵌入式控制系统打下基础。式控制系统打下基础
12、。1/12/2023101.3 嵌入式控制系统的研究方法嵌入式控制系统的研究方法v1.3.1 交叉编译环境交叉编译环境Keil Cv做为嵌入式控制器的单片机,不管是做为嵌入式控制器的单片机,不管是8位单片机还是位单片机还是16位单位单片机或片机或32位单片机,由于受其本身资源限制,其应用程序都位单片机,由于受其本身资源限制,其应用程序都不能在其本身上开发,我们开发其应用程序,还需要一台通不能在其本身上开发,我们开发其应用程序,还需要一台通用计算机,如常用的用计算机,如常用的IBM-PC机或兼容机,机或兼容机,Mindows95/98/2000或或XP操作系统,操作系统,16M以上内存,以上内存
13、,20M以上硬盘内存空间(运行交叉编译环境以上硬盘内存空间(运行交叉编译环境Keil C最低配置)。最低配置)。我们也称这台通用计算机为我们也称这台通用计算机为“宿主机宿主机”,称做为嵌入式控制,称做为嵌入式控制器的单片机为器的单片机为“目标机目标机”,应用程序在,应用程序在“宿主机宿主机”上开发,上开发,在在“目标机目标机”上运行。上运行。“目标机目标机”和和“宿主机宿主机”之间利用计之间利用计算机并口或算机并口或USB口通过一台叫口通过一台叫“仿真器仿真器”的设备相连,编译的设备相连,编译好的计算机可以识别的目标程序(二进制代码程序)可以从好的计算机可以识别的目标程序(二进制代码程序)可以
14、从“宿主机宿主机”传到传到“目标机目标机”,这也叫程序下载,也可以从,这也叫程序下载,也可以从“宿主机宿主机”传到传到“目标机目标机”,叫程序上传。,叫程序上传。1/12/202311v应用程序通过应用程序通过“仿真器仿真器”的下载和上传,在的下载和上传,在“宿主宿主机机”上反复修改,这个过程叫上反复修改,这个过程叫“调试调试”。调试好的。调试好的应用程序,在应用程序,在“宿主机宿主机”上编译成上编译成“目标机目标机”可以可以直接执行的机器码文件,通过一台叫直接执行的机器码文件,通过一台叫“固化器固化器”的的设备下载并固化到设备下载并固化到“目标机目标机”的程序存储器中(的程序存储器中(8位单
15、片机常用的程序存储器是位单片机常用的程序存储器是EPROM或或Flash),),整个下载过程,叫烧片,也叫程序固化。整个下载过程,叫烧片,也叫程序固化。v程序固化是单片机开发的最后一步,以后程序固化是单片机开发的最后一步,以后“宿主机宿主机”和和“目标机目标机”就可以分离,就可以分离,“宿主机宿主机”任务完成。任务完成。“目标机目标机”就可以独立执行嵌入式控制器的任务。就可以独立执行嵌入式控制器的任务。嵌入式控制系统开发过程如图嵌入式控制系统开发过程如图1-1所示。所示。1/12/2023121/12/202313v通过以上叙述可知,在通过以上叙述可知,在“宿主机宿主机”上运行的开发工上运行的
16、开发工具软件的功能非常重要,我们也称这套开发工具软具软件的功能非常重要,我们也称这套开发工具软件为交叉编译环境或集成开发环境,交叉编译环境件为交叉编译环境或集成开发环境,交叉编译环境首先应具有类似首先应具有类似“Word”的功能,对我们用的功能,对我们用C语言语言编写的程序进行编辑,同时它还具有调试和编译功编写的程序进行编辑,同时它还具有调试和编译功能,可以把调试好的应用程序编译成能,可以把调试好的应用程序编译成“目标机目标机”可可以直接执行的机器码文件。以直接执行的机器码文件。v在我国,在我国,MCS-51单片机的开发多使用德国单片机的开发多使用德国Keil公司公司的的Vision2/3或南
17、京伟福的或南京伟福的Wave6000,Vision2/3也叫也叫Keil C51,是一款非常优秀的,是一款非常优秀的MCS-51开发工开发工具,它功能强、使用方便,特别是运行稳定、抗干具,它功能强、使用方便,特别是运行稳定、抗干扰和防病毒能力强给使用者留下深刻印象。扰和防病毒能力强给使用者留下深刻印象。1/12/202314v在北京大学出版社网站在北京大学出版社网站http:/可下可下载本书免费学习参考资料,内有载本书免费学习参考资料,内有Keil C,供读者下,供读者下载学习使用。载学习使用。Wave6000可从南京伟福官方网站可从南京伟福官方网站http:/www.wave-免费下载。免费
18、下载。温温鑫鑫提提示示编编辑辑和和编编译译是是两两个个不不同同的的概概念念,编编辑辑具具有有拷拷贝贝、粘粘贴贴、剪剪切切等等类类似似Word功功能能,而而编编译译具具有有将将C语语言言文文件件翻翻译译成成计计算算机机可可以以识识别别的的机机器器码码文文件件、并并对对程程序序进进行行语语法法检检查查的功能的功能1/12/202315v1.3.2 Keil C51的安装的安装v打开单片机编译器文件夹,再打开打开单片机编译器文件夹,再打开setup子文件夹,子文件夹,出现图出现图1-2所示画面,选中所示画面,选中setup.exe图标双击,出图标双击,出现图现图1-3所示选择安装类型对话框,我们第一
19、次安装,所示选择安装类型对话框,我们第一次安装,选第一项。按选第一项。按Next键,出现图键,出现图1-4所示选择安装版所示选择安装版本对话框,我们选本对话框,我们选Full Version,系统就开始安装,系统就开始安装,确定安装路径确定安装路径C:Keil和同意版权协议后,系统还要和同意版权协议后,系统还要产品系列号,系列号在产品系列号,系列号在UP51V701.TXT文件夹中。文件夹中。v接着我们在图接着我们在图1-5中击中击Browse键,在上一级文件夹键,在上一级文件夹中找到中找到PK51专业开发软件路径专业开发软件路径C51addon文件夹选文件夹选中并确定,出现图中并确定,出现图
20、1-6所示画面,继续击所示画面,继续击Next键就键就可一步步完成安装。可一步步完成安装。1/12/202316图图1-2 Keil C安装初始画面安装初始画面1/12/202317图图1-3 选择安装类型选择安装类型1/12/202318图图1-4选择安装版本选择安装版本1/12/202319图图1-5 安装安装PK51专业开发软件专业开发软件图图1-6 PK51专业开发软件路径专业开发软件路径1/12/2023201.4 程序的编辑、编译、调试和运行程序的编辑、编译、调试和运行v1.4.1 建立项目建立项目vMCS-51单片机程序的编辑和调试均在交叉编译环单片机程序的编辑和调试均在交叉编译
21、环境境Keil C51中完成,非常方便。中完成,非常方便。Keil C的快捷键如的快捷键如图图1-7所示,可以把它放在桌面上,使用方便。双击所示,可以把它放在桌面上,使用方便。双击此图标,就会出现图此图标,就会出现图1-8所示交叉编译环境所示交叉编译环境Keil C的的主界面,主界面,MCS-51单片机程序的编辑和调试均在此单片机程序的编辑和调试均在此界面上完成,今后我们会经常在此界面上工作,界面上完成,今后我们会经常在此界面上工作,1/12/202321vKeil C在对程序进行编辑、编译和调试时都是以在对程序进行编辑、编译和调试时都是以“项目项目”为单位来进行的,在一个项目中可以包含后为单
22、位来进行的,在一个项目中可以包含后缀为缀为.C的的C语言源文件、后缀为语言源文件、后缀为.h的的C语言头文件、语言头文件、后缀为后缀为.A的汇编语言文件、后缀为的汇编语言文件、后缀为.o的机器码文件的机器码文件(C语言文件经编译后形成的文件)、后缀为语言文件经编译后形成的文件)、后缀为.LIB的库文件(一个库文件中保存同一类功能的一些文的库文件(一个库文件中保存同一类功能的一些文件,这些文件还可以是后缀为件,这些文件还可以是后缀为.C的的C语言源文件、语言源文件、后缀为后缀为.h的的C语言头文件、后缀为语言头文件、后缀为.A的汇编语言文的汇编语言文件、后缀为件、后缀为.o的机器码文件,还可以是
23、另一个后缀的机器码文件,还可以是另一个后缀为为.LIB的库文件)。的库文件)。vKeil C在对在对“项目项目”进行编辑时,会根据每一个程进行编辑时,会根据每一个程序的后缀调用不同的编译工具分别把它们转换为后序的后缀调用不同的编译工具分别把它们转换为后缀为缀为.o一个一个的机器码文件,然后再调用连接工一个一个的机器码文件,然后再调用连接工具文件具文件Link根据根据“项目项目”结构把它们连接成一个统结构把它们连接成一个统一的后缀为一的后缀为.exe的可执行文件。的可执行文件。小小贴贴示示:我我们们的的项项目目可可能能很很大大,程程序序是是由由几几个个工工程程师师或或不不同同公公司司工工程程师师
24、编编写写的的,而而且且使使用用的的编编程程语语言言不不尽尽相相同同,但但都都可可以以使使用用Keil C分分别别进进行行编编辑辑,形形成成各各自自后后缀缀为为.o的的机机器器码码文文件件,然然后统一进行连接即可。后统一进行连接即可。1/12/202322v因此,使用因此,使用Keil C进行嵌入式控制系统程序开发,进行嵌入式控制系统程序开发,首先要建立一个项目,在开发环境主菜单中,选首先要建立一个项目,在开发环境主菜单中,选Project/New Project单击,就会出现图单击,就会出现图1-9所示建所示建立项目对话框,我们给项目起个名字:立项目对话框,我们给项目起个名字:HELLO,名,
25、名字的后缀字的后缀Uv2是系统自动加的,表示这是是系统自动加的,表示这是Keil C的的一个项目。一个项目。图图1-8 Keil C的集成开发环境的集成开发环境1/12/202323v选好保存路径,单击保存即完成建立一个项目的工选好保存路径,单击保存即完成建立一个项目的工作。之后出现选择设备对话框,如图作。之后出现选择设备对话框,如图1-10所示,就所示,就是请我们为项目选择一款单片机,假如我们选是请我们为项目选择一款单片机,假如我们选Inter公司公司8031A,就会出现设备描述对话框,图,就会出现设备描述对话框,图1-11所所示,确认后返回主界面,即完成了建立一个项目的示,确认后返回主界面
26、,即完成了建立一个项目的工作。工作。图图1-9 建立建立Keil C的一个项目的一个项目1/12/202324图图1-10选择设备对话框选择设备对话框1/12/202325图图1-11 设备功能描述对话框设备功能描述对话框1/12/202326v1.4.2 项目的运行模式项目的运行模式vKeil C为了使项目能在最优化情况下运行,对项目为了使项目能在最优化情况下运行,对项目进行了分类,编译后代码小于进行了分类,编译后代码小于2K的项目为小模式的项目为小模式(Small模式),其它为中模式(模式),其它为中模式(Compact模式)模式)或大模式(或大模式(Large模式)。模式)。v单片机虽然
27、功能很强,但本身资源毕竟有限,特别单片机虽然功能很强,但本身资源毕竟有限,特别是片上数据存储器,只有是片上数据存储器,只有128B(51系列)或系列)或256B(52系列),有时候我们必须要在片外对数据系列),有时候我们必须要在片外对数据存储器进行扩展。但是在项目为小模式时,只使用存储器进行扩展。但是在项目为小模式时,只使用片上数据存储器就满足系统要求了,程序用到的变片上数据存储器就满足系统要求了,程序用到的变量或函数调用时用到的参数可放在片上数据存储器量或函数调用时用到的参数可放在片上数据存储器器中,这种情况下项目占用系统资源少、运行速度器中,这种情况下项目占用系统资源少、运行速度快、代码效
28、率最高。在大学生电子设计大赛或教学快、代码效率最高。在大学生电子设计大赛或教学实验系统中常使用这种模式。实验系统中常使用这种模式。1/12/202327v虽然小模式占用系统资源少、运行速度快,但代码虽然小模式占用系统资源少、运行速度快,但代码容量太小,在工程上一般采用大模式(容量太小,在工程上一般采用大模式(Large模式)。模式)。大模式允许数据存储器和程序代码分别为大模式允许数据存储器和程序代码分别为64K,完,完全可以满足嵌入式控制系统的要求。中模式实际使全可以满足嵌入式控制系统的要求。中模式实际使用较少,本书不做介绍。我们后面的例子程序均采用较少,本书不做介绍。我们后面的例子程序均采用
29、大模式。用大模式。v在编译项目前,要确定使用的模式,可按如下步骤在编译项目前,要确定使用的模式,可按如下步骤进行:在主界面中,右击进行:在主界面中,右击Target1(对象(对象1)通过)通过Options for target”target1”(对象对象1设置)对话框,设置)对话框,设置设置Memory为大模式为大模式Large“Variables”in xdata(大模式,变量放片外数据存储器),如图(大模式,变量放片外数据存储器),如图1-12示。示。1/12/2023281/12/202329v1.4.3 项目的编译模式项目的编译模式v前面讲过,前面讲过,Keil C可以将项目编译成后
30、缀为可以将项目编译成后缀为.o的机的机器码器码(也叫目标码也叫目标码)文件,也可以将多个目标码文件文件,也可以将多个目标码文件通过通过Link连接成一个后缀为连接成一个后缀为.exe的可执行文件。的可执行文件。v如果将项目编译成后缀为如果将项目编译成后缀为.o的机器码文件,不能直的机器码文件,不能直接执行,以后还要和其它后缀为接执行,以后还要和其它后缀为.o的机器码文件通的机器码文件通过过Link连接成一个后缀为连接成一个后缀为.exe的可执行文件才可执的可执行文件才可执行。行。v一般我们的项目都较小,希望将项目编译成后缀为一般我们的项目都较小,希望将项目编译成后缀为.o的机器码文件后,编译器
31、直接调用的机器码文件后,编译器直接调用Link将其连接将其连接成后缀为成后缀为.exe的可执行文件,这可按下如下步骤进的可执行文件,这可按下如下步骤进行。行。1/12/202330v在在Options for target”target1”(对象对象1设置)对设置)对话框中,选中话框中,选中Output属性页,然后勾选属性页,然后勾选Debug Information和和Create Hex Files选项即可,如图选项即可,如图1-13示。至此,为项目选设备和该项目编译器设置完示。至此,为项目选设备和该项目编译器设置完成。成。图图1-13 产生产生16进制输出文件对话框进制输出文件对话框1/
32、12/202331v1.4.4 项目的调试项目的调试v以上工作确认无误后返回主界面,在主界面中,右以上工作确认无误后返回主界面,在主界面中,右击击Source Group1,出现图,出现图1-14添加文件对话框,添加文件对话框,选选Add Files to Group Source Group1,把,把C语语言源文件、头文件或汇编源文件、机器码文件、库言源文件、头文件或汇编源文件、机器码文件、库文件加入项目中。文件加入项目中。提提示示:如如果果我我们们使使用用Keil C编编译译器器,项项目目文文件件的的后后缀缀是是.Uv2;如如果果使使用用国国产产WAVE 6000编编译译器器,项项目目文文
33、件件的的后后缀缀是是.PRJ,后后缀缀是是建建立立项项目目时时系系统统自动加的。自动加的。在在项项目目中中添添加加文文件件时时没没必必要要将将文文件件放放在在一一起起,只只要要按按提提示示把把每每个个文文件件打打开开即即可可,Keil C在在编编译译时时会按路径找到每个文件并分别进行编译。会按路径找到每个文件并分别进行编译。特别注意,项目中只有一个文件时也要进行连接特别注意,项目中只有一个文件时也要进行连接1/12/202332图图1-14 在项目中添加文件对话框在项目中添加文件对话框1/12/202333v现在我们打开一个已建立好的项目,简述一下程序现在我们打开一个已建立好的项目,简述一下程
34、序的调试过程。的调试过程。v在主界面击在主界面击Project/Open Project,在对话框中打,在对话框中打开开C:/Keil/C51/EXAMPLES/HELLO.Uv2项目,就项目,就会出现图会出现图1-15所示程序调试画面。画面分四部分,所示程序调试画面。画面分四部分,最上面是主菜单和快捷键,左面是项目工作区,显最上面是主菜单和快捷键,左面是项目工作区,显示项目结构、帮助文档资料等。中间部分则是程序示项目结构、帮助文档资料等。中间部分则是程序编辑区,在项目工作区双击某个文件,该文件就会编辑区,在项目工作区双击某个文件,该文件就会在程序编辑区打开,借助于主菜单在程序编辑区打开,借助
35、于主菜单(主要是主要是Edit)和和快捷键就可以对该文件进行编辑,快捷键就可以对该文件进行编辑,Keil C的编辑器的编辑器功能非常强,类似小型功能非常强,类似小型Word。1/12/202334图图1-15 程序的编辑环境程序的编辑环境1/12/202335v程序编辑结束,通过程序编辑结束,通过 三个快捷键将当前正在调三个快捷键将当前正在调试的文件进行编译,或连接形成机器可执行的试的文件进行编译,或连接形成机器可执行的exe文件。其文件。其中键中键 只将当前正在调试的文件进行编译,键只将当前正在调试的文件进行编译,键 仅对修改仅对修改过的文件进行编译,它们只生成目标文件,并对项目中的每过的文
36、件进行编译,它们只生成目标文件,并对项目中的每个文件进行语法检查,如果发现错误会在输出拦中给出提示。个文件进行语法检查,如果发现错误会在输出拦中给出提示。键键 对全部文件进行编译,连接,形成机器可执行的对全部文件进行编译,连接,形成机器可执行的exe文文件。在编译过程种我们项目如果较小,常直接按件。在编译过程种我们项目如果较小,常直接按 键来加键来加快编译速度。快编译速度。v形成形成exe文件后,还要对文件后,还要对exe进行调试,反复修改,才能最进行调试,反复修改,才能最后形成正确程序。后形成正确程序。vexe文件的调试也在此环境中完成,单击快捷键图标文件的调试也在此环境中完成,单击快捷键图
37、标 ,会,会出现图出现图1-16的的exe文件调试界面。文件调试界面。1/12/202336图图1-16 EXE文件调试环境文件调试环境1/12/202337v调试环境主要功能有连续执行程序、单步执行程序调试环境主要功能有连续执行程序、单步执行程序并进入函数内部、单步执行程序不进入函数内部,并进入函数内部、单步执行程序不进入函数内部,仅把函数当成一条语句、执行到光标处等功能,还仅把函数当成一条语句、执行到光标处等功能,还可在程序运行中对某些变量和存储器跟踪观察、显可在程序运行中对某些变量和存储器跟踪观察、显示反汇编结果等,如图示反汇编结果等,如图1-17所示。所示。v还可在程序一处或多处设置断
38、点,使程序执行到断还可在程序一处或多处设置断点,使程序执行到断点处停止,也可取消一处或多处已设置的断点,还点处停止,也可取消一处或多处已设置的断点,还可在程序运行中对中断、可在程序运行中对中断、I/O口、串口、定时器状态口、串口、定时器状态进行观察等,如图进行观察等,如图1-18所示。所示。1/12/202338v嵌入式开发基础是一门实践性非常强的课程,在强调理论课嵌入式开发基础是一门实践性非常强的课程,在强调理论课学习的同时,必需安排一定的实验课,如:广州周立功公司学习的同时,必需安排一定的实验课,如:广州周立功公司DP-51PRO单片机仿真实验仪,南京伟福公司的单片机仿真实验仪,南京伟福公
39、司的LAB6000都都是比较好的教学实验系统。是比较好的教学实验系统。温馨提示:温馨提示:交交叉叉开开发发环环境境主主要要功功能能还还有有许许多多,这这里里只只讲讲了了最最常常用用的的。掌掌握握了了这这些些功能就可完全满足系统开发任务。功能就可完全满足系统开发任务。只只有有通通过过经经常常使使用用,才才能能熟熟连连掌掌握握这这些些功功能能。本本书书有有配配套套实实验验讲讲义义可可在在北北京京大大学学出出版版社社网网站站下下载载使使用用。如如没没有有教教学学实实验验系系统统,使使用用讲讲义义中中例子程序利用例子程序利用Keil C也可先做软件模拟,练习编程也可先做软件模拟,练习编程如没有教学实验
40、系统,可先进行软件模拟,练好编程。如没有教学实验系统,可先进行软件模拟,练好编程。1/12/2023391.5 系统软件资源系统软件资源vKEIL C 除给我们提供非常丰富的编辑和编译工具外,还给除给我们提供非常丰富的编辑和编译工具外,还给我们提供了一些非常宝贵的库函数,这些库函数是以头文件我们提供了一些非常宝贵的库函数,这些库函数是以头文件的形式给出的。的形式给出的。v每个头文件中都含有几个常用的函数,如果我们使用其中的每个头文件中都含有几个常用的函数,如果我们使用其中的函数,可采用预处理命令函数,可采用预处理命令#include将有关的头文件包含进来。将有关的头文件包含进来。v使用库函数可
41、以大大简化用户的程序工作从而提高编程效率,使用库函数可以大大简化用户的程序工作从而提高编程效率,由于由于MCS-51 系列单片机本身的特点,某些库函数的参数和系列单片机本身的特点,某些库函数的参数和调用格式与调用格式与ANSIC标准有所不同。如果在调用一个函数过程标准有所不同。如果在调用一个函数过程中又出现了直接或间接调用该函数本身,则称为函数的递归中又出现了直接或间接调用该函数本身,则称为函数的递归调用。并不是所有的函数都可以递归调用,我们称能进行递调用。并不是所有的函数都可以递归调用,我们称能进行递归调用的函数具有再入属性(归调用的函数具有再入属性(reentrant)。)。1/12/20
42、2340v1.5.1 寄存器库函数寄存器库函数reg51.h/reg52.hv在在reg51.h头文件中定义了头文件中定义了MCS-51、reg52.h的的头文件中定义了头文件中定义了MCS-52的所有特殊功能寄存器和的所有特殊功能寄存器和寄存器相应的位,定义时都用大写字母。当在程序寄存器相应的位,定义时都用大写字母。当在程序中把寄存器库函数中把寄存器库函数reg51.h或或reg52.h包含后,在程包含后,在程序中就可以直接使用序中就可以直接使用MCS-51或或MCS-52的特殊功能的特殊功能寄存器和寄存器相应的位,引用时都用大写字母。寄存器和寄存器相应的位,引用时都用大写字母。v 因我们经
43、常使用因我们经常使用MCS-52的兼容机型的兼容机型89C52,所,所以引用以引用reg52.h即可。即可。1/12/202341v1.5.2字符函数字符函数ctype.h 1.函数原型:函数原型:bit isalnum(unsigned char);再入属性:再入属性:reentrant功能:检查参数字符是否为英文字母,是则返回功能:检查参数字符是否为英文字母,是则返回1,否则返,否则返回回0。2.函数原型:函数原型:bit isalnum(char c)再入属性:再入属性:reentrant功能:检查参数字符是否为英文字母或数字字符,是则返回功能:检查参数字符是否为英文字母或数字字符,是则
44、返回1,否则返回,否则返回0。3.函数原型:函数原型:bit iscntrl(unsigned char);再入属性:再入属性:reentrant功能:检查参数字符是否在功能:检查参数字符是否在0 x000 x7f之间或等于之间或等于0 x7f,如,如果是则返回果是则返回1,否则返回,否则返回0。4.函数原型:函数原型:bit isdigit(unsigned char);再入属性:再入属性:reentrant功能:检查参数字符是否为数字字符,如果是则返回功能:检查参数字符是否为数字字符,如果是则返回1,否,否则返回则返回0。1/12/2023425.函数原型:函数原型:bit isgraph
45、(unsigned char);再入属性:再入属性:reentrant功能:检查参数字符是否为可打印字符,可打印字符的功能:检查参数字符是否为可打印字符,可打印字符的ASCII值为值为0 x210 x7e,如果是,如果是则返回则返回1,否则返回,否则返回0。6.函数原型:函数原型:bit isprint(char c);再入属性:再入属性:reentrant功能:除了与功能:除了与isgraph相同之外,还接收空格符(相同之外,还接收空格符(0 x20););7.函数原型:函数原型:bit ispunct(char c);再入属性:再入属性:reentrant功能:检查参数字符是否为标点、空格
46、和格式字符,如果是则功能:检查参数字符是否为标点、空格和格式字符,如果是则返回返回1,否则返回,否则返回0。8.函数原型:函数原型:bit islower(char c);再入属性:再入属性:reentrant功能:检查参数字符是否为小写英文字母,如果是则返回功能:检查参数字符是否为小写英文字母,如果是则返回1,否则返回否则返回0。1/12/2023439函数原型:函数原型:bit isupper(char c);再入属性:再入属性:reentrant功能:检查参数字符是否大写英文字母,如果是则返回功能:检查参数字符是否大写英文字母,如果是则返回1,否则返回否则返回0。10.函数原型:函数原型
47、:bit isspace(char c);再入属性:再入属性:reentrant功能:检查参数字符是否为下列之一:空格、制表符、回车、功能:检查参数字符是否为下列之一:空格、制表符、回车、换行、垂直制表符和送纸,换行、垂直制表符和送纸,如果是则返回如果是则返回1,否则返回,否则返回0。11.函数原型:函数原型:bit isxdigit(char c);再入属性:再入属性:reentrant功能:检查参数字符是否十六进制数字字符,如果是则返回功能:检查参数字符是否十六进制数字字符,如果是则返回1,否则返回,否则返回0。12.函数原型:函数原型:char toint(char c);再入属性:再入
48、属性:reentrant功能:将功能:将ASCII字符的字符的09、af转换为十六进制数,返回值转换为十六进制数,返回值为为0f。1/12/20234413.函数原型:函数原型:char tolower(char c);再入属性:再入属性:reentrant功能:将大写字母转换成小写字母,如果不是大写功能:将大写字母转换成小写字母,如果不是大写字母,则不作转换直接返回相应的内容。字母,则不作转换直接返回相应的内容。14.函数原型:函数原型:char toupper(char c);再入属性:再入属性:reentrant功能:将小写字母转换成大写字母,如果不是小写功能:将小写字母转换成大写字母,
49、如果不是小写字母,则不作转换直接返回相应内容。字母,则不作转换直接返回相应内容。1/12/202345v1.5.3 一般输入一般输入/输出函数输出函数stdio.hc51库中包含的输入库中包含的输入/输出函数都在输出函数都在stdio.h中,中,stdio.h库中的所有的函数都依赖库中的所有的函数都依赖MCS-51的串行口,的串行口,使用使用stdio.h库中的所有的函数串口必须进行初始化。库中的所有的函数串口必须进行初始化。例如以例如以2400波特率(时钟频率为波特率(时钟频率为12mhz),初始化),初始化程序为:程序为:SCON=0 x52;TMOD=0 x20;TH1=0 xf3;TR
50、1=1;当然也可以用其他波特率。关于串口驱动程序后面当然也可以用其他波特率。关于串口驱动程序后面介绍。在输入介绍。在输入/输出函数输出函数stdio.h中,所有其他的函中,所有其他的函数都依赖数都依赖getkey()和和putchar()函数,如果希望支持函数,如果希望支持其他其他I/O接口,只须修改这两个函数。接口,只须修改这两个函数。1/12/202346v1.函数原型:函数原型:char _getkey(void)再入属性:再入属性:reentrant功能:从串口读入一个字符,不显示。功能:从串口读入一个字符,不显示。v2.函数原型:函数原型:char getkey(void)再入属性: