目录

共有3种调试方法,分别是:

直接用扩展名为HEX的十六进制文件调试;

源代码级调试;

Keil与Proteus联合调试。

第一种方法比较简捷,不论是用汇编语言,还是用C语言,都要在Keil下,连接编译成扩展名为HEX的十六进制文件。之后把该HEX文件载入单片机,就可直接仿真运行。只要Proteus电路原理图正确,与之配套的程序也正确,它就能运行。其缺点是运行时看不到源程序。第二种方法是源代码级调试,分汇编语言方式和C语言方式。调试时都可以看到源代码,也可用全速运行、单步运行等方法执行程序。第三种方法是Keil与Pro-teus联合调试,在Keil 中执行程序,在Proteus原理图中显示变化情况,两种软件各负其责,分工合作。以下逐一介绍这3种调试方法。

1直接用扩展名为HEX的十六进制文件调试

这种直接装入HEX文件的方法,有全速运行方法,和单步运行方法。方法是:不单击开始仿真按钮,而是单击单步仿真按钮,系统会进入单步运行状态。

2源代码级调试

1).汇编语言方式源代码级调试

2).C51语言方式源代码调试

在源代码级调试C51语言程序,需要先把C51语言编译生成OMF51格式的可执行文件。

OMF51格式文件,英文是“absolute object module format files”,意指绝对目标文件。人们常用的HEX十六进制文件没有包含足够的信息,不允许进行单步调试。而OMF51格式文件包含所有的指令和调试信息,允许实现全速、单步、设置断点、观察变量等调试功能。OMF51格式是Keil所支持的。

1)在Keil中生成OMF51格式的文件。生成OMF51格式文件的过程是这样的:

​ ① 在Keil中打开工程项目文件。

​ ② 选中“Target 1”,然后单击鼠标右键,在弹出的快捷菜单中选择“Options for Target ‘Target 1’ ”。

​ ③ 在新打开的对话框中选择“Output”选项卡,并完成如图所示的设置。

2)OMF51格式文件的应用。

​ ①在原理图的单片机上双击鼠标左键,在弹出的“编辑元件”对话框内的“Program File”文本框中要添加刚才生成的OMF51格式的文件。

​ ②在原理图中,单击运行仿真按钮[插图],系统会启动仿真,流水灯点亮,仿真开始后,单击暂停按钮,程序暂时停止运行,然后调出调试窗口。

​ ③在C语言的源代码窗口中,右上角的6个图标依次是“全速”、“单步”、“进入函数”、“跳出函数”、“执行到光标处”、“设置/取消断点”。

3Keil与Proteus联合调试

1)Keil C与Proteus联合调试的准备工作

(1)安装Keil 与Proteus软件.

(2)安装Keil 与Proteus软件的链接文件vdmagdi.exe。

(3)启动Proteus,打开要仿真的工程文件,配置Proteus软件。单击菜单“调试”,选中“使用远程调试监控”。

(4)调出编辑AT89C51属性的对话框,将其程序文件设置为空。程序文件设置为空意味着Proteus原理图的控制权全交给C51程序了。至此,Proteus软件的准备工作已完成。

(5)在Keil中打开工程项目文件。

(6)选中“Target 1”,然后单击鼠标右键,在弹出的快捷菜单中选择“Options for Tar-get ‘Target 1’ ”。

(7)在新打开的对话框中选择“Debug”选项卡,并完成设置:这里需要改动的地方是,将“Use”单选按钮选中,将其后的内容选择为“Proteus VSM Simulator”。单击图中的“Settings”按钮,它是IP地址设定按钮,出现另一对话框,单击“OK”按钮,又回到Debug对话框。再将“Load Application atSta”和“Go till main”两个复选框选中,单击“确定”按钮退出。

2)Keil C与Proteus联合调试。

(1)双击Proteus文件,打开仿真电路原理图,在“调试”菜单中选中“使用远程调试监控”。调出编辑AT89C51属性的对话框,将其程序文件设置为空。

(2)在Keil中打开工程项目文件。将工程全部重新编译,在程序没有错误的情况下,编译完成之后进入Keil调试系统,同时Proteus中的仿真功能也已启动,等待执行指令。

(3)在Keil调试系统初始启动调试界面的代码窗口为汇编、C51和机器码的混合体,这对调试程序很不方便,需要调出源代码窗口。方法是:单击“View”→“Dis-assembly Window”,就变成C51代码窗口了。

注意:一定要先在Proteus界面的“调试”菜单中选中“使用远程调试监控”,不然在Keil中调试时会打开其他原理图文件。

(4)如果要全速运行,在清除所有断点的前提下,按F5功能键,程序会全速运行。

(5)如果要观察每步的运行情况,可以按F11和F10功能键,其中F11是单步运行键, F10是跳出函数键。单步运行时,执行延时程序按F10,执行其他指令按F11,如果不这样,会陷进延时程序一时无法出来。

(6)还有个运行方式是“运行到光标处”,先要把光标放到正执行程序后的某一行,然后单击“运行到光标处”图标,程序就会执行到该光标处停下来。

(7)在Proteus原理图仿真画面中,也可让寄存器窗口、特殊寄存器窗口和内部存储器窗口出现,即打开“8051 CPU Registers U1”、“8051CPU SFR Memory U1”和“8051 CPU Internal(IDATA)MemoryU1”3个窗口。

(8)要停止仿真时,选择“Debug”→“Start /Restart DebugSession”,停止调试。

(9)要重新开始仿真,仍选择“Debug”→“Start /Restart DebugSession”,又重新进入仿真调试状态。

标签:仿真,OMF51,单击,Keil,Proteus,源代码,调试

来源: https://www.cnblogs.com/RSheng16/p/12486420.html

proteus怎么运行c语言,Proteus软件的仿真调试方法相关推荐

  1. Win10如何禁止软件运行?win10禁止软件启动的设置方法!禁止人生日历热点快讯的方法...

    相信不少使用Win10系统的用户遇到过下载了一款软件进行安装后后续会有接连不断的程序安装到电脑中.他可能似乎一个大家常用的程序,在我们安装好运行的时候会通过后台偷偷下载其他应用安装到我们电脑中,导致系 ...

  2. c语言程序中的错误可分为,C语言程序常见错误与调试方法(1)

    <C语言程序常见错误与调试方法(1)>由会员分享,可在线阅读,更多相关<C语言程序常见错误与调试方法(1)(17页珍藏版)>请在人人文库网上搜索. 1.C语言程序常见错误与调试 ...

  3. 虚拟串口软件+三菱仿真调试神器

    虚拟串口软件+三菱仿真调试神器 手上没有三菱PLC也能玩plc?没关系,有了神器,一切都不是问题. 此软件可在PC上虚拟出一对串口,可用于两个软件之间进实现虚拟串口通讯. 有了这个媒介,三菱plc可以 ...

  4. 关于matlab兼容性win10系统,详解win10系统运行不了matlab10软件的办法

    今天小编分享一下win10系统运行不了matlab7软件问题的处理方法,在操作win10电脑的过程中常常不知道怎么去解决win10系统运行不了matlab7软件的问题,有什么好的方法去处理win10系 ...

  5. stm32怎么用keil软件进行仿真?(必需掌握的技能)

    在做开发的前几年,基本上都没用仿真,有bug就尝试改程序,一边改一边调试. 甚至都还不知道硬件仿真存在的价值,因为一直都没用过,而且很多芯片也不支持. 直到有一次在做行车记录仪项目的时候,接触到了GR ...

  6. 打开c语言运行不了_手机上有哪些不错的c语言编程软件?

    世界那么大,谢谢你来看我!!关注我你就是个网络.电脑.手机小达人 手机上编程C语言的软件其实非常多,下面我介绍2个不错的软件,分别是C语言编译器和C++编译器,这2个软件都可以在手机上直接编译运行C语 ...

  7. 实训9.2. JDK——java语言的软件开发工具包(JAVA的运行环境(JVM+Java系统类库)和JAVA工具) 【java开发的核心】...

    一.概念 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工 ...

  8. 考c语言三级需要什么软件,全国计算机三级网络技术上机考C语言的软件是什么哈?...

    全国计算机三级网络技术上机考C语言的软件是什么哈?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 全国计算机三级网络技术 ...

  9. python手机版打了代码运行不了-三款可以在安卓手机上运行Python代码的软件

    导语 READ 我相信大家平时大多数时间肯定都是在电脑上面敲Python代码,有时候出门外或者不方便使用电脑的时候,你是否曾想用手机就能编写和运行Python代码呢?本文将会介绍3款不同的安卓软件帮忙 ...

最新文章

  1. 【项目管理】RUP内容整理
  2. Python有哪些是必须学的运算符?
  3. mysql 工具_最全Mysql运维工具Percona Toolkit使用案例
  4. Spring boot 上传文件时 MultipartFile 报空指针
  5. mariadb数据库服务
  6. HDOJ 1754 I Hate It 解题报告
  7. JAVA IO - 高效读取大文件的后几行
  8. 谈谈Linux下动态库查找路径的问题
  9. html5打开页面直接取纬度,html5获取不了经度和纬度
  10. [BZOJ4556][Tjoi2016Heoi2016]字符串(二分+后缀数组+主席树)
  11. 【BLE-CC2640】CC2640之OLED
  12. 2014年总结和2015年计划
  13. Python实例---爬取下载喜马拉雅音频文件
  14. vscode中vue代码格式化的相关配置
  15. 东北林业大学计算机教师,我校教师马超感动众网友
  16. 2023计算机毕业设计选题推荐——Java项目
  17. postgresql 数据库巡检
  18. 分库分表的 9种分布式主键ID 生成方案,挺全乎的
  19. Android 终端性能测试
  20. .net framework正常移除不了时用手动移除的办法

热门文章

  1. 致命的效率:漫谈RSS阅读器效率
  2. Class -- 03 -- Random类常用方法详解析
  3. c语言简单小游戏(模拟魔塔)
  4. KiCad 6 版本体验记录
  5. Azure Kinect 使用记录 (一)
  6. 小白学习图像处理3——图像旋转原理
  7. Java入门——方法的使用
  8. SAP BASIS ADM100 中文版 Unit 5(4)
  9. 类人猿x64位封包协议拦截技术开发3种工具(支持安卓)
  10. 什么是笔记本的南桥和北桥?