一步步教你如何第一次使用MCU51 Keil软件仿真器.docx

上传人:b****6 文档编号:7782083 上传时间:2023-01-26 格式:DOCX 页数:12 大小:247.71KB
下载 相关 举报
一步步教你如何第一次使用MCU51 Keil软件仿真器.docx_第1页
第1页 / 共12页
一步步教你如何第一次使用MCU51 Keil软件仿真器.docx_第2页
第2页 / 共12页
一步步教你如何第一次使用MCU51 Keil软件仿真器.docx_第3页
第3页 / 共12页
一步步教你如何第一次使用MCU51 Keil软件仿真器.docx_第4页
第4页 / 共12页
一步步教你如何第一次使用MCU51 Keil软件仿真器.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

一步步教你如何第一次使用MCU51 Keil软件仿真器.docx

《一步步教你如何第一次使用MCU51 Keil软件仿真器.docx》由会员分享,可在线阅读,更多相关《一步步教你如何第一次使用MCU51 Keil软件仿真器.docx(12页珍藏版)》请在冰豆网上搜索。

一步步教你如何第一次使用MCU51 Keil软件仿真器.docx

一步步教你如何第一次使用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软件的使用,算是已经一只脚跨进了单片机编程的大门了~

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1