第一部分:KeilC51的安装
1:KeilC51的安装.
执行”仿真开发环境\keilC51\setup\setup.exe”,按”next”,直到出现:
完全安装
图1
选择”FullVersion”,一直按”next”,出现:
序列号输入框
必须正确输入
用户名输入框
可顺便输入
图2
当序列号和用户名都输入后,”next”按钮才被激活.(序列号的输入参考SN.TXT文档)
继续按”NEXT”,直到出现:
去掉选中箭头
图3
去掉“Sendregistrationviainterrnet”的箭头.按”Next”,直到“Finish”.
2:KeilC51汉化的安装.
执行”仿真开发环境\keilC51\汉化程序\汉化程序2\KEIL707.EXE”.按”下一步”直到出现:
必须跟KeilC51安装路径一致
图4
按”下一步”会出现提示备份被替换的文件,请选择”否”
选“否”
按”下一步”直到完成.
成功安装完后,你的KeilC51就是中文的了.
第二部分:KeilC51使用说明
首先启动KeilμVision2程序,首次进入KeilμVision2的编辑界面如图1所示,否则,会打开
用户前一次处理的工程.
图1首次进入KeilμVision2的编辑界面
为了文件TAB键空格跟程序的对齐,打开“视图”下的“选项”,设置KEIL的TAB键的空格,如图:
请将数值设为8
下面通过简单的编程调试,引导大家学习KeilμVision2软件中KeilC51的基本使用方法和基本调
试技巧.
1工程的建立
单击“项目->新建项目…”菜单,弹出创建新工程对话框,如图2所示.选择你要保存的路径,输
入工程文件的名字,不需要输入扩展名.比如保存到WorkDir目录里,工程文件的名字为Test1,如图2所
示,然后点击“保存”,保存后的文件扩展名为.uv2,这是KeilμVision2项目文件扩展名。以后我们可
以直接点击此文件来打开已创建的工程。
图2创建新工程对话框
这时会弹出一个对话框,要求选择目标CPU(即用户所用单片机的型号),KeilμVision几乎支持所
有的51内核的单片机,我们以AT89S52芯片为例,如图3所示,在左侧的Database列表框中点击Atmel前
面的“+”号,展开该层,选中AT89S52,在其右边的Description显示区域.中是对这个单片机的基本描
述,然后再点击”确定”按钮.
图3为工程选择目标CPU
窗口会出现询问是否添加startup.a51,如图4:请选择”否”.
图4
此时在工程窗口的文件页中,出现了”Target1”,前面有“+”号,点击“+”号展开,可以看到下
一层的“SourceGroup1”.这时的工程还是一个空的工程,里面什么文件也没有,需要为这个工程添加
文件.如图5所示.
图5新建立的工程
2源文件的添加
如果用户没有现成的程序,那么就要新建一个程序文件。在这里我们以一个ASM程序为例,介
绍如何新建一个ASM程序和如何将它添加到工程中。单击“文件->新建”菜单,如图6所示,新建一
个源文件。
图6源程序的建立
此时在项目窗口的右侧打开一个新的文本编辑窗口,如图7所示:
图7新建文件后的屏幕
此时光标在编辑窗口里闪烁,可以键入用户的应用程序了。但我们建议首先保存该空白的文件,
单击菜单上的“文件”,在下拉菜单中选中“另存为”,屏幕如下图所示,在“文件名”栏右侧的编辑
框中,键入欲使用的文件名,注意,必须键入正确的扩展名。如果用C语言编写程序,则扩展名为
(.c);如果用汇编语言编写程序,则扩展名为(.asm或.a51)。然后,单击“保存”按钮。
图8保存源文件对话框
在创建源文件后,就可将这个文件添加到工程中.回到编辑界面,在“项目工作区”页中,单
击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键,弹出如图9所示的下拉菜
单.
图9文件组快捷菜单
选择“AddFiletoGroup‘SourceGroup1’”,出现如图10所示对话框.
默认是C程序,需选择文件类型,
图10加入文件对话框
双击led.asm或选中led.asm后单击“Add”按钮,将文件加入到工程中,然后点击“Close”
按钮即可返回主界面,这时在SourceGroup1文件夹图标左边出现了一个小“+”号,说明文件组中
有了文件,点击它可以展开查看到文件“led.asm”已加入其中,双击文件名,即打开该源程序,如
图11所示.(如果有源程序,直接添加就可,不需要前面的新建文件,也不需要后面的文本输入。)
文本输入区
图11加入了文件的工程
注意:Keil默认加入C源文件,因此,在图10中未显示该文件夹下的汇编文件,如果要加入
汇编语言源文件,需单击“文件类型”下拉列表框右侧的下三角按钮,弹出下拉列表,选择“Asm
Sourcefile(.a;.src)”,这时才会将文件夹下的“.asm”文件显示出来;
现在,请输入如下的asm语言源程序:
org0000h
jmpstart
org0030h;主程序从这个地址开始存放
start:
movdptr,#table;将表格的首地址送DPTR
loop:clra
movca,@a+dptr;读取表格首地址的内容
cjnea,#01h,loop1;查看是否是01H.如果是01H,重新开始循环
jmpstart
loop1:movP0,a;将要显示的代码送P0口
movr4,#20;延时200ms(0.2S)
calldelay;调用延时
incdptr;DPTR加1,为读取下一个地址的内容作准备
jmploop
;延时子程序
delay:movr1,#20;延时10ms子程序
d1:movr2,#200
djnzr2,$
djnzr1,d1
djnzr4,delay
ret
table:db0feh,0fdh,0fbh,0f7h;左移
db0efh,0dfh,0bfh,07fh
db0feh,0fdh,0fbh,0f7h;左移
db0efh,0dfh,0bfh,07fh
db7fh,0bfh,0dfh,0efh;右移
db0f7h,0fbh,0fdh,0feh
db7fh,0bfh,0dfh,0efh;右移
db0f7h,0fbh,0fdh,0feh
db00h,00h,0ffh,0ffh,00h,00h,0ffh,0ffh;闪烁2次
db01h;结束码
END
在输入上述程序时,我们就可以体会到事先保存待编辑的文件的好处了,即KeilμVision
会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编
程效率。程序输入完毕后,如图12所示。
图12编辑源程序
3工程的设置
有三种打开工程设置对话框的方法:
A)点击工具栏上的按钮,如图13所示。
图13使用工具栏图标按钮打开工程设置对话框
B)单击工程窗口下的Target1,使其高亮显示,再点击菜单“项目->目标‘target1’选项”如图
14所示。
图14使用下拉菜单打开工程设置对话框
打开的工程设置对话框如图15所示。
图15工程设置对话框
单击“”标签进入输出设置页面框,如图16所示,选中“”,使程序编译后
产生HEX代码,供仿真和烧录使用。同时也可选中“”和“”,生成Hex代码文件调试
信息和浏览信息。
图16输出设置页面框
单击“”标签进入调试器设置页面卡,按图17-1所示进行设置。
选中“”和“”这两项是为了进行Monitor51的
硬件实时仿真.单击“”按钮,进入“参数设置”对话框.实际是对串口参数的设置,默认设置就可,如图17-2
Monitor51实时在
线仿真选择框
C语言调
试需选择
软件仿真选
择框
图17-1
此四个选项必
须选中
图17-2
4编译、链接
设置好工程后,即可进行编译、链接。图18所示的是有关编译的工具栏按钮和菜单,图中1、
2、3都是编译按钮,1是编译单个文件。2是编译当前项目,如果先前编译过一次之后文件没有被
编辑、改动,这时再点击是不会重新编译的。3是重新编译,每点击一次均会再次编译链接,不管
文件是否有改动。在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。
4是信息输出窗口。5是菜单的相应操作。这个项目只有一个文件,你按1、2、3中的任一个都可以
编译。
图18有关编译的工具栏按钮和菜单
按1、2、3中的任意一个进行编译。在4中的Build页可以看到编译的错误信息和使用的系统资
源情况等,以后我们要查错就靠它了,如果用户程序和工程设置没有错误,编译和链接将能顺利
完成。如图19所示,提示获得了名为led.hex的文件,该文件即可被编程器读入并写到芯片中,同
时还可看到,该程序的代码量(code=120),内部RAM的使用量(data=8),外部RAM的使用量(xdata=0)
等一些信息。除此之外,编译、链接还产生了一些其它相关的文件,可被用于Keil的仿真与调试,
这时可进入下一步的调试。
图19编译和链接顺利完成
我们前面的程序经过验证后没有错误,但是用户在开始编写程序时容易出现错误,现在我们
故意将“movdptr,#table”改为“movdptr,table”,我们再次进行编译和链接编译/链接,因源程
序中有语法错误,在信息输出窗口中有错误报告出现:“led.asm(5):errorA40:INVALID
REGISTER”。双击该行,定位到出错的位置,如图20所示,将错误改正后,再进行编译,程序编译
和链接能顺利完成。如图19所示。
错误行
图20编译后的错误定位
双击该行
定位错误
5进入仿真
编译成功后,启动调试模式,进入仿真状态。启动调试模式有以下几种方法:
◆点击工具栏上的按钮
◆单击“调试->开始/停止调试模式”
◆使用快捷键“Ctrl+F5”
启动调试模式后,代码便开始下载到仿真器中,如果出现如图21:
图21
请检查以下因素:
·仿真器电源是否正确连接
·仿真器与PC是否正常连接
·串口是否选择正确,或被其它程序占用,或者已经损坏
如果都不是,请按一下你目标板的复位键,再按“”。
代码下载完后,如图22所示,用户可以根据需要进行单步、断点、全速运行,观察/修改变
量值、观察/修改存储区数据等操作。
现在界面是反
汇编窗口,单击
此按纽进入源
程序调试窗口
图22代码下载完毕
进入调试状态后,调试菜单项中的命令可以使用了,有关编译的工具栏按钮消失了,出
现了一个用于运行和调试的工具栏,Debug菜单上的大部份命令都有相应的快捷按钮,如图23所示,
从左到右依次是复位、运行、暂停、单步跟踪、单步、执行完当前子程序、运行到当前行、下一
状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、
1#串行窗口、内存窗口、性能分析、工具按钮等命令;
图23运行和调试的工具栏
点击工具栏上的按钮,将反汇编窗口关闭,可看到源程序窗口了。
6调试程序
A>单步跟踪运行
使用菜单调试->单步进入或相应的命令按钮或使用快捷键F11可以单步跟踪执行程序,在
这里我们按下F11键,即可执行该箭头所指程序行,每按一次F11,可以看到源程序窗口的左边黄
色调试箭头指向下一行,当箭头指向“calldelay”行时,再次按下F11,会发现,箭头指向了
延时子程序“delay”的第一行,不断按F11键,即可逐步执行延时子程序,如图24所示,
图24单步跟踪运行
B>单步运行
如果delay程序有错误,可以通过单步跟踪执行来查找错误,但是如果delay程序已正确,每次
进行程序调试都要反复执行这些程序行,会使得调试效率很低,为此,可以在调试时使用F10来
替代F11(也可使用菜单单步跳过或相应的命令按钮),在执行到“calldelay”时将该行作为一
条语句快速执行完毕.为了更好的进行对比,我们重新进入仿真环境,将反汇编窗口关闭,不断按
F10键,可以看到在源程序窗口中的左边黄色调试箭头不会进入到延时子程序。
C>全速运行
点击工具栏上的按钮或按F5键启动全速运行,全速执行程序,此时用户板上的P1口所接
LED以流水灯状态显示,此时工具栏如图25所示。
图25全速运行时的运行和调试工具栏
D>观察/修改寄存器的值
项目窗口在进入调试状态后显示Regs页的内容,如图26所示,包括工作寄存器R0~R7的内容
和累加器A、寄存器B、堆栈指针SP的内容。
图26查看寄存器的值
用户除了可以观察以外还可自行修改,例如将寄存器a的值0x62改为0x85,
方法一:用鼠标点击选中单元a,然后再单击其数值位置,出现文字框后输入0x85按回车键
即可;
方法二:在命令行窗口,输入A=0x85,按回车键将把A的数值设置为0x85。
E>观察/修改存储器的数据
◆通过Memory窗口查看数据
点击菜单“View->MemoryWindows”,便会打开Memory窗口(如果窗口已打开,则窗口会关闭),
如图27所示,Memory窗口可以同时显示4个不同的存储器区域,点击窗口下部分的编号可以相
互切换显示。
在Memory#1的地址输入栏内输入“D:0e0h”,按回车键后,可以从内部可直接寻址RAM的e0H地
址处开始显示,e0H地址的值就是寄存器a的值,应与主寄存器窗口下的值相同。
点击窗口下部分的Memory#2,在Address输入栏内输入“D:0e0h”,按回车键后,可以从内部可
间接寻址RAM的e0H地址处开始显示。
点击窗口下部分的Memory#3,在Address输入栏内输入“C:0x0021”,按回车键后,可以从代码
区域0000H地址处开始显示,这时各地址值应与在反汇编窗口中的值相同。
点击窗口下部分的Memory#4,在Address输入栏内输入“X:00h”,按回车键后,可以从xdataRAM
区域0000H地址处开始显示。
图27通过Memory窗口查看数据
◆通过Memory窗口修改数据
在Memory窗口中显示的数据可以修改。例如,要改动data区域OXE0地址的数据内容,修改
方法如下:
把鼠标移动到该数据的显示位置,按动鼠标右键在弹出的菜单中选中“ModifyMemoryat
D:0xE0”,在弹出对话框的文本输入栏内输入相应数值,按回车键或点击OK,修改完成。
图28Memory窗口右键弹出菜单
◆通过命令行查看数据
例如,我们想查看data空间从0x01到0x03地址的内容,可在命令输入窗口输入“d
d:0x01,03H”,回车即可完成,d表示data空间,0x01表示起始地址,03H表示结束地址(注
意两种16进制的表示方法在这里都可以接受),输出结果在信息输出窗口中显示出来,如图29
所示。
图29
◆通过命令行修改数据
例如,我们想把data空间从0x01开始的3个数据修改成0x010x020x03,可在命令输入窗
口输入“Ed:0x01=0x01,0x02,0x03”,如图3-37所示,回车即可完成,E表示修改数据,d:表示data
空间,=后面是输入的修改数据。
图30通过命令行修改数据
通过Memory窗口可以看到修改后的数据,如图31所示。
图31查看修改后的数据
F>观察/修改变量的值(此项更适合C语言)
在暂停程序运行时,可以观察到有关的变量值。在Watch窗口Local页自动显示当前正在使用
的局部变量,不需要用户自己添加。Watch页显示用户指定的程序变量。
图32Watch窗口Local页自动显示当前正在使用的局部变量
移动鼠标光标到要观察的变量“OutData”上停留大约一秒钟,就弹出一个“变量提示”块出来。
将鼠标移动到一个变量名“OutData”的上面,点击鼠标右键,出现快捷菜单,选中“Add
“OutData”toWatchWindows…”选项,子菜单中会出现#1和#2的选项,如图33所示,点击后
该变量就会加入对应的Watch窗口,如图34所示。
图33添加用户指定的程序变量
图34查看添加的程序变量
修改变量的数值方法是:用鼠标左键点击该行的变量数据栏,然后按F2键出现文本输入栏后,
输入修改的数据,确认正确后按回车键。
F>复位
指针归零
图35复位
a>软件调试复位:如果用户想重新开始运行用户程序,可以点击工具栏上的按钮,对用
户程序进行复位。复位后,程序计数器PC指针将复位成0000H,另外,一些内部特殊功能寄存器
在复位期间也将重新赋值,例如A将变为00H,DPTR变为0000H,SP变为07H。
b>实时仿真复位:需按仿真器上的RST键,复位后,程序计数器PC指针不复位到0000H,要先
停止调试模式再重新开始调试模式,这样PC指针将复位成0000H,内部特殊功能寄存器将重新初
始化。
G>设置断点
将光标移至待设置断点的源程序行,如“movr4,#20”行。点击工具栏上的图标,可以看
到源程序窗口中该行的左边出现了一个红色的断点标记。用同样的方法在“calldelay”行再设
定一个断点
图36设定断点
H>带断点的全速运行
按动F5启动全速运行,全速执行程序,当程序执行到第一个断点时,会暂停下来,如图3-46所示,这时你
可以观察程序中各变量的值及各端口的状态,此时用户板上的P0.0所接的LED灯点亮,在变量观察窗口中,P0的值
应为0xFE,判断程序是否正确;继续按动F5启动全速运行,程序执行到第二个断点时,会暂停下来,在变量观察
窗口中,P0的值应为0xFD;继续按动F5启动全速运行,程序又会执行到第一个断点处暂停,此时用户板上的P0.1
所接LED灯点亮,……。
I>清除程序中所有断点
如果想取消全部的断点全速运行时,要是逐个取消将是很烦琐的事,我们只要点击工具栏上的图标,就
可清除程序中所有断点。
J>执行到光标处
在体验”执行到光标处”之前,我们先点击工具栏上的图标,对仿真器的用户程序进行复位,点击工具栏上
的按钮,将反汇编窗口关闭.不断按F11键,逐步执行到延时子程序中,为了跳出延时子程序,我们将光标移到程
序想要暂停的地方,如本例中的”movP0,a”行.选择”调试->”或Ctrl+F10键或
点击工具栏上的图标,程序全速执行到光标所在行,这与我们在前面看到的带断点的全速运行相类似.
7退出仿真
A:软件仿真退出:
单步运行:按就可退出。
全速运行:先按,再按就可退出.
B:实时在线仿真退出:
(1):软件退出
单步运行是按,全速运行是按。出现如图37,再按.
图37
出现如图38,请按
图38
则退出仿真状态,在按仿真器上的复位键(一定要按).
(2):硬件退出
先按仿真器上的复位键,再按就可退出。
推荐退出使用”硬件退出”.
待回到文件编辑模式后,我们就可以进行关闭KeilμVision2IDE等相关操作了.
8在调试程序过程中,如发现程序有错误,应按以下步骤进行:A:退出仿真。B:修改程序上的错误。C:重新
编译程序。D:进入开始调试模式。
|
|