- 51单片机应用基础(C51版)
- 胡进德 丁如春 刘爱荣
- 6380字
- 2020-06-25 23:06:11
学习单元四 建立软件实训环境(2)——MedWin软件的安装与使用
MedWin是万利电子有限公司开发的单片机仿真软件,集编辑、编译/汇编、在线及模拟调试为一体,内嵌自主版权的宏汇编器和连接器,并完全支持Franklin/Keil C扩展OMF格式文件,支持所有变量类型及表达式,它与Keil一样也是经常使用的51单片机开发工具。与Keil不同的是,它采用中文用户界面,因而很受初学者的喜爱。
MedWin集成开发环境的特点:
(1)完美的Windows版集成开发环境;
(2)内嵌自主版权的宏汇编器A51和连接器L51,并支持Keil/Franklin编译、连接工具;
(3)具有分别独立控制项目文件的工程项目管理器;
(4)在工程项目管理下,实现多模块和混合语言编程调试;
(5)VC风格的窗口停驻、窗口切分和工作簿模式界面;
(6)在线编辑、编译/汇编、连接下载运行和错误关联定位;
(7)符合编程语言语法的彩色文本显示;
(8)完全的表达式分析,支持所有数据类型变量的观察;
(9)无须点击的感应式鼠标提示功能;
(10)外部功能部件编程向导;
(11)不限制打开数据区观察窗口的数目;
(12)调试状态下用户程序自动重装功能;
(13)提供真实的软件模拟仿真开发环境。
一、MedWin软件的安装
可以从万利电子有限公司及其代理公司处索取MedWin软件,也可以到公司的网站(http://www.manley.com.cn)下载。下载得到的MedWin软件是一个压缩包,解压后双击其中的Setup.exe即可安装。MedWin软件有多个版本,本书使用的是中文V2.39版本。
二、MedWin软件的使用
1.设置MedWin
MedWin集成开发环境安装后,需要根据系统提示,设置工作目录,设置编译工具的路径、环境等。其操作步骤如下:
第一步:启动MedWin
双击桌面MedWin图标,即可进入MedWin软件集成开发环境。
第二步:进入模拟仿真
MedWin是InSight仿真器的仿真软件,如果已接好仿真器,则MedWin启动后,会出现初始化界面,进入仿真系统。因市面上仿真器一般都很贵,建议初学者采用模拟仿真。
MedWin也可以用于模拟仿真,如果无仿真器,则会出现如图2-29所示的设置通讯口界面。点击“模拟仿真”按钮,则进入模拟仿真系统。
图2-29 端口选择
第三步:设置工作目录
如果是第一次运行MedWin,系统会出现如图2-30所示的设置“工作目录”对话框,要求设置工作目录。
图2-30 设置工作目录对话框
MedWin默认工作目录是其安装目录C:\Manley\MedWinV2.39,但该目录并不一定是我们所需要的工作目录。假定所需工作目录是E:\WorkDir,设置此目录的方法如下:(1)在E盘根目录下新建一个文件夹,文件夹名可任取,如“WorkDir”、“ONE LED”等。
(2)在图2-30所示的设置“工作目录”对话框中,点击“当前工作目录”右边的按钮,将出现图2-31所示的“浏览文件夹”对话框。
图2-31 浏览文件夹
(3)在“浏览文件夹”对话框中,点击“本地磁盘(E)”前面的“十”,展开E盘文件夹,找到文件夹如“WorkDir”,单击“WorkDir”,然后点击“确定”按钮。当前工作目录就变成了“E:\WorkDir”,如图2-32所示。
图2-32 工作目录设置的结果
以后我们打开的文件就是这个目录下的文件,所保存的文件也是保存在这个目录下。
(4)在图2-32中,点击“确定”按钮,系统将提示进行下一步设置:设置编译工具。
第四步:设置编译工具
如图2-33(a)所示。51单片机的编程语言可以选用汇编语言(扩展名为ASM),也可以选用C语言(扩展名为C)。MedWin开发工具支持这两种语言,当选用的是汇编语言时,应直接选用系统默认设置:选中图2-33(a)中的选项“系统默认的汇编器和连接器(使用汇编语言编程时,建议选择此项)”,然后点击“确定”按钮。
图2-33 设置编译工具
当选用C语言编译时,需要进行相应的设置。先用鼠标点击图2-33(a)中的选项“指定路径下的编译工具(使用C语言编程时,建议选择此项)”,然后指定“选择路径”。由于Medwin本身不带C51编译工具,需要安装C51编译软件后才能进行仿真。建议下载并安装keil软件,利用keil软件的C51编译工具。例如:当电脑上安装了keil软件时,选择keil软件的安装路径,如:“C:\keil\c51”等。其他设置如“C编译器”、“汇编器”、“连接器”、“INC路径”和“LIB路径”与此方法相同,如图2-33(b)所示。
完成了上述四步设置后,就进入MedWin集成开发环境,可以在该环境下新建项目编写程序了。
实际上,端口的设置、工作目录的设置和编译工具的设置也可以在集成开发环境中重新设置,其方法如下:
点击菜单栏中的“设置—设置通讯口”,如图2-34所示,会出现如图2-32所示的设置界面。点击菜单栏中的“设置—设置编译工具”,就会出现如图2-33(a)所示的设置编译工具界面。点击菜单栏中的“设置—设置工作目录”,就会出现如图2-32所示的设置工作目录界面。
图2-34 设置菜单
在设置菜单中,还有一个设置文本编辑器子菜单,用来设置文本编辑窗口的前景色、背景色、字体的大小、颜色等,如图2-35所示。
图2-35 设置文本编译器
2.开发应用程序
MedWin集成开发环境设置完毕后,就可以用MedWin开发应用程序了。MedWin提供了使用项目管理方式和非项目方式两种方式开发应用程序。前者可进行多模块、汇编语言和C语言混合编程开发,后者只适用于单模块、一种语言开发的场合,在此推荐使用项目管理方式开发。采用项目管理方式开发应用程序的步骤如下:
第一步:新建项目文件
在MedWin集成开发环境中,点击菜单栏中的“项目管理—新建项目”命令,出现如图2-36所示的“创建项目”对话框。
图2-36 创建项目对话框
在“创建项目”对话框中,“项目名”文本框用来输入项目名称。MedWin的项目管理是按项目名来管理的,项目名必须输入,项目名不得超出8个字符,不得使用汉字以及“-、?、*、/”等字符,也不可输入盘符和路径。本例的项目名可任取,如“ONE LED FLASH”、“hujinde”等,这里我们在“项目名”文本框中输入字符“hujinde”。
项目名右边的“高级(A)”按钮用来选择项目文件存放的路径。通常情况下,项目文件及源程序文件都是保存在当前工作目录下,此时不必进行高级设置。
注意,如果项目文件与源程序文件不在同一目录时,将会出现不能对源程序进行调试的现象。
“添加文件”选择框用来设置新建项目时是否同时为该项目添加源程序文件。本例中,在新建项目时需要为项目添加源程序文件,我们采用默认设置。
“存储器属性(RAM)”下拉列表框用来设置C编译器所需属性。它有3种选择:small、ComPact、Large。如果项目中包括C程序源文件,则需要设置此属性。本书采用汇编语言开发程序,源程序文件为汇编语言源程序文件,此项不必设置,直接使用默认设置就可以了。
“RAM尺寸”文本框用来设置所用单片机内部RAM大小,其值为128或者256。对于本书所介绍的STC89C51RC和AT89S51,它们具有128字节片内RAM,此栏应设置为128。
“标准80C51”选择框用来定义单片机特殊功能寄存器SFR。如果勾选此项,则对于标准的5l系列单片机中所具有的21个特殊功能寄存器就不必再作定义(直接采用系统内部定义),如果不勾选此项则必须定义程序中用的特殊功能寄存器。必须指出的是,如果系统中采用的是新型51单片机,并且程序中使用了标准的8051单片机中所不具有的特殊功能寄存器,则还必须对这些特殊功能寄存器进行定义。至于单片机中有多少个特殊功能寄存器,它们的作用是什么,如何定义,可以查询单片机器件资料,我们也会在后续的学习中再详细介绍。多数情况下,我们可采用默认的勾选设置。
点击“确定”按钮,完成项目创建,出现如图2-37所示的“添加项目文件”对话框。
图2-37 添加项目文件对话框
第二步:添加项目文件
项目新建后还需要为项目添加源程序文件。如果在图2-36所示的“创建项目”对话框中没有勾选“添加文件(A)”或者当前需要为项目增加新的文件,则可以点击集成开发环境中的“项目管理—添加文件”子菜单为项目添加源程序文件,此时也会出现如图2-37所示的“添加项目文件”对话框。
如果源程序文件不存在,则在2-37所示对话框的“文件名(N)”文本框中输入源程序文件名,如“one led flash.asm”或“hujinde.asm”等,然后点击“打开”按钮,此时MedWin会自动新建一个空白的源程序文件,如图2-38所示。
图2-38 新建源程序文件
注意,输入源程序文件时,必须输入扩展名,其中汇编语言源程序文件的扩展名为“ASM”, C语言源程序文件的扩展名为“C”。
如果源程序文件已经存在,则在图2-37“查找范围(I)”后面的列表框点击所需源程序文件图标,然后点击“打开”按钮。
注意,如果所选文件为多个,则点击第一个文件后,需要按住“Ctrl”键点击其他文件图标。如果在选择文件的过程中选错了文件,则按住“Ctrl”键再次点击错选文件,则可取消对所点击文件的选择了。
第三步:打开项目文件
对于事先已经建立好的项目文件,则第一步、第二步不必操作,可以直接打开项目文件而进入第四步操作。其操作方法是,点击菜单栏中的“项目管理—打开项目”。
第四步:输入源程序
新建的源程序文件是一个空文件,需要在其中录入程序代码。图2-38所示的窗口中,左边为项目管理窗口,右边为源程序编辑窗口。在源程序编辑窗口中输入【例2-1】中的程序,输入程序的方法和注意事项与Keil中源程序编辑窗口相同。
程序录入结束后,点击菜单栏中的“文件—保存”子菜单或者图标,保存当前所录入的程序。所保存的文件名可任取,如“one led flash.asm”或“hujinde.asm”等。
第五步:编译/汇编源程序
在集成开发环境中,点击菜单栏中的“项目管理—编译/汇编”子菜单,在MedWin集成开发环境的最下边将会出现一个消息窗口,用来显示汇编的结果,如图2-39所示。
图2-39 用来显示汇编结果的消息窗口
在图2-39中我们可以看出当前程序汇编时,警告错误0个,致命错误也是0个。如果程序中存在错误,则消息窗口中会有出错提示,这时必须认真检查源程序,调试源程序,改正错误后再进行编译/汇编,直至错误为0。
第六步:输出HEX文件
单片机只能执行二进制代码形式的程序代码,正确的源程序还必须转变成对应的二进制文件或者十六进制文件。其中二进制文件的扩展名为.BIN,十六进制文件的扩展名为HEX。输出HEX文件的方法是,点击菜单栏中的“项目管理—输出Intel Hex文件”,此时将弹出“输出INETEL HEX文件”对话框,如图2-40所示。在该对话框的文件名文本框中输入所要保存的文件名如“hujinde.Hex”后点击“保存”按钮,所需要的文件“hujinde.Hex”就保存在当前工作目录“E:\WorkDir”下了。
图2-40 输出HEX文件
注意,输入所要保存的文件名时文件名要带扩展名Hex。
3.调试源程序,观察数据和程序运行结果
调试源程序的一个重要方法是观察段程序运行后,其运行结果是否正确。这就需要先弄清楚单片机运行时各类数据存放的位置,学会在MedWin中运行某一段程序、并能观察程序段运行后的结果。
源程序编译/汇编后,按下列步骤调试源程序、观察数据和程序运行结果。
1.了解程序调试方法
第一步:点击菜单栏中的“调试—开始调试”子菜单。
这时,MedWin会自动地调用编译/汇编程序对源程序进行编译/汇编,产生对应的二进制代码,并将二进制代码装入仿真系统中。代码装入仿真系统中后,MedWin的编辑窗口将会发生一些变化。其主要的变化是左边灰色竖条上有一个箭头,还有若干个圆点,窗口的上面增加了几个图标和PC、指令执行时、执行总时等标签,如图2-41所示。图中圆点、箭头等含义及作用如下:
图2-41 仿真窗口
圆点:指示编辑窗口中各行代码的类型;有圆点的源代码为指令代码,源程序编译/汇编后产生了对应的二进制代码;无圆点的源程序代码为伪指令或者标号,源程序编译/汇编后不产生对应的二进制代码。其中,标号以冒号结尾,实际上代表的是一个地址,也称为符号地址,它是一条指令的一部分,可以与指令同行书写,也可以单独占一行书写。
箭头:指示单片机即将要执行的指令。
PC:显示单片机程序计数器PC(Program Counter)存放的当前值。PC是一个16位的寄存器,用来存放单片机要执行的下一条指令在程序存储器ROM中存放的地址。单片机复位时,PC指向ROM的0000 H单元,因此,单片机上电后总是从0000 H这一地址处开始执行程序,源程序开始调试时,MedWin显示PC的值为0000 H。
注意,箭头及PC标签实际上指示了指令及指令在程序存储器ROM单元中的地址。
指令执行时:显示某段程序执行时所耗时间,即一次程序段运行的时间。它的起始时刻是程序段开始执行时刻。
执行总时:显示程序中各程序段运行的累计时间。它的起始时刻是代码装入仿真系统之后程序开始运行时刻。
第二步:执行程序段。
操作方法是,点击调试菜单栏中的相关控制程序运行的菜单项。在第一步中点击菜单栏中的“调试—开始调试”子菜单后,调试菜单中各子菜单项将会由灰色不可执行状态转变为黑色可执行状态,如图2-42所示。
图2-42 “调试”菜单中各子菜单
图2-42中部分子菜单的功能如下:
跟踪:跟踪运行程序,执行一条指令。如果是调用子程序指令,则进入所调用的子程序。
单步:单步运行程序,如果当前是调用子程序指令,则越过所调用的子程序,即把所调用的子程序当作一步来执行。
运行到光标处:程序全速运行到光标处。
交互跟踪:如果当前激活的是源程序编辑窗口,执行反汇编窗口的跟踪命令;如果当前激活的是反汇编窗口,执行源程序编辑窗口的跟踪命令。
2.观察数据和程序运行结果
单片机运行时,各类数据主要存放在下列位置:寄存器、特殊功能寄存器、片内数据存储器RAM(简称片内RAM)和程序存储器ROM中。观察程序段的运行结果主要是观察上述各寄存器和存储器的值。
在MedWin中,点击“查看”菜单栏中对应的子菜单项,如图2-43所示,可观察数据和程序运行结果。
图2-43 “查看”菜单中各子菜单
(1)查看寄存器
点击图2-43中菜单栏的“查看—寄存器(R)”子菜单项,在集成开发环境的右边就会出现寄存器窗口,如图2-44所示。图中共列有14个寄存器:R0、R1、R2、R3、R4、R5、R6、R7、A、B、SP、DPTR、PC和PSW。其中,前12个寄存器则以字节方式在寄存器窗口显示和设置,程序计数器PC在编辑窗口上面的文本框中显示和设置,程序状态字PSW以位方式在寄存器窗口中显示和设置,如图2-45所示。
图2-44 查看14个寄存器
图2-45 寄存器PSW
(2)查看片内数据寄存器
1)查看整个片内RAM。MedWin中的“数据区IData”指的是能用指令“MOV@Ri, A”或“MOV A, @Ri”(i=1,2)访问的数据区,即片内RAM 256字节的区域。片内RAM 256字节的内容可在IData窗口中观察。其操作方法是,点击菜单栏中的“查看—数据区IData”子菜单,集成开发环境中会出现如图2-46所示“IData”窗口。窗口左边灰色条是地址栏,显示的是窗口中第一列数所在的地址,用十六进制数表示。中间部分是各地址单元的内容,也是用十六进制数表示的。右边部分是把各地址单元的内容当作ASCII码时,对应的显示字符。
图2-46 “IData”窗口
双击某个地址单元内容,系统会弹出“修改”对话框,如图2-47所示。在修改对话框中输入所需要的数据,点击“确定”按钮,对应地址单元的值就更改成所设定的新值。MedWin的这种修改功能极大地方便了程序的调试工作。
图2-47 “修改”对话框
2)查看片内RAM中的位地址区。MedWin中“数据区Bit”指的是可位寻址的区域,包括片内RAM中128位(位地址为00H~7FH)和特殊功能寄存器中128位(位地址为80 H~FFH)。单片机RAM中的位地址区在“Bit”窗口中查看。其操作方法是,点击菜单栏中的“查看—数据区Bit”子菜单,集成开发环境中会出现“Bit”窗口,如图2-48所示。“Bit”窗口中00H~7FH区域显示的是片内RAM位地址区各位的值,80H~FFH区域显示的是特殊功能寄存器中各位地址的内容。在“Bit”窗口中,同样也可似对各显示值进行修改,其操作方法与“Idata”窗口中的操作方法相同。
图2-48 “Bit”窗口
3.查看特殊功能寄存器
单片机的特殊功能寄存器SFR(Special Function Register,简称SFR)主要是用来设置内部电路的工作方式和记录内部电路的运行状态。学习单片机很大程度上是了解单片机内部特殊功能寄存器的作用及其应用方法。
点击菜单栏中的“查看—特殊功能寄存器”子菜单,集成开发环境中会出现SFR显示窗口,如图2-49所示。特殊功能寄存器显示窗口只能显示/修改标准8051/80C51单片机的特殊功能寄存器,共21个。实际上,对于像STC89C52这样的新型51单片机,除了具有21个标准的51单片机的特殊功能寄存器外,还新增了其他一些特殊功能寄存器。对于新增的特殊功能寄存器,其查看方法是,点击菜单栏中的“查着—数据区Data”子菜单,集成开发环境中会出现“Data”窗口,如图2-50所示。图中“Data”窗口分为上下两部分,地址00H~7FH区域显示的是片内RAM低128字节单元的内容,80H~FFH区域显示的是特殊功能寄存器的内容。在“Data”窗口中,同样也可以对各显示值进行修改,其操作方法与“IData”窗口中的操作方法相同。
图2-49 SFR窗口
图2-50 “Data”窗口
4.查看程序存储器
其操作方法在学习情景三中有详细介绍。