PIC16F84A轻松入门与实战(易学好用经典PIC单片机)

PIC16F84A轻松入门与实战(易学好用经典PIC单片机)
作者: 李学海
出版社: 清华大学
原售价: 69.00
折扣价: 48.60
折扣购买: PIC16F84A轻松入门与实战(易学好用经典PIC单片机)
ISBN: 9787302477921

作者简介

内容简介

第5章软件集成开发环境和软件模拟调试技术 南京伟福公司为PIC单片机用户免费提供了一款集成开发环境(Integrated Development Environment,IDE)软件包——WAVE6000,它具有易学、易用、易上手、全中文等突出优点,特别适合单片机初学者。此外,该环境还可以开发各种80C51兼容单片机,为读者日后学习预留了很大的空间。 其实,WAVE6000集成开发环境是一个软件包,也是一套以项目(Project,或翻译为计划或工程)为导向的,或者说是面向项目的集成开发环境软件平台。它就像一个包罗十八般兵器的大车间,把文本编辑器(Editor)、汇编器(Assembler)、连接器(Linker)、项目管理器(Project manager)和程序调试器(Debugger,也就是查错和排错的工具)等,在单片机编程和项目调试过程中不可或缺的一些软件工具,全部集成到了一个开发环境之中,从而形成了一套不仅功能丰富而且使用方便的软件平台。 借助于WAVE6000,单片机初学者或应用项目开发者可以在一部微机系统上,对PIC单片机进行源程序文件的创建、编辑和汇编,甚至还能实现目标程序的模拟运行和动态调试之类的虚拟实战演练,并且调试方式还可以采用连续执行、单步执行、连续单步执行、设置断点执行等多种执行方式。 5.1集成开发环境WAVE6000的组成 WAVE6000是一个集成了多种单片机应用开发工具的、功能完备的“软件包”。在此仅对本书后面将用到的几种工具软件进行简要介绍: 1. 集成开发环境 之所以称其为集成开发环境,是因为它将项目管理、文件管理、源程序创建和编辑、目标文件生成、目标程序模拟调试或仿真调试等,单片机应用项目开发过程中所需要的一系列单项工具的操作,全部集中到同一环境下统一调度和启用。即软件包的所有功能几乎都可以在一个环境内来操作和控制。 2. 项目管理器 项目管理器是该环境的核心部分,用于创建、修改、保存、复制等项目的管理操作,为开发人员提供自动化程度高、操作简便的符号化调试工作平台。所谓“符号化调试”,指的是在调试过程中屏幕上显示的地址标号、常数名、变量名和寄存器名,均用在源程序中定义的表义性和可读性很强的符号来代表和标识。因此,又被称为“源程序级调试”。这比传统的80X86汇编语言程序的调试环境要友好得多。 3. 源程序编辑器 源程序编辑器是一个全屏幕文本编辑器,用于创建、查看、编辑和修改汇编语言(或C语言)源程序文件。源程序文件以纯文本格式保存,其文件扩展名为“.asm”。同时利用该编辑器还可以创建、编辑或查看包含文件、说明文件等其他文本文件。 4. 汇编器 主要用于将汇编语言源程序文件(.asm)汇编成目标文件(.hex),并负责查找语法错误和格式错误等一些非逻辑性的、浅层次的简单错误。 5. 软件模拟器 这是一种在很大程度上代替价格昂贵的硬件仿真器功能的调试工具,也是一种非实时、非在线的纯软件的调试工具。借助于这个在微机系统上运行的工具软件,我们可以不需要任何额外的附加硬件,仅用软件的手段来模仿PIC单片机内部寄存器的活动第5章软件集成开发环境和软件模拟调试技术 南京伟福公司为PIC单片机用户免费提供了一款集成开发环境(Integrated Development Environment,IDE)软件包——WAVE6000,它具有易学、易用、易上手、全中文等突出优点,特别适合单片机初学者。此外,该环境还可以开发各种80C51兼容单片机,为读者日后学习预留了很大的空间。 其实,WAVE6000集成开发环境是一个软件包,也是一套以项目(Project,或翻译为计划或工程)为导向的,或者说是面向项目的集成开发环境软件平台。它就像一个包罗十八般兵器的大车间,把文本编辑器(Editor)、汇编器(Assembler)、连接器(Linker)、项目管理器(Project manager)和程序调试器(Debugger,也就是查错和排错的工具)等,在单片机编程和项目调试过程中不可或缺的一些软件工具,全部集成到了一个开发环境之中,从而形成了一套不仅功能丰富而且使用方便的软件平台。 借助于WAVE6000,单片机初学者或应用项目开发者可以在一部微机系统上,对PIC单片机进行源程序文件的创建、编辑和汇编,甚至还能实现目标程序的模拟运行和动态调试之类的虚拟实战演练,并且调试方式还可以采用连续执行、单步执行、连续单步执行、设置断点执行等多种执行方式。 5.1集成开发环境WAVE6000的组成 WAVE6000是一个集成了多种单片机应用开发工具的、功能完备的“软件包”。在此仅对本书后面将用到的几种工具软件进行简要介绍: 1. 集成开发环境 之所以称其为集成开发环境,是因为它将项目管理、文件管理、源程序创建和编辑、目标文件生成、目标程序模拟调试或仿真调试等,单片机应用项目开发过程中所需要的一系列单项工具的操作,全部集中到同一环境下统一调度和启用。即软件包的所有功能几乎都可以在一个环境内来操作和控制。 2. 项目管理器 项目管理器是该环境的核心部分,用于创建、修改、保存、复制等项目的管理操作,为开发人员提供自动化程度高、操作简便的符号化调试工作平台。所谓“符号化调试”,指的是在调试过程中屏幕上显示的地址标号、常数名、变量名和寄存器名,均用在源程序中定义的表义性和可读性很强的符号来代表和标识。因此,又被称为“源程序级调试”。这比传统的80X86汇编语言程序的调试环境要友好得多。 3. 源程序编辑器 源程序编辑器是一个全屏幕文本编辑器,用于创建、查看、编辑和修改汇编语言(或C语言)源程序文件。源程序文件以纯文本格式保存,其文件扩展名为“.asm”。同时利用该编辑器还可以创建、编辑或查看包含文件、说明文件等其他文本文件。 4. 汇编器 主要用于将汇编语言源程序文件(.asm)汇编成目标文件(.hex),并负责查找语法错误和格式错误等一些非逻辑性的、浅层次的简单错误。 5. 软件模拟器 这是一种在很大程度上代替价格昂贵的硬件仿真器功能的调试工具,也是一种非实时、非在线的纯软件的调试工具。借助于这个在微机系统上运行的工具软件,我们可以不需要任何额外的附加硬件,仅用软件的手段来模仿PIC单片机内部寄存器的活动、指令的执行过程、片内外设模块的动作和引脚信号的输出,从而实现对用户程序的模拟运行和功能调试、深层次逻辑性错误的排查。 因此可以说,WAVE6000为学习和应用PIC单片机的人们提供了一种虚拟的实战环境。对于单片机初学者来说,不用花钱也可实现边学边练的梦想; 对于单片机开发者来说,可以缩短开发周期和降低开发成本。总之,它是一种性能价格比极高的程序调试工具。 不过,软件模拟器也存在一定的局限性: ①它还不能模拟PIC16F84片内的某些功能; ②它不能帮我们查找目标板上的电路错误; ③它执行速度慢而只能适合调试那些实时性要求不高的程序。 除了以上这些工具软件以外,还包含了一些可供用户参考的技术资料文件。例如,在安装目录之下可以看到,预备了一些现成的示范程序; 又比如,在“帮助”菜单命令之下可以调出“WAVE6000使用手册”等。 5.2集成开发环境WAVE6000如何获取 获取WAVE6000软件包的方法是,可以到伟福公司网站的“下载专区”网页去下载,其网址为http://www.wavecn.com/download/index.htm(如图5.1所示)。下载之后,可以得到一个名为“wave6000.exe”的安装文件,双击即可安装。 图5.1伟福公司网站下载WAVE6000 5.3集成开发环境WAVE6000如何安装 这里我们介绍在Windows XP操作系统之下,安装WAVE6000的过程。至于其他Windows版本的安装方法也基本如此。 对于从上述网站下载的一个名称类似于“wave6000.exe”的可执行文件,这是一个将近9MB(兆字节)的自解压文件。双击该文件,就会打开一个如图5.2所示的安装向导对话框,自动启动安装过程,然后还会显示一系列对话框。依照安装向导的指引顺序操作,即可完成安装过程。 安装完成后,它会自动在桌面上产生一个如图5.3所示的快捷图标。这时如果到Windows的资源管理器下查看,可以看到一个自动添加的,如图5.4所示的安装路径及其内容。至此,WAVE6000的系统文件已安装完毕。 建议读者: ①把从伟福网站下载得来的两个版本的汇编器(下载方法见第4.6节),Mpasm.exe和Mpasmwin.exe复制到C:\wave6000\BIN\COMPPIC目录下。②在C:\wave6000目录下,建立一个新的子目录Work作为我们的工作目录,存放在学习和操练过程中产生的各种文件,以免与WAVE6000系统文件混杂。 图5.2WAVE6000集成调试软件安装向导 图5.3WAVE6000快捷图标 图5.4安装之后的路径及其内容 5.4集成开发环境WAVE6000如何启动和退出 为了便于读者快速上手,下面将引导大家在WAVE6000环境下,创建自己的第一个汇编语言源文件,创建一个简单的项目,生成第一个目标程序,设置一个适宜的开发环境,并且进行一些基本的调试,以帮助读者尽快地熟悉集成开发环境WAVE6000典型的使用方法。 5.4.1WAVE6000的快速上手 启动WAVE6000的常用方、指令的执行过程、片内外设模块的动作和引脚信号的输出,从而实现对用户程序的模拟运行和功能调试、深层次逻辑性错误的排查。 因此可以说,WAVE6000为学习和应用PIC单片机的人们提供了一种虚拟的实战环境。对于单片机初学者来说,不用花钱也可实现边学边练的梦想; 对于单片机开发者来说,可以缩短开发周期和降低开发成本。总之,它是一种性能价格比极高的程序调试工具。 不过,软件模拟器也存在一定的局限性: ①它还不能模拟PIC16F84片内的某些功能; ②它不能帮我们查找目标板上的电路错误; ③它执行速度慢而只能适合调试那些实时性要求不高的程序。 除了以上这些工具软件以外,还包含了一些可供用户参考的技术资料文件。例如,在安装目录之下可以看到,预备了一些现成的示范程序; 又比如,在“帮助”菜单命令之下可以调出“WAVE6000使用手册”等。 5.2集成开发环境WAVE6000如何获取 获取WAVE6000软件包的方法是,可以到伟福公司网站的“下载专区”网页去下载,其网址为http://www.wavecn.com/download/index.htm(如图5.1所示)。下载之后,可以得到一个名为“wave6000.exe”的安装文件,双击即可安装。 图5.1伟福公司网站下载WAVE6000 5.3集成开发环境WAVE6000如何安装 这里我们介绍在Windows XP操作系统之下,安装WAVE6000的过程。至于其他Windows版本的安装方法也基本如此。 对于从上述网站下载的一个名称类似于“wave6000.exe”的可执行文件,这是一个将近9MB(兆字节)的自解压文件。双击该文件,就会打开一个如图5.2所示的安装向导对话框,自动启动安装过程,然后还会显示一系列对话框。依照安装向导的指引顺序操作,即可完成安装过程。 安装完成后,它会自动在桌面上产生一个如图5.3所示的快捷图标。这时如果到Windows的资源管理器下查看,可以看到一个自动添加的,如图5.4所示的安装路径及其内容。至此,WAVE6000的系统文件已安装完毕。 建议读者: ①把从伟福网站下载得来的两个版本的汇编器(下载方法见第4.6节),Mpasm.exe和Mpasmwin.exe复制到C:\wave6000\BIN\COMPPIC目录下。②在C:\wave6000目录下,建立一个新的子目录Work作为我们的工作目录,存放在学习和操练过程中产生的各种文件,以免与WAVE6000系统文件混杂。 图5.2WAVE6000集成调试软件安装向导 图5.3WAVE6000快捷图标 图5.4安装之后的路径及其内容 5.4集成开发环境WAVE6000如何启动和退出 为了便于读者快速上手,下面将引导大家在WAVE6000环境下,创建自己的第一个汇编语言源文件,创建一个简单的项目,生成第一个目标程序,设置一个适宜的开发环境,并且进行一些基本的调试,以帮助读者尽快地熟悉集成开发环境WAVE6000典型的使用方法。 5.4.1WAVE6000的快速上手 启动WAVE6000的常用方法是,双击“桌面”上预先建立的“WAVE6000集成调试软件”快捷图标。在启用WAVE6000之后,将会开启一个如图5.5所示的WAVE6000工作环境,也就是工作界面或主窗口。 图5.5WAVE6000工作环境 其实,WAVE6000工作环境刚刚被开启时,它自动停留在8031单片机的开发模式。这时需要我们做一些简单设置,方法是选用菜单命令“仿真器”→“仿真器设置...”,就会打开一个如图5.6所示的仿真器设置对话框,然后按照该图的提示,依次选择仿真器型号、搭配的仿真头型号、被仿真的单片机型号和晶体振荡器的频率,之后单击“好”图标按钮,即可切换到(如图5.5所示的)PIC16C84(兼容PIC16F84A)单片机的开发模式。 图5.6仿真器设置对话框 5.4.2WAVE6000工作环境简介 从如图5.5所示的WAVE6000工作环境中可以看到,这是一个标准的Windows应用程序窗体,从上到下排布着5个组成部分: 标题栏、菜单栏、工具栏、工作区和状态栏。 (1) 标题栏: 显示当前的仿真模式、单片机型号、项目文件名称及其所在的目录。最左边是一个系统按钮,右边是3个窗体控制按钮。 (2) 菜单栏: 其中共有8个菜单选项。从左到右依次为文件、编辑、搜索、项目、执行、窗口、仿真器和帮助。每个菜单选项控制着一个下拉菜单,有的下拉菜单中又包含子菜单。各个下拉菜单或子菜单中包含若干条菜单命令,所有WAVE6000的功能都可以通过操纵菜单命令来实现。每条菜单命令中均有一个加下画线的字母,代表加速键,在菜单下拉后,输入该字母可执行该命令。多数菜单命令的右面还注明了对应的快捷键(又叫热键),直接操作快捷键也可执行该命令。命令后跟“”符号的表示将开启一个子菜单; 命令后跟“...”符号的表示将开启一个对话框。 (3) 工具栏: 为用户提供了一种执行日常任务的便捷手段。单击工具栏上的图标按钮,可以快速实现对应的菜单命令功能,但比操作菜单命令、快捷键或加速键更方便,仅用鼠标单击一次即可完成。当把光标移至工具栏的任何一个图标按钮上时,在状态栏上就会自动显示该图标按钮的功能提示。如图5.7所示,整个工具栏可以被分解为6段,也就是由6组工具按钮组成,每组所含按钮功能相近,并且还定义了一个名称。如果用鼠标按住每组左边的“”部位,并拖曳到程序文件显示区,即可看到浮动显示的按钮组。如图5.8所示。 图5.7WAVE6000的工具栏 图5.8工具栏中的调试按钮组 (4) 工作区: 在此区域打开各种工作窗口。用于源程序的输入、编辑和汇编,以及显示各种反馈信息、人机对话信息、寄存器和存储器的内容变化情况等。工作区的布局可以灵活和多变,完全按照开发者的需要和喜好来人为调整。比如,移动窗口位置、改变窗口式样、关闭一些窗口或者再打开一些窗口等。在图5.5中显示的是一种典型布局,其中: ①寄存器和项目管理窗口,其中包含3个叠放窗口——特殊功能寄存器(SFR)窗口(也叫CPU窗口)、项目(Project)窗口、观察(Watch)窗口; ②文本文件编辑和显示空间,也可打法是,双击“桌面”上预先建立的“WAVE6000集成调试软件”快捷图标。在启用WAVE6000之后,将会开启一个如图5.5所示的WAVE6000工作环境,也就是工作界面或主窗口。 图5.5WAVE6000工作环境 其实,WAVE6000工作环境刚刚被开启时,它自动停留在8031单片机的开发模式。这时需要我们做一些简单设置,方法是选用菜单命令“仿真器”→“仿真器设置...”,就会打开一个如图5.6所示的仿真器设置对话框,然后按照该图的提示,依次选择仿真器型号、搭配的仿真头型号、被仿真的单片机型号和晶体振荡器的频率,之后单击“好”图标按钮,即可切换到(如图5.5所示的)PIC16C84(兼容PIC16F84A)单片机的开发模式。 图5.6仿真器设置对话框 5.4.2WAVE6000工作环境简介 从如图5.5所示的WAVE6000工作环境中可以看到,这是一个标准的Windows应用程序窗体,从上到下排布着5个组成部分: 标题栏、菜单栏、工具栏、工作区和状态栏。 (1) 标题栏: 显示当前的仿真模式、单片机型号、项目文件名称及其所在的目录。最左边是一个系统按钮,右边是3个窗体控制按钮。 (2) 菜单栏: 其中共有8个菜单选项。从左到右依次为文件、编辑、搜索、项目、执行、窗口、仿真器和帮助。每个菜单选项控制着一个下拉菜单,有的下拉菜单中又包含子菜单。各个下拉菜单或子菜单中包含若干条菜单命令,所有WAVE6000的功能都可以通过操纵菜单命令来实现。每条菜单命令中均有一个加下画线的字母,代表加速键,在菜单下拉后,输入该字母可执行该命令。多数菜单命令的右面还注明了对应的快捷键(又叫热键),直接操作快捷键也可执行该命令。命令后跟“”符号的表示将开启一个子菜单; 命令后跟“...”符号的表示将开启一个对话框。 (3) 工具栏: 为用户提供了一种执行日常任务的便捷手段。单击工具栏上的图标按钮,可以快速实现对应的菜单命令功能,但比操作菜单命令、快捷键或加速键更方便,仅用鼠标单击一次即可完成。当把光标移至工具栏的任何一个图标按钮上时,在状态栏上就会自动显示该图标按钮的功能提示。如图5.7所示,整个工具栏可以被分解为6段,也就是由6组工具按钮组成,每组所含按钮功能相近,并且还定义了一个名称。如果用鼠标按住每组左边的“”部位,并拖曳到程序文件显示区,即可看到浮动显示的按钮组。如图5.8所示。 图5.7WAVE6000的工具栏 图5.8工具栏中的调试按钮组 (4) 工作区: 在此区域打开各种工作窗口。用于源程序的输入、编辑和汇编,以及显示各种反馈信息、人机对话信息、寄存器和存储器的内容变化情况等。工作区的布局可以灵活和多变,完全按照开发者的需要和喜好来人为调整。比如,移动窗口位置、改变窗口式样、关闭一些窗口或者再打开一些窗口等。在图5.5中显示的是一种典型布局,其中: ①寄存器和项目管理窗口,其中包含3个叠放窗口——特殊功能寄存器(SFR)窗口(也叫CPU窗口)、项目(Project)窗口、观察(Watch)窗口; ②文本文件编辑和显示空间,也可打开多个叠放窗口,在此可以打开、观察、录入、编辑包括源程序在内的各种文本文件; ③信息输出窗口,其中包含2个叠放窗口——信息(Message)窗口、跟踪(Tracer)窗口,还可以再叠放书签(Bookmark)窗口和断点(Breakpoint)窗口; ④存储器窗口,其中包含2个叠放窗口——程序代码(Code)窗口、数据(Data)窗口,还可以再叠放固化数据(EEPROM)窗口。 (5) 状态栏: 其中包含着多个字段的信息,用于显示当前的运行状态。例如,仿真器或者软件模拟器准备就绪; 已经被执行的用户程序所消耗的CPU时间,其单位显示为“us”代表微秒(借此信息可以很方便地用来设计或调试一段延时程序); 程序计数器PC的当前值; 状态寄存器STATUS的当前值; 工作寄存器的当前值等。 5.4.3WAVE6000如何退出 退出WAVE6000的方法至少可以采用以下4种: (1) 用鼠标左键单击主窗口右上角的“”按钮; (2) 用鼠标左键双击主窗口左上角的“”按钮; (3) 选择菜单命令“文件”→“退出”; (4) 直接按下键盘上的组合键Alt+F4。 在退出WAVE6000集成开发环境时,系统会自动保存退出前的开发环境设置,以便下次再恢复本次工作的现场,继续本次尚未完成的调试任务。 5.5如何设置开发模式 对WAVE6000集成开发环境作某些设置的目的是,让WAVE6000按照用户的各项具体要求进行单片机的应用项目制作、程序调试等。方法是从WAVE6000的菜单栏中选择菜单命令“仿真器”→“仿真器设置...”,或者直接单击工具栏中“”的图标按钮,均可打开一个仿真器设置对话框,其中包含4个选项卡。 5.5.1语言设置卡 如图5.9所示,其中①“编译器路径”用于设置各种语言工具(包含汇编器、编译器、连接器)统一存放的路径(或称目录); ②“ASM命令行”用于设置启动DOS版汇编器时的命令行所要携带的参数,各参数的含义可参看第4.6节。如果在其中添加一个参数“P=16F84”,则可以省却在编写每个汇编语言源程序时,都要在头部添加一行“LISTP=16F84;”语句; ③“C命令行”用于设置启动C语言编译器时的命令行所要携带的参数,只有选择C语言编程时才会用到(本书不涉及); ④“LINK命令行”用于设置启动连接器时的命令行所要携带的参数,只有设计比较复杂的包含多个模块文件的项目时才会用到(本书不涉及); ⑤“编译器选择”用于选择哪款语言工具,这里只有Microchip一项可选; ⑥“缺省显示格式”保持默认选择即可。 图5.9仿真器设置对话框: 语言设置卡 5.5.2目标文件设置卡 如图5.10所示,其中①“地址选择”保持默认选择即可; ②其余3项选择分别是: 是否生成二进制格式目标文件; 是否生成十六进制格式目标文件; 是否利用“FFH”码填充剩余的程序存储器空间,这样利于延长Flash存储器的擦写寿命。 图5.10仿真器设置对话框: 目标文件设置卡 5.5.3仿真器设置卡 如图5.11所示,其中①“选择仿真器”用于在伟福系列仿真器中选开多个叠放窗口,在此可以打开、观察、录入、编辑包括源程序在内的各种文本文件; ③信息输出窗口,其中包含2个叠放窗口——信息(Message)窗口、跟踪(Tracer)窗口,还可以再叠放书签(Bookmark)窗口和断点(Breakpoint)窗口; ④存储器窗口,其中包含2个叠放窗口——程序代码(Code)窗口、数据(Data)窗口,还可以再叠放固化数据(EEPROM)窗口。 (5) 状态栏: 其中包含着多个字段的信息,用于显示当前的运行状态。例如,仿真器或者软件模拟器准备就绪; 已经被执行的用户程序所消耗的CPU时间,其单位显示为“us”代表微秒(借此信息可以很方便地用来设计或调试一段延时程序); 程序计数器PC的当前值; 状态寄存器STATUS的当前值; 工作寄存器的当前值等。 5.4.3WAVE6000如何退出 退出WAVE6000的方法至少可以采用以下4种: (1) 用鼠标左键单击主窗口右上角的“”按钮; (2) 用鼠标左键双击主窗口左上角的“”按钮; (3) 选择菜单命令“文件”→“退出”; (4) 直接按下键盘上的组合键Alt+F4。 在退出WAVE6000集成开发环境时,系统会自动保存退出前的开发环境设置,以便下次再恢复本次工作的现场,继续本次尚未完成的调试任务。 5.5如何设置开发模式 对WAVE6000集成开发环境作某些设置的目的是,让WAVE6000按照用户的各项具体要求进行单片机的应用项目制作、程序调试等。方法是从WAVE6000的菜单栏中选择菜单命令“仿真器”→“仿真器设置...”,或者直接单击工具栏中“”的图标按钮,均可打开一个仿真器设置对话框,其中包含4个选项卡。 5.5.1语言设置卡 如图5.9所示,其中①“编译器路径”用于设置各种语言工具(包含汇编器、编译器、连接器)统一存放的路径(或称目录); ②“ASM命令行”用于设置启动DOS版汇编器时的命令行所要携带的参数,各参数的含义可参看第4.6节。如果在其中添加一个参数“P=16F84”,则可以省却在编写每个汇编语言源程序时,都要在头部添加一行“LISTP=16F84;”语句; ③“C命令行”用于设置启动C语言编译器时的命令行所要携带的参数,只有选择C语言编程时才会用到(本书不涉及); ④“LINK命令行”用于设置启动连接器时的命令行所要携带的参数,只有设计比较复杂的包含多个模块文件的项目时才会用到(本书不涉及); ⑤“编译器选择”用于选择哪款语言工具,这里只有Microchip一项可选; ⑥“缺省显示格式”保持默认选择即可。 图5.9仿真器设置对话框: 语言设置卡 5.5.2目标文件设置卡 如图5.10所示,其中①“地址选择”保持默认选择即可; ②其余3项选择分别是: 是否生成二进制格式目标文件; 是否生成十六进制格式目标文件; 是否利用“FFH”码填充剩余的程序存储器空间,这样利于延长Flash存储器的擦写寿命。 图5.10仿真器设置对话框: 目标文件设置卡 5.5.3仿真器设置卡 如图5.11所示,其中①“选择仿真器”用于在伟福系列仿真器中选择一款支持PIC系列单片机的型号; ②“选择仿真头”用于在需要搭配的仿真头中选择一款支持PIC16F84单片机的型号; ③“选择CPU”用于选择一款具体的用户计划学习、实验或应用的目标单片机型号,本书将以学习PIC16F84A为主(兼容PIC16C84); ④“晶体频率”用于设置目标单片机的工作时钟频率,这对于观测用户程序的执行时间有用; ⑤“使用伟福软件模拟器”如果被勾选,则不需要用户购买硬件仿真器,也可以学习软件模拟开发技术,学习和操练单片机程序的调试方法。 图5.11仿真器设置对话框: 仿真器设置卡 其实,这里选择仿真器和仿真头不是目的,选择一款具体型号的单片机才是目的。但是,如果不选仿真器和仿真头,则目的无法达成。况且,一旦勾选“使用伟福软件模拟器”,以此来替代硬件仿真设备,选择仿真器和仿真头更是无实际意义。 5.5.4通信设置卡 如图5.12所示,用于设置一款硬件仿真器与微机之间的通信(本书不涉及)。只有在“使用伟福软件模拟器”选项被退选之后,也就是只有当一款具体的硬件仿真器被选中时,这些选项才处于可设置状态。 图5.12仿真器设置对话框: 通信设置卡 5.6如何创建、保存和打开源文件 读者在以后的学习和练习过程中,必定要在微机的硬盘中建立和生成一些实验项目和练习程序。为了提高学习效率,针对WAVE6000集成开发环境的运作特点,一开始就提示和教会读者如何有效地管理那些自建的实验项目,是十分必要的。 开始上手演练之前需要做的一项准备工作是,建立自己的“练习文件夹”(文件夹也叫目录)。其步骤就是: (1) 预先利用Windows的“资源管理器”,在硬盘上建立一个专门用于读者练习的文件夹(例如,这里在C:盘根目录下建立一个C:\ASMpic\); (2) 在该文件夹下为每一个实验建立一个子文件夹,用于保存一个实验项目内部的所有文件(包含原料性文件、工序性文件、结果性文件等)。例如,这里先建立了5个备用的子文件夹,如图5.13所示。 具体如何创建、保存和打开源文件可以有多种方法,这里讲解两种: 利用Windows下的“记事本”; 利用WAVE6000环境下文本编辑器。此外,还可以利用Microsoft Word等其他文本编辑器实现。 下面就以一个实验程序【项目范例5.1】为例,来演示和引领大家怎样初次创建自己的第一个源文件和第一个实验项目。 【项目范例5.1】循环递减实验程序 ★ 项目实现功能 该程序是一段双重循环程序,其实现的功能是: 定义一个寄存器变量(作为计数器)并赋给一个不等于0的任意值作为初值N(在此假设选10,也就是0AH或0x0A),然后循环递减,直到结果为0。这时再次给计数器赋初值N,再循环递减,减到0时再次赋初值N,…,循环往复。 ★ 汇编程序流程 本项目的汇编语言程序的流程图,如图5.14所示。 图5.13预先建立练习文件夹 图5.14程序流程图 ★ 汇编程序清单 ;=============================================================择一款支持PIC系列单片机的型号; ②“选择仿真头”用于在需要搭配的仿真头中选择一款支持PIC16F84单片机的型号; ③“选择CPU”用于选择一款具体的用户计划学习、实验或应用的目标单片机型号,本书将以学习PIC16F84A为主(兼容PIC16C84); ④“晶体频率”用于设置目标单片机的工作时钟频率,这对于观测用户程序的执行时间有用; ⑤“使用伟福软件模拟器”如果被勾选,则不需要用户购买硬件仿真器,也可以学习软件模拟开发技术,学习和操练单片机程序的调试方法。 图5.11仿真器设置对话框: 仿真器设置卡 其实,这里选择仿真器和仿真头不是目的,选择一款具体型号的单片机才是目的。但是,如果不选仿真器和仿真头,则目的无法达成。况且,一旦勾选“使用伟福软件模拟器”,以此来替代硬件仿真设备,选择仿真器和仿真头更是无实际意义。 5.5.4通信设置卡 如图5.12所示,用于设置一款硬件仿真器与微机之间的通信(本书不涉及)。只有在“使用伟福软件模拟器”选项被退选之后,也就是只有当一款具体的硬件仿真器被选中时,这些选项才处于可设置状态。 图5.12仿真器设置对话框: 通信设置卡 5.6如何创建、保存和打开源文件 读者在以后的学习和练习过程中,必定要在微机的硬盘中建立和生成一些实验项目和练习程序。为了提高学习效率,针对WAVE6000集成开发环境的运作特点,一开始就提示和教会读者如何有效地管理那些自建的实验项目,是十分必要的。 开始上手演练之前需要做的一项准备工作是,建立自己的“练习文件夹”(文件夹也叫目录)。其步骤就是: (1) 预先利用Windows的“资源管理器”,在硬盘上建立一个专门用于读者练习的文件夹(例如,这里在C:盘根目录下建立一个C:\ASMpic\); (2) 在该文件夹下为每一个实验建立一个子文件夹,用于保存一个实验项目内部的所有文件(包含原料性文件、工序性文件、结果性文件等)。例如,这里先建立了5个备用的子文件夹,如图5.13所示。 具体如何创建、保存和打开源文件可以有多种方法,这里讲解两种: 利用Windows下的“记事本”; 利用WAVE6000环境下文本编辑器。此外,还可以利用Microsoft Word等其他文本编辑器实现。 下面就以一个实验程序【项目范例5.1】为例,来演示和引领大家怎样初次创建自己的第一个源文件和第一个实验项目。 【项目范例5.1】循环递减实验程序 ★ 项目实现功能 该程序是一段双重循环程序,其实现的功能是: 定义一个寄存器变量(作为计数器)并赋给一个不等于0的任意值作为初值N(在此假设选10,也就是0AH或0x0A),然后循环递减,直到结果为0。这时再次给计数器赋初值N,再循环递减,减到0时再次赋初值N,…,循环往复。 ★ 汇编程序流程 本项目的汇编语言程序的流程图,如图5.14所示。 图5.13预先建立练习文件夹 图5.14程序流程图 ★ 汇编程序清单 ;==================================================================== ;8位二进制循环递减计数器 ;项目名称: PROJ5-1.PRJ ;源文件名: EXAM5-1.ASM ;设计编程: LXH,2016/08/28 ;==================================================================== LIST P=16F84   ;告知汇编器,你所选单片机具体型号 temp equ 0x20  ;定义RAM的20H单元为计数器变量temp f equ 1   ;令f等于1,用f指定目标寄存器 org 0x000  ;设置复位矢量 reset goto start  ;放置一条到主程序的跳转指令 org 0x008  ;指定主程序在程序存储器的起始地址 start movlw 0x0a  ;经W预置一个非0值为temp的初值 movwf temp  ;初始化计数器变量temp loop call delay  ;调用延时子程序 decfsz temp,f  ;temp递减,其结果决定是否跳一步 goto loop  ;结果不为0,则跳转到loop处 goto start  ;结果为0,则跳转到start处 ;---------------延时子程序---------------------------- delay   ;子程序名,也是子程序入口地址 movlw 0ffh  ;将外层循环参数值FFH经过W movwf 22h   ;送入用作外循环变量的22H单元 lp0 movlw 0ffh  ;将内层循环参数值FFH经过 movwf 21h   ;送入用作内循环变量的21H单元 lp1 decfsz 21h,1  ;变量21H内容递减,若为0跳跃 goto lp1   ;跳转到lp1处 decfsz 22h,1   ;变量22H内容递减,若为0跳跃 goto lp0   ;跳转到lp0处 return   ;返回主程序 ;----------------------------------------------------- end   ;源程序结束 ;==================================================================== 5.6.1如何利用记事本创建源文件 Windows操作系统之下的“记事本”为广大读者和计算机用户所熟悉。另外,记事本还具有很强的中文编辑能力。为了充分发挥这些优势,那么就可以把这个工具软件纳入到语言工具链中来使用。 如图5.15所示,就是利用记事本创建和录入源文件的画面。注意: 保存时必须采用“.asm”作为源文件扩展名,还应该保存到为一个实验项目预定的子文件夹之内。 图5.15使用记事本创建源文件 如图5.16所示,这里为一个实验项目做预备。所选子文件夹为“C:\ASMpic\【项目范例5.1】循环递减实======= ;8位二进制循环递减计数器 ;项目名称: PROJ5-1.PRJ ;源文件名: EXAM5-1.ASM ;设计编程: LXH,2016/08/28 ;==================================================================== LIST P=16F84   ;告知汇编器,你所选单片机具体型号 temp equ 0x20  ;定义RAM的20H单元为计数器变量temp f equ 1   ;令f等于1,用f指定目标寄存器 org 0x000  ;设置复位矢量 reset goto start  ;放置一条到主程序的跳转指令 org 0x008  ;指定主程序在程序存储器的起始地址 start movlw 0x0a  ;经W预置一个非0值为temp的初值 movwf temp  ;初始化计数器变量temp loop call delay  ;调用延时子程序 decfsz temp,f  ;temp递减,其结果决定是否跳一步 goto loop  ;结果不为0,则跳转到loop处 goto start  ;结果为0,则跳转到start处 ;---------------延时子程序---------------------------- delay   ;子程序名,也是子程序入口地址 movlw 0ffh  ;将外层循环参数值FFH经过W movwf 22h   ;送入用作外循环变量的22H单元 lp0 movlw 0ffh  ;将内层循环参数值FFH经过 movwf 21h   ;送入用作内循环变量的21H单元 lp1 decfsz 21h,1  ;变量21H内容递减,若为0跳跃 goto lp1   ;跳转到lp1处 decfsz 22h,1   ;变量22H内容递减,若为0跳跃 goto lp0   ;跳转到lp0处 return   ;返回主程序 ;----------------------------------------------------- end   ;源程序结束 ;==================================================================== 5.6.1如何利用记事本创建源文件 Windows操作系统之下的“记事本”为广大读者和计算机用户所熟悉。另外,记事本还具有很强的中文编辑能力。为了充分发挥这些优势,那么就可以把这个工具软件纳入到语言工具链中来使用。 如图5.15所示,就是利用记事本创建和录入源文件的画面。注意: 保存时必须采用“.asm”作为源文件扩展名,还应该保存到为一个实验项目预定的子文件夹之内。 图5.15使用记事本创建源文件 如图5.16所示,这里为一个实验项目做预备。所选子文件夹为“C:\ASMpic\【项目范例5.1】循环递减实验程序”; 同时定义的文件名为“EXAM51a.ASM”。 图5.16保存到预定文件夹 5.6.2如何利用WAVE6000编辑器创建源文件 在如图5.7所示的WAVE6000工作界面中,选择菜单命令“文件”→“新建文件”或图标按钮时,WAVE6000将会自动调用文本编辑器。工作区内会出现一个如图5.17所示的、浮动形式的文本编辑窗口,并且自动定义一个文件名“NONAME1”。 图5.17新创建源的文本编辑窗口 在图5.17窗口中,如果单击右上角的最大化按钮,可以看到该窗口呈现的样式变成了如图5.18所示的形式。这种形式展现出更多的信息,比如,底部拥有自己的状态栏。至此,表明WAVE6000编辑器为创建源文件作好了准备。此时它的标题栏中显示一个默认文件名“NONAME1”,表示你尚未给源程序文件命名。这时你必须先录入、后命名和保存。 图5.18最大化的文本编辑窗口 在源程序的全部或部分被录入之后,即可进行保存和命名操作。这时选用菜单命令“文件”→“另存为...”,随即会出现一个如图5.19所示的保存文件对话框。从该对话框中,可以选定磁盘、文件夹、文件类型和定义文件名。例如,保存文件夹为“C:\ASMpic\【项目范例5.1】循环递减实验程序”,文件名定义为“EXAM51b.ASM”。然后单击“保存”按钮即可关闭对话框,完成保存和命名操作。 图5.19命名和保存文件对话框 一旦源程序文件被成功保存,如果你到Windows资源管理器之下去查看,还可以看到的“C:\ASMpic\【项目范例5.1】循环递减实验程序”目录中,产生了一个新文件“EXAM51b.ASM”。如图5.20所示。验程序”; 同时定义的文件名为“EXAM51a.ASM”。 图5.16保存到预定文件夹 5.6.2如何利用WAVE6000编辑器创建源文件 在如图5.7所示的WAVE6000工作界面中,选择菜单命令“文件”→“新建文件”或图标按钮时,WAVE6000将会自动调用文本编辑器。工作区内会出现一个如图5.17所示的、浮动形式的文本编辑窗口,并且自动定义一个文件名“NONAME1”。 图5.17新创建源的文本编辑窗口 在图5.17窗口中,如果单击右上角的最大化按钮,可以看到该窗口呈现的样式变成了如图5.18所示的形式。这种形式展现出更多的信息,比如,底部拥有自己的状态栏。至此,表明WAVE6000编辑器为创建源文件作好了准备。此时它的标题栏中显示一个默认文件名“NONAME1”,表示你尚未给源程序文件命名。这时你必须先录入、后命名和保存。 图5.18最大化的文本编辑窗口 在源程序的全部或部分被录入之后,即可进行保存和命名操作。这时选用菜单命令“文件”→“另存为...”,随即会出现一个如图5.19所示的保存文件对话框。从该对话框中,可以选定磁盘、文件夹、文件类型和定义文件名。例如,保存文件夹为“C:\ASMpic\【项目范例5.1】循环递减实验程序”,文件名定义为“EXAM51b.ASM”。然后单击“保存”按钮即可关闭对话框,完成保存和命名操作。 图5.19命名和保存文件对话框 一旦源程序文件被成功保存,如果你到Windows资源管理器之下去查看,还可以看到的“C:\ASMpic\【项目范例5.1】循环递减实验程序”目录中,产生了一个新文件“EXAM51b.ASM”。如图5.20所示。 国家积极倡导的素质教育和创新工程,旨在提高受教育者的素质和培养将所学知识转化为生产力、创造力和经济效益的能力。为了更好地适应发展潮流和就业需要,作者认为,单片机的学习和应用,可以为电子、电信、电脑、电器、机电以及相关领域的爱好者、从业者和在校生,提供了一个容易激发学习热情和创作欲望的、可操作性很强的学习途径和实践平台。至今,许多老一辈的工程师、专家、教授当年都是无线电爱好者。如果说上世纪五十年代起,无线电世界造就了几代电子精英,那么当今的单片机世界也必将会培育出更多的电子英才。 作者从事教学30多年,教过中专、大专、本科,主讲过大学物理、电路分析、程控交换原理、单片机原理、嵌入式系统等30余个学科。曾经指导过3届全国大学生电子竞赛并且从中获奖,其中一次是2007年应河北师范大学职业技术学院之邀作为外聘专家,其间指导了单片机应用项目的开发。还曾应河北师范大学之邀担任2009年暑期国家级骨干教师培训班客座教授,其间选用了作者的单片机著作做教材,并聘请作者为单片机学科主讲。也曾应邀为多家电子产品开发生产企业培训研发工程师,或为其担任技术顾问。还应聘为中国嵌入系统产业协会、中国物联网产业协会专家组成员。 从30余年的技术研究和文字创作过程中,探索出了一套通过文字向读者传达知识和技术的高效快捷的写作模式,并且经历了时空的检验。再者,近40年的教学经历,也必定会在讲解内容的精选与锤炼、讲解顺序的编排与优化方面,更增添一份得天独厚的优势,来为读者提供更多的便利。 本书的编写目标是,努力追求“一读就懂、读了能用、一用就灵”的学习效果;不仅能“给人以鱼”,而且更注重“授人以渔”;不仅传授单片机知识,而且更注重教会开发方法和应用技巧;不仅可以提高理论水平,而且更侧重强化将所学知识转化为实际工作的能力;力图实现将每一位有志于迈进单片机王国的外行人,培养成既懂单片机知识,又能掌握以单片机为核心的智能电子产品开发技能的内行人。为了达到这一目标,除了恰当的引导和正确的学习方法之外,当然也离不开读者的自身努力。“兴趣是最好的老师!”本人深信这个哲理。培养读者的学习兴趣比传授知识更重要。一旦帮助读者树立起浓厚的学习兴趣和强烈的求知欲望,就很可能达到令人受益终生的特殊效果,这也是每一位教育工作者追求的最高目标。 本书在内容编排上充分注意了门槛低、入门易、上手快、层次性、可读性、实践性、系统性和完整性,力求覆盖从单片机理论学习到开发应用的各个阶段,所有必不可少的硬件和软件知识、开发环境和开发工具的使用方法和技巧等内容。尽可能不需要翻阅其他书籍就可以学习到,从单片机入门到单片机开发制作各个环节的全程知识。对于一名初步具备电子技术和微机应用基础知识的初学者,成长为一位单片机应用工程师,所需要学习的核心知识主要有:单片机硬件系统;单片机指令系统;汇编程序设计基础以及汇编器的用法;单片机仿真器及其用法;程序烧录器及其用法。这些内容书中都有介绍。此外,为了突出实践性,在每个需要演练的技术点之后都精心设计了1~3个针对性强、实用价值高的实验范例,并且调试成功,每个范例大致包括“项目实现功能;硬件电路规