在Keil 里使用 DeBug 模式时,如要 查看外部 RAM 的数据 或查看 ACC 的内容可以进行以下操作;

sysGetTxMode:
LCALL    Com0185(C:2B95)
,sysGetTxMode
........
........
ret

Com0185:
MOV        DPTR,#0x7020
MOVX    A,@DPTR
RRC        A
RRC        A
ANL        A,#0x3F
RET     

1. 在Keil 调试的时候打开监视窗口;

 2. 打开内存视窗

    在地址框填写:  
C:    
0000    ;     查看 CODE    区  
D:    
0000    ;     查看 DATA    区  
I:     
0000    ;     查看 IDATA    区  
X:   
 0000    ;     查看 XDATA    区

 
 

Regs是片内内存的相关情况值,Sys是系统一些累加器、计数器等。Regs很简单就不多说。具体介绍一下Sys

a    累加器ACC,往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。

b    寄存器B ,主要用于乘法和除法操作

sp

sp_max

dptr  数据指针DPTR

PC $

states 执行指令的数量

sec  执行指令的时间累计(单位 秒)

psw 程序状态标志寄存器PSW,八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。

p  奇偶标志P。反映累加器ACC内容的奇偶性,如果ACC中的运算结果有偶数个1(如11001100B,其中有4个1),则P为0,否则,P=1。

f1

ov  溢出标志位OV。MCS-51反映带符号数的运算结果是否有溢出,有溢出时,此位为1,否则为0。

rs

f0

ac  辅助进位标志AC。又称半进位标志,它反映了两个八位数运算低四位是否有半进位,即低四位相加(或减)有否进位(或借位),如有则AC为1状态,否则为0。

cy  进位标志CY(PSW7)。它表示了运算是否有进位(或借位)。如果操作结果在最高位有进位(加法)或者借位(减法),则该位为1,否则为0

由于PSW存放程序执行中的状态,故又叫程序状态字?运算器中还有一个按位(bit)进行逻辑运算的逻辑处理机(又称布尔处理机)

根据指令执行的不同上述值会有相应的变化,也正是为了监测这些在单片机中看不到的值而达到调试的目的。

虽然软件调试无法实现硬件调试那样的信号输出,但是可以通过软件窗口的模拟监测输出信号的高低电平以及单片机相关端口的变化。

这是全部打开后的效果。

有了输出,就应该有输入的设置

这个按钮可以打开输入预设窗口,输入值窗口如下:

选择不同的Int Source 会有不同的 Selected Interrupt的变化,通过选择与赋值达到模拟输入的目的。

可以在代码所在窗口的最左边右击按钮插入一个断点,如下图所示:

有了这个功能,你就可以控制监控要执行到某位置时系统的状态。

最后在介绍一下一个很实用的功能:

这个是Disassembly Windows,按下后可以把C51 Disassembly 为相应的汇编语言,如果你有 相应的汇编知识的话就可以对比C51 与汇编的对比了。由于汇编的效率高很多,这也可以作为查看C51执行效率的一个方法。

上图中就可以看出,C51 代码是如何被解释为汇编的。

Keil C51调试程序时, 对ROM的查看以及RAM 查看或修改的更多相关文章

  1. Keil C51里关于堆栈指针的处理

    Keil C是非常优秀的C51编译器,可能是最好的C51编译器,提供各种优化模式,对变量的优化和地址安排做得非常好.这是用C语言写代码的好处之一,如果用汇编写,得费一大番功夫给各个变量安排内存物理地址 ...

  2. KEIL C51代码优化详细分析

    阅读了<单片机与嵌入式系统应用>2005年第10期杂志<经验交流>栏目的一篇文章<Keil C51对同一端口的连续读取方法>(原文)后,笔者认为该文并未就此问题进行 ...

  3. Keil C51内存分配与优化

    C51的内存分配不同于一般的PC,内存空间有限,采用覆盖和共享技术.在Keil编译器中,经过编译后,会形成一个M51文件,在其内部可以详细的看到内存的分配情况. C51内存常见的两个误区: A.变量超 ...

  4. Keil C51程序调试过程

    用Keil C51编写程序时,经常需要调试,如果不是经常用这个软件的话,很容易忘记这些调试步骤,现在举一个例子“验证延迟函数delay()使其延迟的时间为500ms”说明. 源程序写完后,就可以调试了 ...

  5. Keil C51软件的使用

    进入 Keil C51 后,屏幕如下图所示.几秒钟后出现编辑界 启动Keil C51时的屏幕 进入Keil C51后的编辑界面 简单程序的调试:学习程序设计语言.学习某种程序软件,最好的方法是直接操作 ...

  6. Keil c51现No Browse information available

    keil c51 不能使用:Go to Definition of....的解决方法 最近使用keil c51 开发usb固件,当向vc一样使用Go to Definition of....时,出现警 ...

  7. Hash查找法在Keil C51中的实现

    摘要:散列(hash)是一种重要的存储方法,也是一种常见的查找方法.它是指在记录的存储位置和它的关键字之间建立一个确定的对应关系.本文以射频卡门禁控制器为例,说明用射频卡卡号作为关键字,用Hash查找 ...

  8. Keil C51中函数指针的使用

    函数指针在C语言中应用较为灵活.在单片机系统中,嵌入式操作系统.文件系统和网络协议栈等一些较为复杂的应用都大量地使用了函数指针.Keil公司推出的C51编译器是事实上80C51 C编程的工业标准,它针 ...

  9. Keil C51 详细设置

    一.target名更改 打开Keil后,左侧Project Workspace中的target可改,方法:右击Target——Manage Compnents——双击待修改项即可,若要添加,使用对话框 ...

随机推荐

  1. android开发之使用拼音搜索汉字

    国庆回了趟家,昨天真不想走,离家近的感觉太好.唉,不扯这些,说说今天的正事吧. 上篇博客中介绍了自定义AutoCompleteTextView ,但是用到了一个很蹩脚的技术,就是我们事先把每个汉字的拼 ...

  2. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  3. 自己做的demo--左连接

    下面四张表是数据库中已经有的数据: 第一步: 1.left join左连接,left outer join 左外连接,只是写法不同,相同的概念. 2.左连接查出来的结果是一定包含left关键字左边的表 ...

  4. ActionLink 的一些小问题

    近日为群友解答问题时遇到一个问题 由于自己以前确实没碰到过 特此记录一下 起因是群友想要用htmlhelper实现这样一个效果 <a href="我是链接" class=&q ...

  5. Sqlserver通过链接服务器访问Oracle的解决办法

    转自http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 一.创建sqlserver链接服务(sqlserver链接oracle)  首先sqlse ...

  6. Oracle11g服务及实例

    1Orcl服务说明 1) Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备 ...

  7. windows 远程连接linux服务器

    百度搜索“SSH Secure Shell Client” 并下载 2 点击Profiles选择add profiles 并添加profils名称 3 点击Profiles 填写远程linux的ip ...

  8. CSS 边框

    CSS 边框属性 CSS边框属性允许你指定一个元素边框的样式和颜色. 边框样式 边框样式属性指定要显示什么样的边界.  border-style属性用来定义边框的样式 border-style 值: ...

  9. [C#][转]与MySql连接访问

    using System;using System.Configuration;using MySql.Data.MySqlClient;/// <summary>/// TestDate ...

  10. js隔行变色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...