一步步教你如何第一次使用MCU51 Keil软件仿真器.docx
- 文档编号:7782083
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:12
- 大小:247.71KB
一步步教你如何第一次使用MCU51 Keil软件仿真器.docx
《一步步教你如何第一次使用MCU51 Keil软件仿真器.docx》由会员分享,可在线阅读,更多相关《一步步教你如何第一次使用MCU51 Keil软件仿真器.docx(12页珍藏版)》请在冰豆网上搜索。
一步步教你如何第一次使用MCU51Keil软件仿真器
一步步教你如何第一次使用MCU51Keil软件仿真器
一步步教你如何第一次使用RZ-51仿真器本教程将会从最基础的开始,一步步教你建立工程,编辑文件,编译文件,仿真和调试程序,直到试验板上出现了你想要的结果...
现在我们开始进行软件编程。
打开keilC51软件,可以看到以下界面:
我们先在D:
盘的根目录下建“D:
/keyandledtest”目录,以方便程序的编写和调试,调试过程中产生的文件都将放在这个目录中。
现在开始建立一个工程,点菜单Project/NewProject,选择保存在在“D:
/keyandledtest”目录,文件名为keyandled,点保存,如下图:
这时,将出现下面的窗口,综合我们现在要编的程序的规模,我们选择最常用的Atmel89C52.这个芯片拥有标准52内核,片内资源在右边的框中有显示。
另:
由于仿真机是用来仿真标准的52内核(兼容51内核),对于某些拥有特殊功能的51单片机,并不能仿真它的特殊功能部分,而是只能仿真其中的标准52内核部分。
即使市面上的高级的51仿真机都是如此。
点确定,该页面自动关闭。
现在我们开始建立新的程序文件,点击菜单File/New,将新建立一个新的文本文件,点击File/Save,将这个文件保存为“keyandled.c”。
再点击左边的那个框框里的“Target1”,左边的“,”号。
将展开“SourceGroup
Source1”项,用右键点击“SourceGroup1”项,选择“AddFilestoGroup‘Group1’”,
将跳出下面的窗口:
选择“keyandled.c”文件,点add将keyandled.c文件加入到我们的工程中。
这时“SourceGroup1”项左边也会出现“,”号,点击它,展开文件列表,现在只有一个文件,因为我们的程序比较简单,所以一个文件也就足够了。
如果功能很复杂,就可以将各个功能的程序放在一个专门的文件,一般我们称每个文件为一个程序模块,一个工程里面可以有很多的模块。
点击这个文件名,该文件就会被打开并出现在窗口最上方,方便您进行编程和修改。
现在我们要在keyandled.c文件里开始输入我们的程序代码了。
我们先输入以下程序:
//这是包含默认的寄存器头文件,
//该文件在keil自己的目录里,包含了所有52内核的寄存器定义。
#include
sbitkey1=P1^0;//这是特殊寄存器位定义,IO也是特殊寄存器的位sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitled3=P0^0;
sbitled4=P0^1;
sbitled5=P0^2;
sbitled6=P0^3;
voidmain(void)
{
led3=0;//点亮LED灯
led4=0;
led5=0;
led6=0;
led3=1;//熄灭LED灯
led4=1;
led5=1;
led6=1;
while
(1)
{
if(!
key1)//检测key1是否按下,按下时程序会读到该位为0,平时为1{
led3=0;
led4=0;
led5=0;
led6=0;
}
if(!
key2)
{
led3=1;
led4=1;
led5=1;
led6=1;
}
}
}
只要你有一点点C语言的基础,你就可以看出这段程序的功能是开机时四个灯极快地亮一下,可能人眼看不到,但是等会我们用单步调试时就可以看到了,然后灯全灭了,这时如果按key1,四个灯就会被点亮,如果按key2,四个灯就会一起熄灭。
输入完成后,点击编译按钮,或者按F7编译。
察看下面的报告框,如果出现Error或者Warning,要根据情况排除错误和警告,对于无关痛痒的警告可以忽略,具体请查看相关C51的编译器说明书籍或文件。
直到最后编译成功为止。
如果您希望编译成功后生成一个HEX目标文件,以方便烧写目标芯片,可以右键
点击“Target1”,选第二项“OptionsforTarget1”,将出现下面的窗口:
我们的仿真器上的晶振是11.0592M的,你可以将上面框中的“Xtal”后边框中填入“11.0592”,以便软件仿真时计算程序运行时间,这个值的设置对于硬件仿真是没有影响的。
下面依次是编译的内存模式,我们用默认的小模式,这时程序中没有注明的变量将编译在芯片内部的256字节里;程序空间大小,也用默认的64K模式,这个决定编译出来的代码主要是用长调用还是短调用,这些设置都是无所谓的了,仅仅是编译出来的程序大小有点差别而已。
其他的设置都空着即可。
点击设置窗口的“output”页,在CreateHEXFlie前面的框里点一下打个勾,这样程序编译完成之后就会生成一个HEX目标文文件了。
类似的你还可以选择生成一个lib库,但是我们现在还用不到。
再下面还可以设置在编译完成是是否开始运行debug,即仿真,或者是否运行你自己指定的某些应用程序。
这个设置窗口如下图:
另外几个页:
listing,C51,A51,BL51locate,BL51Misc都默认设置不要改了,将来等到你会C51的高级应用时或许就用得着了,我以后也会有这方面的专门介绍。
但是Debug页,就得好好设置一下了,如图:
这里可以设置使用软件仿真或者硬件仿真,我们已经接好了硬件仿真器和电路,当然是选择硬件仿真了。
另外在下拉菜单里选上“keilMonitor,51Driver”,这是我们的仿真设备类型。
下面还可以选择是否进入仿真后立即装载程序到仿真机中,和是否开始运行直到main函数。
我们都先选上吧。
这里要说明一下为什么有“Gotillmain”选项,因为C51的编译中实际上在内部还调用了一个初始化函数,这个函数的作用是清除所有内存,设置sp指针等运行main程序之前的准备工作。
你在编程的过程中实际上可以不理会这个函数。
但是在硬件仿真时,装载代码之后PC指针是指向0000H位置的,前面的一段内部代码的运行又大家都基本一样,没有必要去调试,所以就有了自动运行到main的选项,这样装载之后就直接运行到main函数,也就是你开始编程的位置了。
不过如果选择了“Gotillmain”,装载之后需要等待一小段时间大约一两秒钟等待运行到该位置,因为是在仿真状态中运行,所以较慢。
设置了使用硬件仿真当然还要再设置一下通讯端口和通讯波特率了,点击设置debug框右上角的“setings”,进入下面的窗口:
选择仿真机所接电脑的串口号,再选择9600bps通讯速度
下面的“StopProgramInterrupt”项就不要选了,这是全速运行的夭折功能,仿真机虽然做了这个功能,但是由于共用了串口中断,在某些情况下会对用户程序造成一定的影响。
如果需要在全速运行中停止程序,需要复位一下仿真机,复位之后keil环境和仿真机会重新自动联机,但是这时仿真机里的程序代码已经被清除,所以必须退出debug环境,再重新联机装载程序。
注意:
顺便提一下:
如果在全速运行时你想退出debug环境,keil将要等待比较久的超时退出,表现为报告无法联机。
所以,在全速运行时要退出,请先按一下仿真机上的复位按钮,等调试环境重新联机之后,再退出调试环境,就可以顺利退出了。
好了,到此为止,设置完成,点“OK”,再点设置窗口的“确定”。
回到编辑环境中,再编译一次。
你可以看到信息栏中多出现了一行“creatinghexfileform
"keyandled"...”.
终于将程序编译完毕了,下面开始仿真~
点菜单Dubug下的Start/Stopdebugsession,进入仿真状态。
在下面几种情况中,会出现连接不上的提示框。
1.硬件没有连接好。
(仔细连接好)
2.计算机的串口号设置错了。
(重新设置)
3.波特率设置过高,如115200。
(重新设置)
4.计算机串口被其他应用程序占用了。
(关闭其他应用程序)5.仿真机正在全速运行。
(按仿真机复位键,使程序停止运行)
5.仿真机处于脱机运行状态并且在运行用户程序。
(按仿真机复位,并在2秒内联机)
6.用户板对通讯口P3.0和P3.1造成了干扰。
(拔除用户板,测试是否可以联机,再检查用户板。
)
这时会出现这个窗口;
别急,点settings,就可以重新进入通讯设置,将正确的串口号和波特率设置好。
将其它的使用这个串口的应用程序关闭。
再仔细检查连线,按照本文一开始的说明接好.别忘了再按一下复位按钮,看看灯是否会闪一下。
闪一下,过两秒钟之后并没有再闪3下,就是正常仿真状态,随时都可以进行连接。
如果闪一下,过两秒钟之后又闪了3下,这时仿真机是处于脱机运行状态,必须在两次闪烁之间的两秒钟之内进行连接才可以连通,这个可以参照本站的专门的说明文章。
好,现在点“tryagain”,通了~出现了以下窗口:
等待片刻,程序自动运行到main函数的第一句代码。
那里的一个小箭头就是指向当前的一句代码。
左下角时命令输入框,可以输入需要的调试命令。
右边两个是观察窗口和内存窗口。
窗口中间有一排快捷按钮,表示的意思如下:
现在我们点击单步“StepOver”,可以看到程序代码一句句被运行,运行前面8句时,试验板上的灯依次亮灭,而如果全部运行,这是肉眼看不到的。
进入while
(1)循环之后,因为没有按键按下,所以一直在if(!
key1)和if(!
key2)之间来回跳动。
现在左手按住key1不放,右手继续点击单步,可以看到程序运行进入if(!
key1)循环,这时可以松开按钮,因为程序只在if语句那里判断了一下按键状态,继续单步运行,可以发现灯又依次点亮。
现在开始试验断点的作用,在“led5=1;”这一行双击一下,就会在该行设立一个断点,断点行的左边会有一个红色的方块标记。
再双击一下,断点就可以取消。
我们现在设立好这个断点。
如图:
点全速运行按键,看起来试验板没有反应,这时按一下key2键,程序进入到if(!
key2)循环后就运行到了断点出并停了下来。
这时可以看到试验板上的灯灭了两个,但是另两个没有灭掉,这时因为程序运行到断点处之后,另两句灭灯的代码还没有运行到的缘故。
本仿真器可以同时设立多达10个断点。
运行到光标处的作用和断点差不多,只是它把光标的位置也当作了一个断点处理而已。
具体可以自己试试。
现在我们可以点击一下显示汇编窗口按钮,可以看到我们的这个程序的汇编代码,在这个窗口按一下右键,可以看到有一个菜单,可以选择是否C和汇编混合显示模式等等,还有一个重要的功能,就是“loadHexorObjectfile”,这个功能可以实现将其他已经编译好了的HEX文件下载到仿真机中,也就是下载功能。
当然你现在不能下载,因为嵌入式仿真机的限制,每次装载程序之前必须复位一次。
以清空内部的用户程序空间。
现在已经装载了一个试验程序,就不能重新下载一个新的其他的程序了。
要实现下载其他的目标程序,可以在仿真设置那里将自动load代码设置去掉,这样,连接成功后进入仿真状态,用户空间并没有装载任何代码,再显示汇编窗口,点右键/“loadHexorObjectfile”,就可以下载你需要的代码了。
因为本机有脱机运行功能,了解这个就显得非常重要了。
当你手头只有你需要运行的目标代码HEX文件,而没有源文件或者调试文件时,你就无法使用debug的装载功能,而只有通过汇编窗口的loadHEX文件了。
下面我们再来试验一下没有断点的全速运行,去除所有的断点设置,点全速运行按键。
4个灯全部亮了,再按一下key2,4再用手按试验板上的按键,按一下key1,
个灯全部灭了。
这也是真实运行的结果。
现在的一个问题是,如果使程序停止,前面我们并没有选择程序夭折功能。
因此需要停止时只有按一下试验板上的复位键,再按debug窗口的停止键,程序就会超时退出。
到此为止,您应该体会到了仿真器的方便易用和强大功能了吧,同时你还基本上掌握仿真器的使用和KEILC51软件的使用,算是已经一只脚跨进了单片机编程的大门了~
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一步步教你如何第一次使用MCU51 Keil软件仿真器 一步步 如何 第一次 使用 MCU51 Keil 软件 仿真器