
首先打开Keil软件,打开一个工程,点击keil的编译图标,编译软件。
2.确保已经连接了仿真器,而且已经给MCU上电,然后下载程序,等待下载完成。
3.软件程序下载完成,现在就完成了程序下载,可以开始仿真了。
4.单击软件的调试图标,进入软件调试模式。
5.现在就已经打开运行模式。
6.单击全速运行,运行软件仿真。
7.程序正在全速运行。
8.仿真完成以后单击调试图标,就可以退出野带调试模式。
keil
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等 *** 作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编颂卖芦语言编程,其方便易用的集成环配灶境、强大的软件仿真调试工具也会令你事半功倍。
如薯兆禅下面图(我使用的是keil MDK,但道理都是一样的),在debug界面中,如果你将Run to main()复选框前的对号去掉,每次进入debug都会从Startup.a51,因为这个文件存在一些启动代码数尘,复位后要先进入这个文件的,你虽然是用C写的代码,但是实际下载到单片机的还有编译器为你自动加入的Startup.a51文件中的代码,这个主要将RAM区数据清零,然后跳转到你写的C语言main函数.由于你进入debug后再复位,实际上是从程序的最开始执行,至于为什么进入调试模式是执行的猜轮你写的C代码,就是因为你选择了下图中的Run to main()---编译器按照你选定的设置进执行了一些步骤而已
答案是:不能运行下去。原因说明:
1、如果你在KEIL里面打开HELP,然后再搜索里漏饥面输入scanf,KEIL对该函数的解释中,第一句便这么说:
The scanf function reads data from the input stream using the getchar routine.
意思是函数scanf将以调用函数getchar的方式来从输入流中读取数据。
继续搜索getchar,同样KEIL会解释说:
The getchar function reads a single character from the input stream using the _getkey function.
意思是getchar调用_getkey来实现,幸运的是_getkey这个函数,KEIL给出了源代码:
就在 C:\Keil\C51\LIB 的getkey.c中:如下
char _getkey () {
char c
while (!RI)
c = SBUF
RI = 0
return (c)
}
看到了吧,呵呵,里面有个循环查询 while (!RI),你觉得程序还会继续运行吗。。。
也就是说,如果返闷返你想继续运行程序,你就得修改函数_getkey,将他写成中断的形式,
KEIL之所以给出罩者代码,估计他们自己也觉得采用查询的方式不靠谱。。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)