您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 单片机原理实验指导书
-20-第2章基础实验2.1实验一系统认识实验一、实验目的学习实验系统的基本操作,了解在实验系统中进行程序设计、仿真和调试的操作方法和步骤。二、实验设备Keil单片机程序开发软件。Proteus仿真软件DP51-PROC单片机综合实验仪。DT-2003数字万用表。三、实验内容和步骤内容:简单单片机应用程序的编辑、编译、仿真和调试。实验程序:功能:使连接在MCS-51单片机P1.0引脚的LED闪烁。设计思路:①点亮LED需要约3~10mA电流,此时LED两端电压差约2V。因此,将LED的阴极通过一个电阻连接到P1.0引脚(电阻阻值约为1000),阳极连接到电源VCC(5V)。②为便于观察,交替的时间间隔不应太小(建议选择在0.5s左右),由于该时间不要求严格精确,所以,可采用软件延时的方法实现。③程序可采用图2.1中的流程结构。开始让P1端口初值为11111111BP1.0求反软件延时图2.1实验一程序流程图-21-预习:1)提前一周预约好实验时间。2)自学Keil和Proteus两软件的基本使用方法。3)按设计思路,用汇编语言或C51语言编制实验程序。4)了解本次实验的步骤和操作方法。图2.2实验一电路图步骤:1)在S:\STUDY\Kiel文件夹中新建Ex01文件夹(该文件夹用于保存本次实验的所有内容),通过网上邻居将服务器上本次实验共享文件夹下的所有文件拷贝到S:\STUDY\Kiel\Ex01文件夹中。2)运行Keil并创建一个新工程。工程保存为S:\STUDY\Kiel\Ex01\Ex01.Uv2。选择单片机型号为Generic中的8051。创建新工程的操作方法:菜单ProjectNewProject…3)设置工程选项,将工程选项设置如下:Target页夹:Xtal=12MHzOutput页夹:CreateHEXFile-22-BL51Locate页夹:取消UseMemoryLayoutfromTargetDialog设置CodeRange属性为0x40-0xFFF如用C51编程,设置此页夹。设置工程选项的操作方法:鼠标右击ProjectWindow中的Target1弹出菜单OptionforTarget‘Target1’,在对话窗口中根据需要选择不同的页夹项4)创建新文件并输入实验程序,然后保存在与工程相同的文件夹中(文件名为Ex01.ASM或Ex01.C),最后将其加入到工程中并编译。操作方法:创建文件:菜单FileNew保存文件:菜单FileSave或SaveAs…加入工程:ProjectWindow中展开Target1,鼠标右击SourceGroup1弹出菜单AddFilestoGroup‘SourceGroup1’,在对话窗口中选择文件类型(CSourcefile或AsmSourcefile)和文件名(Ex01.C或Ex01.ASM)编译工程:菜单ProjectBuildtarget或Rebuildalltargetfiles编译中若发现错误,必须修改程序后重新编译。注意:i.如果在工程选项中设置了CreateHEXFile选项,编译成功后则会生成目标文件(*.hex),该文件将在利用Proteus调试程序时用到;反之,编译成功后不会生成目标文件(*.hex)。ii.目标文件的文件名由工程选项Output页夹中NameofExecuteable属性决定,目标文件的扩展名为.hex。5)利用Keil自身的软件仿真功能调试程序。任务:单步和带断点执行程序,观察程序执行过程,记录程序执行过程中相关寄存器、存储器的变化情况和指令执行时间,从而验证程序的正确性。具体操作如下:①在Keil中设置工程选项如下(操作方法参见步骤3):Debug页夹:选中左侧Use:Simulator选中左侧LoadApplicationatStart和Gotillmain()②进入调试。进入或退出调试命令的操作方法:-23-菜单DebugStart/StopDebugSession③单步调试程序中的指令或语句,观察和记录相关寄存器、存储器的变化情况和程序执行时间。在此过程中尝试打开或关闭DisassemblyWindow(操作方法参见后面[说明]的第3项),观察它们的不同。单步命令的操作方法:菜单DebugStep(详细跟踪当前指令或语句的执行)或StepOver(完整执行当前指令或语句)查看寄存器、存储器和程序执行时间的操作方法:参见后面[说明]的第1、2项④复位程序。复位CPU命令的操作方法:菜单PeripheralsResetCPU⑤在软件延时开始的指令或语句处设置断点。设置断点的操作方法:先用鼠标点击断点处的指令或语句,再使用设置或取消断点命令:菜单DebugInsert/RemoveBreakpoint⑥多次使用连续运行命令控制程序的执行,当程序执行到断点处时观察P1.0引脚的状态和程序运行时间。根据多次的信息推断LED的闪烁状态和间隔时间。连续运行命令的操作方法:菜单DebugGo观察P1.0引脚状态的操作方法:菜单PeripheralsI/O-PortsPort1,在ParallelPort1窗口中显示当前P1端口各个引脚的状态。⑦退出调试。操作方法参见前面的操作②。说明:查看结果主要通过ProjectWindow中的Regs页夹和MemoryWindow中的各个页夹。-24-1、若MemoryWindow窗口没有打开,可通过菜单ViewMemoryWindow命令显示,选取其中任何一个页夹,在地址输入框中输入地址后,该页夹将从这个地址开始显示存储体中的数据。由于MCS-51的存储体在地址值上存在着重叠,为了区分不同类型的存储体,地址必须按照下面的格式输入(段符及其说明参见表2.2):段符:地址值地址值可以用十进制或十六进制表示。其中十六进制数用汇编或C语言的表达方式均可。例:D:0x00或D:00H2、在ProjectWindow的Regs页夹中显示常用的一组值,其中大部分可以直接修改(操作方法:先用鼠标左击选择要修改的对象,然后再次左击就可以输入修改),详细说明参见表2.1。3、在Keil进入调试状态后,若希望查看当前程序的机器编码及其反汇编代码,可通过菜单ViewDisassemblyWindow命令显示或关闭DisassemblyWindow窗口。表2.1Regs页夹中的内容及其说明符号说明是否可修改r0工作寄存器r0的值是r1工作寄存器r1的值是r2工作寄存器r2的值是r3工作寄存器r3的值是r4工作寄存器r4的值是r5工作寄存器r5的值是r6工作寄存器r6的值是r7工作寄存器r7的值是A累加器的值是BB寄存器的值是Sp堆栈指针寄存器的值是sp_max堆栈的最大值Dptr数据指针寄存器的值是PC$当前指令的地址值是States程序执行的机器周期数Sec程序执行的时间(秒)Psw程序状态字的值是,还可展开单独修改位值-25-6)利用Proteus调试程序。任务:单步和带断点执行程序,观察程序执行过程,并按表2.3中的内容进行记录和计算。具体操作如下:①双击S:\STUDY\Kiel\Ex01\Proteus仿真\Led_light.DSN文件,将电路中单片机对象的ProgramFile属性设置为步骤4生成的目标文件(*.hex),然后检查Proteus是否打开了远程仿真监视。操作方法:设置目标文件:鼠标右击单片机对象弹出菜单EditProperties,在对话窗口中设置ProgramFile属性。打开仿真监视:菜单Debug选中UseRemoteDebugMonitor。②在Keil中设置工程选项如下(操作方法参见步骤3):Debug页夹:选中右侧Use:及ProteusVSMSimulator(下拉选项框的项)选中右侧LoadApplicationatStart和Gotillmain()③在Keil中进入调试,检查在软件延时开始的指令或语句处是否有断点,若没有则设置(操作方法参见步骤5)。④在Keil中多次使用连续运行命令控制程序的执行(操作方法参见步骤5)。当程序运行到断点时,观察Proteus窗口中LED1的燃亮情况,将P1.0引脚支路电路的相关信息记录到表2.3中。⑤在Keil中去除断点,继续运行程序,观察Proteus窗口中实验电路的工作情况(LED1闪烁情况及其间隔时间)。⑥在Keil中退出调试(操作方法参见步骤5)。表2.2常用段符及其说明段符说明示例C程序存储地址区,地址范围0x0000~0xFFFFFF。C:0x30D直接寻址数据存储区,地址范围0x00~0xFF,其中0x80~0xFF是SFR。D:0x30D:0xE0I间接寻址数据存储区,地址范围0x00~0xFF。I:0x30I:0xE0X外部数据存储区,地址范围0x0000~0xFFFFFF。X:0x30-26-7)利用实验仪调试程序。任务:单步和带断点执行程序,观察程序执行过程,并按表2.3中的内容进行记录和计算。具体操作如下:①检查实验仪与计算机之间的通信线连接,然后打开实验仪电源(电源开关在实验仪箱体右侧方)。②测试实验仪中涉及本次实验的电路是否完好。操作方法:i.双击S:\STUDY\Kiel\Ex01\Test1\Test1_0.Uv2文件(此操作会打开一个新的Keil窗口)。ii.在新窗口中进入调试,然后连续运行程序(操作方法参见步骤5)。iii.在实验仪上观察连接到P1端口的8个LED是否循环依次熄灭,如果发现某个LED常亮或常灭,则意味着P1端口的对应位损坏。iv.测试完成后退出调试,然后关闭这个用于测试的Keil窗口。在本次实验中如果发现P1.0损坏,可用P1其它完好的位替代完成实验(此时,实验程序及其他相关操作都应做出调整)。③在实验程序的Keil窗口中设置工程选项如下(操作方法参见步骤3):Debug页夹:选择右侧Use:及KeilMonitor-51Driver(下拉选项框的项)点击右侧的Settings按钮,在对话窗口中选择SerialInterrupt选中右侧LoadApplicationatStart和Gotillmain()④在Keil中进入调试。检查在软件延时开始的指令或语句处是否有断点,若没有则设置(操作方法参见步骤5)。⑤多次使用连续运行命令控制程序的执行(操作方法参见步骤5)。当程序运行到断点时,观察实验仪上LED1的燃亮情况,用万用表测量P1.0引脚支路电路的相关信息并记录到表2.3中。测量中万用表的使用方法:i.万用表使用时应平稳放在实验台上,既要便于观察又不能防碍实验操作。ii.万用表的黑笔应插在实验仪C1区的GND插孔。iii.C1区的VCC插孔电压就是所有LED的阳极电压,A2区的P10-P17插孔电压就是P1各引脚电压,D1区LED上方编号为R65-R72的贴片电阻的下端电压就是对应LED的阴极电压(因空间小,测量时须格外小心,防止通过万用表笔短路。)-27-⑥在Keil中去除断点,继续运行程序,观察实验仪中实验电路的工作情况(LED1闪烁情况及其间隔时间)。⑦在Keil中退出调试(操作方法参见步骤5)。四、实验报告要求1、记录实验过程中的操作过程及其结果。2、工整书写实验程序并画出其流程图。3、对比表2.3中的数据,分析差异及原因。4、总结三种仿真调试方法的特点。5、[选做]比较用汇编编写程序与用C51编写程序各自的特点。表2.3测量点数据表对象P1.0输出值记录计算LED1燃亮情况LED1阳极电压VLED1阴极电压VP1.0引脚电压VLED1电压降VLED1电流mAProteus01实验议01
本文标题:单片机原理实验指导书
链接地址:https://www.777doc.com/doc-2606373 .html