pic单片机学习教程转载.doc_第1页
pic单片机学习教程转载.doc_第2页
pic单片机学习教程转载.doc_第3页
pic单片机学习教程转载.doc_第4页
pic单片机学习教程转载.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

MPLAB IDE软件安装完成后,桌面上会出现软件的快捷方式图标。由于PICC18编译器是挂接在MPLAB IDE软件内部的,所以PICC18软件安装完成后其图标不会出现在桌面上。MPLAB IDE软件快捷方式图标如图2-31所示。1)双击桌面上MPLAB IDE软件快捷方式图标,打开MPLAB IDE软件。软件运行后,会出现两个窗口:一个是工作区窗口(Untitled),另一个是输出窗口(Output),如图2-32所示。2)点击菜单栏上的“Project”选项,单击“Set Language Tool Locations”选项,查看PICC18编译器与MALAB IDE软件的挂接情况,如图2-33所示。3)在弹出的对话框中展开“HI-TECH Universal ToolSuite”菜单,再展开“Executables”菜单,单击“HI-TECH ANSI C Compiler”选项, 在下面的“Location”一栏里查看语言工具的挂接情况,如图2-34所示。从上面的步骤里我们不难发现,PICC18编译器已经和MPLAB IDE 软件挂接在了一起,成为集成开发环境的一部分。接下来,我们要用它写一个小程序,并将其下载到最小系统板中,从而点亮一个流水灯。使用MPLAB IDE软件里的项目向导可以帮助我们快速方便地建立PIC项目,具体方法如下:1)在菜单栏的“Project”选项里,选择项目向导“Project Wizard.”,如图2-35所示。2)启动新建项目向导,在出现的对话框里点击“下一步”按钮,如图2-36所示。3)在“Step One:Select a device”对话框里选择单片机的型号。这里我们选择的是“PIC18F4520”,如图2-37所示。4)在“Step Two:Select a language toolsuite”对话框里选择语言工具套件。首先在“Active Toolsuite” 下拉列表中选择“HI-TECH Universal Toolsuite”,在下面的“ToolSuite Contents”窗口中会出现“HI-TECH ANSI C Compiler”,即HI-TECH标准C编译器,其下方的“Location”栏里会出现“C:Program FilesHI-TECH SoftwarePICC-189.80binpicc18.exe”路径。这说明我们前面安装的PICC18编译器已经与MPLAB IDE软件挂接成功,如图2-38所示。如果我们只安装了PICC编译器,这里的路径会显示为C:Program FilesHI-TECH SoftwarePICC9.80binpicc.exe。语言工具选好后,点击“下一步”按钮。5)在“Step Three:Create a new project,or reconfigure the active project? ”对话框里创建一个新的项目。首先在“Create New Project File ”文本框旁边点击 “Browse”按钮,如图2-39所示。6)在出现的窗口中定义存放项目的文件夹和项目名称。在“保存在”下拉列表中选择项目存放的路径,在“文件名”中输入项目名称:LESSON2,并点击“保存”按钮,如图2-40所示。注意:虽然MPLAB IDE称其支持中文文件名和长文件名,但在此强烈建议大家在给项目起名时不要用中文,英文文件名也要力求简短,存放的路径的名称也一样要简短,同一个项目中的不同源文件都要保存于同一个目录下。7)项目路径和名称定义完成后,会再次回到“Step Three: Create a new project,or reconfigure the active project?”窗口,点击“下一步”按钮,如图2-41所示。8)在“Step Four:Add existing files to your project”对话框中,你可以添加已存在的文件到你的项目中,这里我们不做选择,直接点击“下一步”按钮,这样我们就建好一个PIC的项目了,如图2-42所示。9)点击“完成”按钮,结束项目向导,如图2-43所示。建立好项目后,MPLAB IDE软件工作区如图2-44所示。这时的项目还只是一个大概的框架,我们还需要给项目添加一个C的源文件。2.4.2新建源文件并添加到项目中1)PIC项目建立好后,依次单击“FileNew”选项建立一个新文件,在源文件的头一行写上如下代码:#include第一行代码写好后的状态如图2-45所示。这里要注意的是,PIC10/12/16系列的C语言程序包含的头文件是PIC.H,而PIC18系列的单片机包含的头文件则是PIC18.H。2)点击工具栏上的“保存”按钮,保存这个源文件。源文件保存的路径要和我们前面建立的项目文件保存的路径一致。前面我们已经为新建的项目命名,接下来将这个源文件命名为Lesson2.c。注意源文件名称要写成文件名加扩展名的形式,扩展名一定是“.c”。另外,要在对话框中勾选“Add File To Project”选项,将源文件添加到项目中,点击“保存”按钮,源文件即可保存并自动添加到项目中,如图2-46所示。这时我们会发现源文件里面的#include 会显示为蓝色,说明其已经加入到项目中,而且C语言的关键词#include已经被识别了。3)如果需要,你还可以设定文本的字体和大小,右击我们输入的文本,在弹出的菜单中选择 “Properties”选项,如图2-47所示。4)在出现的对话框中选择“Text”选项卡,点击“Select Font”按钮,如图2-48所示。5)在出现的字体对话框中选择字体、字形和大小,点击“确定”保存设置,如图2-49所示。6)完成字体设定后,源文件内的文字已经按我们的要求重新设定并显示了,如图2-50所示。我们还注意到,在工作区的左侧,有窗口如图2-51所示。在工作区“LESSON2.mcw”窗口中,有以下几项内容:1)Source Files:源程序列表,列出了本项目用到的所有源程序文件。2)Header Files:头文件列表,可以在此添加源程序中用到的头文件。3)Object Files:目标文件列表,可以在此添加已经编译成目标代码的文件。4)Library Files:库文件列表,可以在此添加已有的库文件。5)Other Files:其他文件列表。2.4.3源代码的编写PIC驱动流水灯的电路如图2-52所示,如果觉得连接8个发光二极管有些复杂的话,你也可以对电路进行稍许简化,像本书附录C所示最小系统板电路那样,只连接RD0和RD1端口的两个流水灯即可。有了以上的准备,接下来我们就可以专心编写C程序了。程序要实现的目的就是点亮由PORTD端口最低位(RD0)驱动的一个流水灯。打开MPLAB IDE软件,使用新建项目向导,新建一个项目命名为LESSON2,并为这个项目添加名为lesson2.c的源文件,详细代码见代码清单2-1。代码清单2-1点亮一个流水灯#include_PROG_CONFIG(1,0xC100);/PIC的配置字1_PROG_CONFIG(2,0x0A16);/PIC的配置字2_PROG_CONFIG(3,0x8100);/PIC的配置字3_PROG_CONFIG(4,0x0081);/PIC的配置字4_PROG_CONFIG(5,0xC00F);/PIC的配置字5_PROG_CONFIG(6,0xE00F);/PIC的配置字6_PROG_CONFIG(7,0x400F);/PIC的配置字7void main(void)/主函数TRISD=0x00;/0000 0000, 将PORTD端口设为输出TRISE=0xfe;/1111 1110, 将PORTE最低位设为输出PORTD=0x01;/0000 0001, PORTD最低位输出1,点亮最低位流水灯PORTE=0x01;/0000 0001, PORTE最低位输出1,驱动流水灯公共端while(1);/主循环,让程序在此等候接下来,我们要对代码进行分析。程序的第1行是一条预处理命令,作用是把另外一个文件的内容包含复制到本包含指令所在的位置。在程序的第一行写入“#include”目的就是将“PIC18.H”这个头文件引入到本程序中来。头文件的作用是对单片机的各个寄存器进行规范化的定义,从而方便大家使用。“PIC18.H”是专门针对PIC18系列单片机而设计的,位于PICC18编译器的安装目录下,其默认的位置为 C:Program FilesHI-TECH SoftwarePICC-189.80includePIC18.H关于头文件,在此先不作过多的叙述,后面会用专门的章节来进行解读。程序的第2行至第8行是PIC18单片机的配置字。PIC单片机在应用时要对芯片的功能进行基本的设定,这种设定方式是可以通过配置字来完成的。为了不让你在刚接触到PIC时被搞得一头雾水,我们对配置字的解读也放到后面的章节来进行,你现在要做的就是按照代码清单的内容把程序行写到你的源文件中。书写配置字文本时需要注意的是,每个配置字的最前面是由两个连续的下杠“_ _”组成的,而且中间不能有空格。“main(?)”是主函数。我们知道,C语言是一个模块化的语言,程序的内容是由若干个具有特定功能的函数构成的。主函数和其他函数在结构上是一样的,只不过它的函数名称是“main”,意为主函数。在一个源程序中有且仅有一个主函数,而且无论主函数位于源程序的什么位置,程序都是从这里开始执行。“void”的意思是空,在这里表示该函数的返回值为空,也就是说,函数执行后是不输出结果的。函数名“main”后面有一对圆括号“(?)”,括号里面是书写函数的输入(入口)参数的。圆括号内是空的或写着“void”,表示该函数无输入参数。“main”函数的第2行由花括号“?”开始,两个花括号括起来的部分是函数体,它是函数的主体部分,由若干个C语句构成。程序的每一行都以分号“;”结束。代码写完后,你是不是迫不及待地想看看它执行后的效果。好,接下来要做的就是编译和烧写。2.4.4代码的编译和烧写我们将鼠标悬停在工具栏中唯一一个红色的按钮上,下面会有该按钮功能的提示:“Rebuild with Compiler for PIC18 MCUs(Lite Mode)V9.80”,意思是:重新用PICC18编译器编译(编译器工作在Lite Mode,版本为9.80),点击这个红色的按钮,开始编译代码,如图2-53所示。经过几秒钟的时间,代码编译即可完成,Output窗口中Build选项卡里面会有单片机存储器的占用情况以及编译成功的提示,如图2-54所示。如果在编译后出现以下提示信息“*Build failed!*”如图2-55所示,即表示编译失败,你需要重新检查程序行的内容并再次进行编译,直到通过为止。接下来,我们要把编译成功的文件烧写到单片机中看一下程序运行的效果。首先将PICkit2编程器连接至电脑USB接口,用ICSP数据线连接PICkit 2编程器和最小系统板,编程器与PC及目标板的连接方法如图2-56所示。依次点击菜单栏上的“Programmer Select ProgrammerPICkit 2”,将编程器设定为PICkit 2,如图2-57所示。编程器设定好后,Output窗口中的PICkit 2选项卡里会出现PICkit 2编程器准备好的提示,如图2-58所示。此时,如果编程器没有连接到电脑,则会有错误信息在这个窗口中出现。PICkit 2成功连接后,你会发现在工具栏上,多了一组有趣的按钮,如图2-59所示。下面分别介绍这些按钮的功能。按钮:编程目标器件,用于把编译生成的HEX文件烧写到目标单片机中。按钮:读目标器件的存储器,用于读取单片机存储器中烧录的内容。按钮:读目标器件的EEPROM,用于读取单片机EEPROM存储器中烧录的内容。按钮:校验目标器件的内容,用于检验烧写是否正确。按钮:擦除目标器件的存储器。按钮:校验目标器件存储器是否被擦除。按钮:将目标器件的MCLR引脚电平置高,用于解除单片机的复位状态。按钮:将目标器件的MCLR引脚电平置低,用于使单片机复位。 按钮:重新建立与PICkit 2编程器的连接,用于当PC与PICkit 2编程器连接中断(如USB线意外拔出)时,重新与编程器建立连接。点击编程目标器件(Program the target device)按钮,即可将编译生成的HEX文件烧写到我们的最小系统板中,如图2-60所示。Output窗口中的PICkit 2选项卡里会有PICkit 2编程器的擦除、烧写、重新准备好等一系列的动作提示,如图2-61所示。注意:PICkit 2编程器在编程结束后会继续操控目标单片机的MCLR、PGD、PGC引脚。将MCLR引脚置为低电平,PGD、PGC引脚置高电平。MCLR引脚置低电平后,会使目标单片机在烧写完成后处于复位状态,这样可以确保程序不会意外执行。我们需要人为干预MCLR引脚,将其置为高电平,使单片机解除复位状态,这可以通过将目标器件的MCLR引脚电平置高(Bring target MCLR to Vdd)按钮来完成,即图2-62中箭头所指按钮。点击按钮,解除目标单片机的复位状态,这个动作在Output窗口中同样会有提示,如图2-63所示。激动人心的时刻终于到了,这时我们会发现最小系统板上与RD0相连接的LED灯已经点亮了,具体状态如图2-64所示。看到你亲手点亮的这个流水灯,你是不是很有成就感呢?对,控制PIC就像控制家里的电灯一样简单,而且从你点亮这个流水灯开始,你已经入门了,继续努力,你会成为一个优秀的单片机工程师,加油!2.4.5PIC入门编程实例接下来我们要让RD0和RD1端口驱动的流水灯交替闪烁,间隔大约1秒钟的时间。为了方便起见,我们直接对lesson2.c的源文件内容进行修改,在程序中加入了延时函数,具体代码见代码清单2-2。代码清单2-2交替闪烁的流水灯#include_PROG_CONFIG(1,0xC100);/PIC的配置字1_PROG_CONFIG(2,0x0A16);/PIC的配置字2_PROG_CONFIG(3,0x8100);/PIC的配置字3_PROG_CONFIG(4,0x0081);/PIC的配置字4_PROG_CONFIG(5,0xC00F);/PIC的配置字5_PROG_CONFIG(6,0xE00F);/PIC的配置字6_PROG_CONFIG(7,0x400F);/PIC的配置字7void delay(unsigned int t);/延时函数声明void main(void)/主函数TRISD=0x00;/0000 0000, 将PORTD端口设为输出TRISE=0xfe;/1111 1110, 将PORTE最低位设为输出PORTE=0x01;/0000 0001, PORTE最低位输出1,驱动流水灯公共端while(1)/主循环 PORTD=0x01; /0000 0001, PORTD最低位输出1,点亮最低位流水灯 delay(500); PORTD=0x02; /0000 0010, PORTD次低位输出1,点亮次低位流水灯 delay(500);void delay(unsigned int t)/延时函数unsigned int x,y;for(x=t;x0;x-)for(y=100;y0;y-)程序经再次编译后烧写到单片机中,运行后即可发现两个LED灯交替闪烁。通过写上面的两个小程序,你是不是对学习PIC已经有信心了。是的,单片机并不难学,关键在于方法,现在你已经有了非常好的开始,后面的学习也会同样轻松。3.1.1使用软件模拟器使用软件模拟器来调试程序非常简单,只需打开一个写好的程序并成功编译后,即可对其进行模拟调试。1)在菜单栏选择“ProjectOpen”选项,如图3-1所示。2)选择我们已经写好的流水灯项目,点击“打开”按钮,如图3-2所示。3)使用工具栏上红色的“编译”按钮对程序进行编译,在菜单栏里找到“DebuggerSelect Tool”选项,勾选“MPLAB SIM”选项,将调试器设定为“MPLAB SIM”,如图3-3所示。4)工具栏上会多出一排调试工具按钮,如图3-4所示。 按钮:全速运行(Run)。程序从当前位置全速运行,MPLAB IDE软件左下角会有Running进度条显示程序运行的状态。?按钮:暂停(Halt)。当程序全速运行或连续单步运行时,点击“Halt”按钮会让程序在其正在运行的位置上停止。按钮:连续单步运行(Animate)。程序按顺序自动单步运行,每次单步运行后间隔一小段时间。通过连续单步运行,你可以更加清晰地查看每一条指令的运行结果。按钮:单步运行(Step Into)。单步跟踪运行一条指令,每次按下该按钮,程序都会执行一条指令,如果待运行的语句是调用子函数的语句,使用“Step Into”按钮将会跟踪进入子函数的内部运行程序。按钮:单步跳过(Step Over)。与“Step Into”功能相似,每按下一次该按钮,程序都会执行一条指令,但在运行子函数时,不会进入子函数内部,而是将子函数作为一步执行完毕,程序指针指向下一条语句。按钮:单步跳出(Step Out)。意思是单步运行并跳出子程序,如果程序当前运行在子函数内部,使用“Step Out”按钮将会全速完成子函数的运行,程序指针指向下一条语句。按钮:复位(Reset)。程序从复位地址0x0000处开始重新执行。如果程序目前是停止状态,复位后程序指针指向复位地址等待运行;如果程序目前是运行状态,复位后程序从复位地址处开始运行。按钮:断点设置(Breakpoints)。用于删除、使能或禁用断点。5)我们需要将软件模拟器里的晶振频率与单片机实际工作时的晶振频率设定一致,才能正确地模拟出时间值。在菜单栏上选择“DebuggerSettings”,打开“Simulator Settings”对话框,在“Osc/Trace”选项卡里的“Processor Frequency”项里,将晶振频率由默认的20MHz更改为4MHz,如图3-5所示。6)另外在菜单栏“ConfigureSettings”选项中的“Debugger”选项卡里可以做以下设置,如图3-6所示。勾选“Reset device to the beginning of main function”选项,当我们点调试工具“复位”按钮后,程序指针指向主函数入口处,否则复位后程序指针会指向汇编源文件开始处。勾选“Stepping Behavior”下的“Track debugger location in the source code”选项,在调试开始时,会调用汇编源文件,并跟踪程序在汇编源文件中的运行位置。7)点击调试工具栏上的单步按钮开始对程序进行单步调试,如图3-7所示。如果在菜单栏“ConfigureSettings”选项中的“Debugger”选项卡里勾选了“Track debugger location in the source code”选项,在调试开始时,点单步运行按钮(图3-7中位置1),程序会自动打开汇编源文件窗口,程序指针会定位在汇编源文件的程序开始处(图3-7中位置2),多次单步运行后,程序指针会跳转到C程序的主函数入口处(图3-7中位置3)。3.1.3设定观察窗口在调试的过程中,我们需要使用观察窗口来查看寄存器的状态、时间值、变量值等。选择菜单栏上的“ViewSpecial Function Registers”选项可以打开“Special Function Registers”窗口,通过该窗口我们可以查看各寄存器的状态,如图3-13所示。选择菜单栏上的“ViewWatch”选项可以打开Watch窗口,在Watch观察窗口中,通过寄存器名称下拉列表可以选择需要查看的寄存器,点击“Add SFR”按钮可以将该寄存器添加到下面的查看区域中;在变量名下拉列表中可以选择需要查看的变量,点击“Add Symbol”按钮可以将该变量添加到下面的查看区域中,如图3-14所示。除此之外,在“View”菜单栏中,还有文件寄存器“File Registers”选项,硬件堆栈“Hardware Stack”选项以及程序存储器“Program Memory” 选项等,用于打开相应的观察窗口。另外,在“Debugger”菜单栏中,选择“Stop Watch”选项可以打开跑表观察窗口,如图3-15所示。使用跑表观察窗口,可以查看程序运行的指令周期(Instruction Cycles)和所用时间(Time)值。点击Synch(同步)按钮可以将Stopwatch(跑表)的值与Total Simulated(模拟总数)的值同步;点击Zero(归零)按钮可以随时将指令周期和时间值设置为零。3.2PICkit 2硬件调试器PICkit 2编程器除了可以烧写程序以外,还可以与MPLAB IDE集成开发环境相配合,作为硬件的调试器使用,这也是我们为什么称PICkit 2为编程器/调试器的原因。MPLAB IDE 允许将PICkit 2 用作在线调试器,可以让单片机在板上完成运行、检查和修改程序的过程。这样,你可以一边调试程序,一边测试硬件。使用PICkit 2的调试功能PICkit 2在作为调试器使用时,可以运行、停止、单步运行程序,设置一个或多个断点,也可以将处理器复位。当处理器停止运行时,可检查和修改寄存器的内容。1)连接编程器和目标板。使用PICkit 2对于所有低档PIC 单片机和部分中档PIC 单片机在线调试时需要在编程器和目标板之间加入ICD转接头。PIC18系列单片机在进行硬件调试时不需要转接头,直接使用ICSP 编程接口进行调试。所以我们只要将PICkit 2编程器的USB接口与PC相连,将编程器的ICSP接口与目标板的ICSP接口相连即可。2)检查编程器是否支持目标单片机。在菜单栏选择“ConfigureSelect Device”选项,如图3-16所示。该对话框会显示MPLAB IDE集成开发环境下对于选定器件的支持情况,具体如图3-17所示。在此窗口中:Device选项用于选定目标单片机。Programmers选项用于查看对目标单片机的编程支持。Language and Design Tools选项用于查看对目标单片机的编译器支持。Debuggers选项用于查看对目标单片机的调试支持。在器件支持窗口中,红色的圆圈表示该设备对选定的目标单片机不支持;黄色表示该设备对选定的目标单片机提供beta 支持,即MICROCHIP尚未对其进行内部认证测试;绿色表示该设备对选定的目标单片机完全支持。从图3-17中不难看出,PICkit 2编程器不仅支持对PIC18F4520的烧写,还支持对该芯片的仿真调试。3)配置位与在线调试。我们前面说过,部分PIC16中档单片机以及所有PIC18系列高档单片机在调试时不需要ICD转接头,直接使用ICSP端口即可。这样的PIC单片机有一个共同的特点,就是在配置字中都会有一个DEBUG 位,该位用于使能和禁止PIC 单片机的调试模式。当我们使用PICkit 2对这类芯片进行在线调试时,MPLAB IDE软件会自动地设置该位,确保调试的正常进行,所以我们在源代码中无须对该配置位进

温馨提示

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

评论

0/150

提交评论