词条 | MCD1 |
释义 | 目 录 第一部分 MCD1(MPLAB-ICD) ……………………………………………3 § 第一章 MPLAB-ICD概述 ……………………………………………3 1.1 什么是MPLAB-ICD …………………………………………………………3 1.2 MPLAB-ICD能帮你做什么? ………………………………………………3 1.3 MPLAB-ICD使用的资源 ……………………………………………………4 1.4 MPLAB-ICD的各组成部件 …………………………………………………4 1.4.1 MPLAB-ICD主机 ………………………………………………………4 1.4.2 MPLAB-ICD仿真头 ……………………………………………………5 1.4.3 MPLAB-IDE集成开发软件包 …………………………………………5 1.4.4 ICDDEMO 教学实验板 …………………………………………………5 1.5 MPLAB-IDE集成开发环境 …………………………………………………6 § 第二章 MPLAB-ICD的安装和使用 …………………………………………7 2.1 MPLAB-ICD对计算机主机的要求 …………………………………………7 2.2 安装硬件 ………………………………………………………………………7 2.3 安装软件 ………………………………………………………………………9 2.4 使用MPLAB-ICD ……………………………………………………………9 2.4.1 建立一个16进制调试文件 ……………………………………………9 2.4.2 设置MPLAB-ICD和MPLAB …………………………………………15 2.4.3 对PIC16F877进行编程 ………………………………………………19 2.4.4 运行及调试 ……………………………………………………………20 第二部分 MCD1DEMO教学实验板 ……………………………………22 前言MCD1DEMO教学实验板功能概述 ……………………………22 § 第三章 用实验板作一个开发实验 ………………………………………23 § 附录 MCD-DEMO线路图 MCD-DEMO元件位置图(各跳线、拔码开关编号) MCD-DEMO跳线、拔码开关操作说明 第一部分 MCD1(MPLAB-ICD) 第一章 MPLAB-ICD 概 述 1.1. 什么是MPLAB-ICD MPLAB-ICD是针对MICROCHIP公司的PIC16F87X系列MCU的廉价开发工具。MPLAB-ICD既是一个在线调试器,又是一个编程器。它工作于MPLAB-IDE集成开发环境下,利用了MICROCHIP公司的在线串行编程技术(In-Circuit Serial Programming™),在所仿真的MCU(PIC16F87X)中嵌入监控程序来实现实时仿真。将其仿真头直接连接到应用系统的MCU插座中,就如同一片PIC16F87X一样运行用户的应用程序。 MPLAB-ICD可以用于PIC16F87x或其他某些型号(PIC16C/Fxxx) MCU应用产品的电路与程序调试。 MPLAB-ICD有如下特性: 在线调试功能 源程序级的代码调试 实时、单步或断点运行程序 寄存器观察 可由目标系统提供工作电压 工作电压范围为3.0V 到 5.5V 工作频率范围为32KHZ到20MHZ 工作于MPLAB-IDE集成开发环境,该软件兼容Microsoft Windows ® 3.X、Windows 95/98、 Windows NT ® 和 Windows 2000 ®等操作系统。 RS-232 串行接口方式 1.2. MPLAB-ICD能帮你做什么? MPLAB-ICD可以让你: 实时仿真调试源程序 调试目标板硬件系统 使用MICROCHIP的“在线串行编程技术(In-Circuit Serial Programming™)”对目标应用控制器进行编程。 1.3. MPLAB-ICD使用的资源 由于仿真MCU(PIC16F87X(A))内嵌调试监控程序和使用MICROCHIP“在线串行编程”功能,MPLAB-ICD将会占用仿真MCU中的以下资源: MCLR/VPP脚(系统复位/编程电压脚) 禁止低电压“在线串行编程(ICSP)” RB6和RB7保留为编程和在线调试用 六个通用文件寄存器保留给调试监控程序(见表1-1) 程序存储器第一条指令(地址0X0000)必须是空操作指令NOP 程序存储器的最后256或88个字被保留用来存放调试代码。(根据芯片类型不同而所占字节不同,见表1-1)。 处理器类型 被占用的通用寄存器 被占用的程序存储器 PIC16F870/871/872(A) 0x70, 0x0BB-0x0BF 0x06E0-0x07FF PIC16F873/874(A) 0x70, 0x0EB-0x0F0 0x0EE0-0x0FFF PIC16F876/877(A) 0x70, 0x1EB-0x1EF 0x1F00-0x1FFF 表1-1 不同芯片被占用的资源 1.4. MPLAB-ICD的各组成部件 MPLAB-ICD由以下部件构成: MCD1(MPLAB-ICD)主机 MCD1(MPLAB-ICD)仿真头 MPLAB-IDE集成开发软件包(配套光盘内) MCD1-DEMO教学实验板 9V,0.5A的直流电源适配器 1.4.1 MPLAB-ICD主机 MPLAB-ICD主机包括RS232接口与主控MCU,掌控与上位机的通讯、控制逻辑和所有的调试、编程功能。 MPLAB-ICD主机上可以用自身输入电源,也可以来自用户目标模块(或教学实验板)的供电,所需要的电流最大为70mA(不包括目标板自身消耗的电流)。 1.4.2 MPLAB-ICD仿真头 MPLAB-ICD仿真头上有: RJ-6插座:提供与主机的接口 40脚IC座:仿真MCU插座 引出脚:提供与应用目标板的接口(根据所要仿真的芯片型号选择40或28引脚) 跳线J2:用于选择仿真器主机的供电来自用户板还是自身外接电源(跳线置1,2时由用户板供电,置2,3时用自身电源) 使用时,仿真头相当于一实际MCU,插在应用目标板上的MCU插座上。 1.4.3 MPLAB-IDE集成开发软件包 MPLAB-IDE集成开发软件包为用户提供一个开发、调试的集成开发环境,可运行于WINDOWS95/98或WINDOWS NT,WINDOWS2000等操作系统。 1.4.4 MCD1-DEMO教学实验板 MCD1-DEMO教学实验板和与之配套的学习程序是PIC单片机学习网专门设计的。目的在于使初学者能够利用它较快地掌握PIC16C/FXXX单片机应用产品的电路与程序设计技术。教学实验演示板上包括了MCU应用产品中常用的电路模块。在此基础上,还为初学者设计了一些足以体现各个常用电路模块功能的实验与程序范例,以便于初学者通过自学或在有经验的人员指导下能够较好的掌握其设计方法。 教学实验板通过MCD1仿真头,或直接将MCU插在实验板上并用六芯连接电缆与MCD1主机连接 1.5 MPLAB-IDE集成开发环境 MPLAB-IDE提供一个开发、调试用户目标系统的集成开发环境。MPLAB-ICD相应的软件也嵌入到了MPLAB-IDE软件包里。 本资料主要介绍MPLAB-ICD的设置和基本操作,关于MPLAB-IDE的详细介绍,请参考《MPLAB-IDE集成开发环境用户指南》。(MICROCHIP文档资料号:DS51025,英文版,需要的用户可以到MICROCHIP网站或PIC单片机学习网下载)。 第二章 MPLAB-ICD的安装和使用 2.1 MPLAB-ICD对计算机主机的要求 为了更好地发挥调试系统的性能,必须把MPLAB-IDE软件包安装到符合以下要求的计算机里: 奔腾(PENTIUM)系列PC或兼容计算机 微软公司的操作系统:WINDOWS95/98,WINDOWS-NT,或者WINDOWS2000 至少16MB的系统内存,推荐使用32MB系统内存 45MB可使用的磁盘空间 一个空余的串行通讯口 2.2 安装硬件 请按下列步骤安装MCD1硬件系统: 2.2.1安装仿真MCU 按三种不同情况安装仿真MCU。 1、目标板上没有安装RJ-6插座:将仿真MCU (PIC16F87X)插入到MPLAB-ICD仿真头上仿真MCU插座(40脚IC座)里面。( 参见表2-1) 用户目标板上的MCU型号 仿真头上相应的MCU型号 PIC16F870(A) PIC16F871(A) PIC16F871(A) PIC16F871(A) PIC16F872(A) PIC16F871(A) PIC16F873(A) PIC16F874(A) PIC16F874(A) PIC16F874(A) PIC16F876(A) PIC16F877(A) PIC16F877(A) PIC16F877(A) 表2-1 2、目标板上已安装RJ-6插座:将仿真MCU-PIC16F87X直接插入目标上的MCU插座里面。 3、目标板上没有安装RJ-6插座:将仿真MCU-PIC16F87X直接插入目标上的MCU插座里面,用配套6PIN连接线连接MCD1主机和用户板【各线功能如下: 黑线:Vpp,红线:+VDD,绿线:GND,黄线RB7,白线RB6,棕线RB3(若仿真器使用自身电源则VCC不用接用户板)】。 2.2.2连接主机、仿真头和目标(教学实验)板 1、安装仿真头:把仿真头插入应用目标(教学演示)板的MCU插座里。如果调试的MCU是28引脚,则需将仿真头的引出脚调整成28脚,然后插到目标(教学实验)板上的28脚的锁紧座里。 如目标板上有安装RJ-6插座或用配套6芯排线连接,则不需此步骤。 RJ-6电缆内部各芯的分配如下表2-2: J2各芯编号 信号 6 RB3 5 RB6 4 RB7 3 接地 2 +VDD 1 Vpp 表2-2 2、用六芯扁平电缆连接MCD1主机和MCD1-DEMO教学实验板(或用户应用目标板)。 3、用RS-232串行口专用九芯电缆连接计算机的串行口和MCD1主机。 4、接上教学实验板(或用户应用目标板)的电源。使用的电源为9V、0.5A的电源适配器(插头中心为电源负极)。 5、打开计算机主机电源。 2.3 安装软件 MPLAB-ICD是MPLAB-IDE集成开发环境的一个可插入(ADD-ON)工具。用户应按如下步骤安装MPLAB-IDE集成开发环境软件包: 1.进入WINDOWS环境里,把MCD1 的CD-ROM插入光盘驱动器里。在光盘里找到MPLAB-IDE 5.70.40的软件包. 2.执行安装程序: 在WINDOWS操作界面上找到安装文件后,直接点击运行即可。 3.按指导过程来安装MPLAB-IDE集成开发环境软件包。一定记住安装过程中当出现要求选择MPLAB-ICD部件的会话窗口时,要点击并选择该部件,以便系统安装。 2. 4 使用(MCD1)MPLAB-ICD 连接硬件并安装完软件之后,用户可以先在MPLAB-IDE的纯编辑模式下编写程序。在*.ASM程序编辑完成后就可以开始使用ICD。以下将以源程序tut877.asm为例说明使用过程。 2.4.1 建立一个16进制调试文件 用户需要建立一个新“项目”(*.pjt),以便将源文件*.asm和建立的十六进制文件*.hex包含在内进行调试。 2.4.1.1新“项目”目录 为这个新项目建立一个目录:\\MPLAB\\tut877。将tut877.asm文件从\\MPLAB目录移动到该目录下面(注意:MPLAB5.XX要求项目*.pjt必须和载入源文件*.asm处于同一个文件夹)。 2.4.1.2 新“项目” 选择Project>New Project,选择新项目所在的路径,然后在文件名会话窗口里输入tut877.prj。 点击“OK”按钮(图2-1)之后编辑项目会话窗口(Edit Project dialog)将会打开(如图2-2所示)。 图2-1:建立新项目- tut877.prj 图2-2:设置开发模式前编辑项目会话窗口 2.4.1.3 项目会话窗口 用户将会在如图2-2所示的编辑项目会话窗口看到开发模式设置(Development Mode)。图中显示出当前工作于软件模拟(MPLAB-SIM)方式,MCU是PIC12C508处理器。这些状态都是用户以前使用MPLAB-IDE集成开发环境时的设置。而现在则需要改变这些设置。 点击“Change”按钮后将会出现开发模式设置(Development Mode)对话框(如图2-3所示)。 图2-3:设置开发模式 在Tools菜单条里选择“MPLAB-ICD Debugger”。在处理器(processor)窗口选择PIC16F877,然后点击“OK”(注意: 如果仿真或烧写PIC87XA芯片,则只需要选取对应的不带A型号。比如调试16F877A时,只需要将仿真头芯片替换为16F877A,并选取芯片型号为16F877)。 这时MPLAB-IDE将和MPLAB-ICD主机之间建立通讯。在这个过程中,MPLAB-ICD会话窗口将会同时出现。 假如你看到一条错误报告信息,请重新检查一下电源连线、插座是否牢固可靠、电缆是否连接正确。 注意在编辑项目会话窗口(Edit Project dialog)里是否正确选择了开发模式和处理器设置。 在编辑项目会话窗口里的项目文件(Project File)区域里用鼠标选取tut877.hex文件,然后点击节点属性(Node Property)按钮(如图2-4)。执行这项操作后系统将会弹出一个节点属性(Node Property)窗口。 图2-4:编辑项目会话窗口 2.4.1.4 设置节点属性 节点属性会话窗口显示出涉及到MPLAB-ICD的参数开关,这些参数都是MPASM汇编器的。当你首次打开该会话窗口时,所看到的设置均为该开发工具的默认设置。对于本范例中的应用,没有必要修改该默认设置。 点击“OK”按钮(如图2-5),返回到编辑项目会话窗口(Edit Project dialog)。 图2-5:节点属性会话窗口 图2-6:增加节点 2.4.1.5 增加节点 在编辑项目会话窗口里点击增加节点 (Add Node),打开添加节点会话窗口。选择tut877.asm,然后点击OK即可(如图2-6)。 2.4.1.6 完成对项目的设置 在这个简单的例子里,在路径选择框里没有指定目录。随着你的应用越来越复杂,用户将有可能需要在相应的选择框里指定包含相应文件的目录路径。 MPASM通常会把十六进制文件的文件名(a.hex)取得和源文件(a.asm)的文件名一样。当建立(BUILT)tut877.prj项目的时候,项目管理器将会生成一个十六进制文件tut877.hex。 图2-7:带节点的编辑项目会话窗口 点击“OK”按钮,关闭编辑项目会话窗口(Edit Project dialog),然后从MPLAB-IDE菜单项里选择选择命令:Project>Save Project 保存新的项目。这样就完成了对项目的设置。 2.4.1.7 建立项目(Make Project) 现在您要从MPLAB-IDE的菜单项里选择Project>Make Project,使用MPASM宏汇编来程序来汇编应用程序。创建(BUILD ALL)以后的结果窗口中可以看到发送给汇编器的命令行和结果信息(如图2-8所示)。 图2-8:创建(BUILT)以后的结果窗口 其中主要有以下三种提示信息: 1、错误(error):表示源文件在…有错误,用户应根据提示修改源程序; 2、警告(warring); 3、信息(Message):这并不一定是错误,用户的程序代码仍然会被正确地编译。例如:信息【302】是提示,在指示的行号(31,32和34)里用户指定了一个并不位于第0页面(BANK 0)的通用寄存器。 点击创建结果(BUILT RESULTS)窗口右上角的图标X将关闭窗口。 2.4.2 设置MPLAB-ICD和MPLAB 这时候,MPLAB-ICD会话窗口将会出现在计算机的桌面上。用户须选择适当的选择项来设置MPLAB-IDE,使之能和MPLAB-ICD的硬件一起工作(图2-9) 图2-9:MPLAB-ICD会话窗口 选项 选项说明 状态 (Status)菜单(不可选择项) 状态栏显示被执行的MPLAB-ICD函数和状态。当编程时,可以从这里看到进程。当操作完成后,状态栏将显示信息“Waiting for use command”(等待用户命令) 串行口和波特率菜单 要确信这些设置合乎你的系统要求 上载(Upload)选项菜单 现在选择最小值,往后的范例中将会调试改变该数值 时钟选择范围菜单 选择工作频率范围:2MHZ~10MHZ 表2-1:MPLAB-ICD会话窗口 2.4.2.1 设置ICD的编程和调试选项 为了对PIC16F87X芯片进行编程,必须先对ICD选项会话窗口(ICD Options dialog)进行设置工作,为编程作好准备。在MPLAB-ICD的会话窗口里点击Options,打开ICD选项会话窗口(图2-10)。 图2-10:MPLAB-ICD选项会话窗口 注意:使用MCD1配套实验板时,该实验板默认是在晶体振荡方式,故要选择Oscillator为XT模式(因4M晶振刚处于XT与HS的临界状态,所以如果你用XT振荡调试不顺利可换成HS再重新PROGRAM试试). 2.4.2.2 配置位和芯片类型选择 用户将要在这个ICD选项会话窗口中设置PIC16F87X处理器的各种配置位。 点击图中相应的箭头图标,将弹出一个对应的列表,用户应根据需要从该列表中选择相应的选择项。可选项及相应说明如表2-2所示。 其中,芯片(Device)栏在本例中显示的是PIC16F877,这是在开发模式设置(Development Mode)中设定好的。要想改变这一设定,用户需退出当前设置,输入命令:Options > Development Mode ,然后正确选择芯片。 可选项 选项说明 Oscillator 振荡器 本范例里使用4.000Mhz的晶体振荡器,应选择为XT. Watchdog Timer 看门狗定时器 对于本范例里,看门狗定时器(WDT)应关闭 Power Up Timer 上电延时定时器 对于本范例里,上电延时定时器(PWRT)应关闭 Brown Out Detect 电源掉电监测 对于本范例里,电源掉电监测(BOD)应关闭 Low Voltage Program 低电压编程 当使用MPLAB-ICD时,低电压烧写应禁止。可以用RB3作为数字I/O。 Code Protect Data EEPROM数据保护 本范例关闭了EEPROM数据保护 Flash Memory Write 闪速存储器写 本范例没有使能通过EECON寄存器对FLASH存储空间进行擦写 Code Protect 代码保护 本范例关闭了代码保护 表2-2:配置位和芯片类型的选择 2.4.2.3 芯片ID码和代码校验和 在图2-10所示的MPLAB-ICD选项会话窗口中,用户还会看到代码校验和 (CHECHSUME)及ID代码(ID Code)这两个窗口。在本范例中,我们选择“Use Checksum as ID”,使用代码校验和(CHECHSUME)作为ID代码。 2.4.2.4 电压选择 用鼠标点击更新(Update)按钮即可检查目仿真器主机上电源Vdd(芯片供电)和Vpp(编程电源)的电压值。 MPLAB-ICD的编程电压大约为13伏特,该电压是将电源电压Vdd通过开关升压电路(Boost Converter)升压后得到的。 2.4.2.5 编程选项 程序地址范围(起始地址和结束地址)是可以被读取、编程或校验的程序或数据存储器地址范围。默认的程序地址范围被设定为用户所选芯片的程序存储器的最大范围。本范例将使用默认的程序地址范围。 确信程序选择项(Program Options)下的所有检查项都已经选中(有“√”符号为选中)。这意味着所有存储器、ID代码、配置位都将被编程。而且所有的存储器都将会在编程之前被全部清除;芯片被设置为调试(Debug)模式。 2.4.3 对PIC16F877进行编程 点击Program按钮,这时候就会将tut877.hex这个十六进制文件和调试代码(Debug Code)写入MPLAB-ICD仿真头或用户目标板(教学实验板)中的PIC16F87X里。编程过程可能要用几分钟。在编程过程中,状态栏(Status box)里将会显示当前的操作顺序。当编程过程结束后状态栏里将会显示信息“Waiting for user command”(等待用户命令)。 注意:调试代码(Debug Code)是PIC16F87X微控制器里地址范围1F00h~1FFFh的一组特殊代码,这些区域用来存放MPLAB-ICD在线调试功能的监控程序。 用户可以最小化或移动MPLAB-ICD会话窗口而不能关闭它:关闭MPLAB-ICD会话窗口将退出MPLAB-ICD开发环境。假如想重新进入MPLAB-ICD,使用命令:Options>Development Mode选择MPLAB-ICD并点击OK即可重新使用ICD环境。 2.4.4 运行及调试 最后要做的就是运行程序,并对其进行调试。MPLAB为方便使用,把常用的一些运行、调试命令及窗口选项以小图标的形式置于工具栏中。当用户鼠标移至小图标上时,背景窗体的左下角将会显示相应的说明。 以下对常用运行、调试命令及窗口选项进行简要的介绍。 运行(Run):点击此项后芯片将全速运行片内程序,直至遇到断点或是接到了停止命令。图标: 停止(Halt the Processor):点击此项后芯片将停止运行当前程序。图标: 单步(Step):点击此项后芯片将执行当前行的指令。图标: 连续单步(Step Over):点击此项后芯片将由当前行开始,连续执行单步操作,直至遇到断点或是接到停止命令。图标: 复位(Reset Processor):点击此项后芯片将被复位。图标: 程序存储器窗口(Program Register Window):点击此项后将打开程序存储器窗口。图标: 通用寄存器窗口(File Register Memory):点击此项后将打开通用寄存器窗口。图标: 特殊功能寄存器窗口(Special Function Register Window):点击此项后将打开特殊功能寄存器(SFR)窗口。图标: 增加新变量窗口(Create New Watch Window):点击此项后将打开观察变量窗口,并允许用户添加新的观察变量。图标: 合理运用运行调试手段将有助于更快更好的调试用户程序。例如: 使用变量观察窗可以集中观察用户关心的变量寄存器内的数据变化情况 特殊寄存器窗口集中显示了特殊功能寄存器内的数据,用户根据其变化可以判断出各功能模块的运行状况 使用单步可以观察到执行该行指令后的效果 使用连续单步可以较为直观的观察到程序的运行路径,子程序的跳转情况 设置断点可以让程序在某一句上停下,因此可以用来判断某一子程序的入口条件是否准确,可以让程序迅速的停在要分析的程序段上 各个运行调试手段的作用远不止上述的几点,这需要用户在实际运行调试中自己体会。 注意:使用MCD1配套DEMO板实验此程序时,须将实验板S13的第2位置ON,在运行过程中调整实验板上VR1的值会将A/D转换后取得的不同值在实验板上RC口的LED上显示. 第二部分 MCD1-DEMO教学实验板 前 言 MCD1-DEMO教学实验板是PIC单片机学习网为PIC16F87X系列芯片专门设计的一款多功能的、适于教学及自学用的实验仪器。 MCD1-DEMO教学实验板为16F87X系列芯片的各个功能模块提供了相应的实验电路,以便用户调试及验证。在此基础上,PIC单片机学习网还为初、中级使用者设计了一些对应于实验板功能的实验,并为其编写了教学实验程序。 实验板包括以下电路: 8个LED显示 1602 LCD显示 6位数码管电路 6个独立键盘 外部中断键盘输入 红外线遥控接收输入 RS232通信接口电路 SPI EEPROM通信电路 I2C EEPROM通信电路 DS18B20数字测温电路(DS18B20芯片为选购器件,不在MCD1整套范围内) 一路电位器模拟AD输入. 一路直流蜂鸣器可做各种发音实验. 所有IO口通过拔码开关可独立从DEMO板引出,方便用户扩充其它资源 第三章 用实验板作一个开发实验 在本节中,我们将利用MCD1-DEMO教学实验板做一个简单的开发实验。 在本次实验中,我们以非常简单的LED流水灯为例,介绍使用MCD1仿真调试套件开发调试一个项目的全过程. 3.1 开发前准备工作 开发前先看看你是否已经准备好了: 1、 开发工具: MCD1(MPLAB-ICD)硬件仿真器及配合硬件使用的MPLAB-IDE软件 2、 实验板: MCD1-DEMO教学实验板. 3.2 实验开始 针对演示板上的硬件资源,我们先用一个小程序作为学习和应用MCD1在线调试工具套件,进行项目的软件和硬件联合调试的范例程序,也就是当做一个用户程序实例,而演示板暂时充当用户电路的角色。这样就构成了一个软件、硬件齐全的自制项目模拟环境。 本程序实现的功能是,把端口RC的8条引脚全部设置为输出模式,依次从引脚RC0到RC7送出高电平,然后再依次从引脚RC7到RC0送出高电平,并且周而复始,从而使得与该端口C相连的8只发光二极管LED循环依次点亮,其效果类似于一个简单的霹雳灯。 程序清单: ;************************************************ ;《霹雳灯》程序。文件名为“LED1.ASM” ;************************************************** status equ 3h ;定义状态寄存器地址 portc equ 7h ;定义端口C的数据寄存器地址 trisc equ 87h ;定义端口C的方向控制寄存器地址 flag equ 25h ;定义一个控制左移/右移的标志寄存器 org 000h ;定义程序存放区域的起始地址 nop ;放置一条ICD必须的空操用指令 bsf status,5 ;设置文件寄存器的体1 movlw 00h ;对端口C的方向控制码00H先送W movwf trisc ;再由W转移到方向控制寄存器 bcf status,5 ;恢复到文件寄存器体0 movlw 01h ;将00000001B先送W movwf portc ;再由W转移到数据寄存器 bsf flag,0 ;将左右移标志位置1,首先进行左移LED bcf status,0 ;将标志位C先清0 loop btfss status,0 ;测试进位/借位位,是1则修改标志 goto loop1 ;是0则不修改标志 comf flag,1 ;FLAG的BIT0作为标志位,把它取反 loop1 btfss flag,0 ;判断标志位,是1则跳到循环左移 goto loop2 ;是0则跳到循环右移 rlf portc,0 ;循环左移端口C数据寄存器,结果送W movwf portc ;将结果再送回端口C的数据寄存器 goto loop3 ;跳过下面两条指令 loop2 rrf portc,0 ;循环右移端口C数据寄存器,结果送回W movwf portc ;将结果再送回端口C的数据寄存器 ; loop3 call delay ;调用廷时子程序 goto loop ;返回 ;-------------------------廷时子程序---------------------------- delay ;子程序名,也是子程序入口地址 movlw 0ffh ;将外层循环参数值FFH经过W movwf 20h ;送入用作外循环变量的20H单元 lp0 movlw 0ffh ;将内层循环参数值FFH经过W movwf 21h ;送入用作内循环变量的21H单元 lp1 decfsz 21h,1 ;变量21H内容递减,若为0跳跃 goto lp1 ;跳转到LP1处 decfsz 20h,1 ;变量20H内容递减,若为0跳跃 goto lp0 ;跳跃到LP0处 return ;返回主程序 end ;源程序结束 进入该实战演练的工序流程如下: 1.软硬件的安装:按照本说明书前面讲的”MPLAB-ICD的安装和使用”一节内介绍的方法操作即可. 2.创建源文件和编辑源文件;在此介绍一种不同于前面讲的创建源文件的方法,用Windows附件中的”记事本”这个为大家所熟知和好用的文件编辑器,并且可以方便的加入中文注释.不过有两点需要注意,一是注释前面的分号”;”必须用西文半角输入;二是必须用”.asm”扩展名存储到事先建立的一个专用子目录下. 3.打开MPLAB集成开发环境:首先在WINDOWS环境下,选用开始>程序>Microchip MPLAB>MPLAB命令,启动MPLAB并进入MPLAB的桌面. 4.创建项目:选用菜单File>New或Project>New Project,在事先建立的一个专用子目录下创建一个新项目,将用记事本创建的源文件加入到该项目中(注意:加入的.ASM源文件必须和建立的项目在同一个文件夹,否则项目将建立不成功). 5.建立项目中的目标文件:选择菜单Project >Build All(项目>建立所有文件),MPLAB将自动调用MPASM将项目文件管理下的源文件(.asm)汇编成十六进制的目标文件(.hex). 6.ICD参数设置:通过菜单命令Project>Edit Project或者Option>Development Mode,将开发模式设置为”MPLAB ICD Debugger”,点击OK按钮,打开ICD的工作窗口,在调试阶段,可以按照图2-10设置各项,但需注意Oscillator应设置为XT方式,尤其需要说明的是,选中“Enable Debug Mode”(使能调试模式)选项,在向目标单片机烧写机器码程序时,会将调试临控程序同时写入单片机的指定程序存储器区域,然后才允许用ICD方式调试。 7.电路设置:将演示板的S1全部拔到ON,S4全部拔到OFF,S13的第5、第6、第7全部拔到OFF ,LCD不要插在演示板上,以使端口C只与8只发光二极管接通;将用于选择频率的插针跳线插到”XT OSC”位置上. 8.向目标单片机烧写目标程序:用户在点击功能按钮”Program”向目标单片机烧写机器码程序时,会等待一段时间,并且在条状的状态信息栏中,出现提示信息。有一点需要引起注意,就是PIC16F87X单片机的FLASH程序存储器的擦写周期是有限的,大约为1000次,应尽量节省它的使用寿命。 9.运行和调试用户程序和用户电路:在各项参数设置好后,将ICD的工作窗口最小化,利用前面讲的”运行及调试”中介绍的几种方法进行调试.当用自动单步方式调试时,建议临时禁止廷时子程序发挥作用,具体的方法是,可在CALL DELAY指令前添加一个分号,并且重新汇编一次.为了学习目的,在调试过程中可以人为地加入一些软件漏洞(BUG)或硬件故障,来模仿单片机端口引脚的片内或片外故障. 10.定型烧写目标单片机;经过多次重复上述步骤的反复修改和调试,使得程序和电路在联机状态完全正常,这时可以进行定型烧写,即将ICD窗口中的”Enable Debug Mode”(使能调试模式)选项消除,不再将调试临控程序写入单片机中. 11.独立运行验收:上一步中的烧写过程完成后,即可将ICD模块和ICD仿真头(或演示板)之间的6芯电缆断开,让单片机在演示板独立运行,观察实际效果. 好的这个实验到此就结束了,更多实验请关注我们的网站。 http://www.pic16.com http://pic16.com Email:cxqmcu@tom.compic16@pic16.com |
随便看 |
百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。