7427|12

7815

帖子

56

TA的资源

裸片初长成(中级)

楼主
 

Q&A:关于Keil uVersion x [复制链接]

自从毕业后,基本上就没碰过51了,这个版块也好长时间没精力理会。

最近看 计算机概论 和 算法导论 看得有点吃不消,打算换换口味。但是不知道干嘛,于是想起了曾经说过要完善的LC小工具。

于是,我开始修改,由于久没碰电烙铁,一时之间好像不想动了,于是决定先修理那个软件。

一步一步地也解决了两个小问题。然后在进行实质性的大改以前,我忽然想先 点算一下自己到底用了多少RAM,都怎么用的,以及自己写的子程序到底有多少是只用一次的(这些是在xu_changhua老师给我的建议里提取出来的修改方向。)

然后我渐渐发现原来我一点都不了解我用了两年之多的Keil
(嗯嗯,进入主题了)
你们呢?
玩51的人估计没有不玩Keil的,你们对它了解多少呢?

这个帖子,开出来,收集我自己以及各位坛友所想到的关于Keil的问题,然后希望了解知道的朋友帮忙回答,我们有问有答,互相提高对Keil的了解。
PS:有时候不要不好意思提出类似于 “Keil能不能.......”这样的问题,因为可能它真的可以这样哦?
那啥怎么说来着,没有做不到,只有想不到。
这里上传一份资料,是我在Keil官网下载的一份手册,不是那份很详尽的Keil uVersion 4 User's Guide,那份无法下载,而且虽然全,但一时半会要找到自己想要的还真难找。 [ 本帖最后由 辛昕 于 2011-8-11 21:08 编辑 ]

uv4.pdf

7 MB, 下载次数: 45

此帖出自51单片机论坛

最新回复

明了,我手头也没有仿真器。我记得硬件仿真的时候就没这个选项了   后来我就点io,然后示波器看。这样也能估计大概程序运行时间  详情 回复 发表于 2011-8-12 16:32
点赞 关注
个人签名

强者为尊,弱者,死无葬身之地

 

回复
举报

7815

帖子

56

TA的资源

裸片初长成(中级)

沙发
 

问题1

我们可以通过反汇编查看到机器代码的情况,但是,RAM呢,这次这个LCmeter里一个很大的矛盾就是由于复杂的运算使得RAM经常不够用,如果说只是变量,我有办法计算出它们到底占用了多少的空间,但是对于那些中间运算过程产生的,除了研究饭汇编代码(甚至还不知道能否算出来)
那么,是否有类似于查看ROM那样的窗口查看RAM到底都怎么用的吗?
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

板凳
 

问题2

我有印象,我曾经在什么地方见过或者我自己无意打开的一个窗口可以查看在程序里我写的函数或者声明的变量到底使用了多少次,可是后来我忘记了。

此问题我已经解决(变通解决):
KEIL 2我还没试过,KEIL 4下,在调试状态下,打开VIEW --->SOURCE WINDOW,可以看到你声明的变量和函数字样都在程序中出现了几次,于是我们可以变通考虑:
一般来说,一个函数由声明和 定义和使用组成,因此,使用多少次就等于 这个字样出现的次数减去2,或者减去1,假如你的函数定义在主函数以前
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

1万

帖子

16

TA的资源

版主

4
 
1、RAMROM那个有用,就是看程序写没写进RAM或FLASH中。
2、第二个好像不常用,因为没有意义。
此帖出自51单片机论坛
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

1908

帖子

7

TA的资源

五彩晶圆(高级)

5
 
我提一个吧

在用u2和u3版本的时候有的时候很想知道两条语句之间执行的时间,我记得当时我用软件仿真的时候有一个寄存器是记录时间的,但是在实物仿真的时候就没法计算这个时间了。
我的问题是,软件仿真的时候这个时间可信吗

另外,硬件实物仿真的时候可否看这个寄存器大概估计时间
此帖出自51单片机论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

6
 

回复 5楼 sjl2001 的帖子

手头没仿真。
不过你可以试一下,仿真的时候单步或者单指令执行的时候,看一下左边那个PROJECT WINDOW的REG,就是有寄存器那个,那里面有时间。
不过不知道,实物仿真时还有没这个窗口
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

7
 
那个输出窗口的data应该就是占用的ram空间吧,中间变量应该也是计算在内的吧,我猜有的时候在函数内的变量可能用过之后就释放了,所以有时候加一个或减一个变量ram空间不变,但是能编译通过的应该都没问题吧,要不然这个统计就没意义了
此帖出自51单片机论坛
 
 
 

回复

1469

帖子

0

TA的资源

五彩晶圆(中级)

8
 
另外,我感觉代码体积大是不是和多文件编译有关系呢?
如果把程序都放到一个文件里会不会体积小一点,记得好像在哪看过一句话,程序的可读性是用代码的体积换来的,要想增加可读性必然会使代码更复杂,占用更多空间。
所以说这次如果想尽量压缩体积的话,可以考虑一下汇编,我感觉就这个作品来说的话汇编应该不是很复杂,除了中间计算那部分
此帖出自51单片机论坛
 
 
 

回复

1908

帖子

7

TA的资源

五彩晶圆(高级)

9
 

回复 6楼 辛昕 的帖子

明了,我手头也没有仿真器。我记得硬件仿真的时候就没这个选项了   后来我就点io,然后示波器看。这样也能估计大概程序运行时间
此帖出自51单片机论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

10
 

回复 8楼 anqi90 的帖子

试试就知道了,等
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

11
 

回复 8楼 anqi90 的帖子

你说对了,复杂的就是那一部分。
如果是8位长度的数据,乘除都好说,糟糕的是出现了不止8位的,就算我不用LONG,估计INT逃不了吧?INT也是16位字长
再有,(最近被上班的LINUX中断折腾,所以具体对程序大改还没开始),现在还说不清,FLOAT到底能不能避免。如果不能避免,这个的计算估计更加复杂。
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

12
 

回复 8楼 anqi90 的帖子

我试了。
具体情况是,按照我那个重新组织的方式,RAM 95.1 CODE 3532
把所有程序放到一个源文件里,编译以后,RAM 95.1 CODE 3506
可以看到RAM是一样的,CODE的变化微不足道,完全可以忽略。

如图所见

[ 本帖最后由 辛昕 于 2011-8-12 23:46 编辑 ]

4.jpg (44.87 KB, 下载次数: 0)

4.jpg
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

13
 

回复 7楼 anqi90 的帖子

变化是肯定会变化的。

之前我还试过只增加一个浮点变量,然后把涉及的运算屏蔽掉,结果依然发现RAM不够用了。
当时就想不通了,一个浮点数也就4个字节,为什么就满了。
刚才试了试,发现不是这样,而是正常的从95.1变到99.1.

不过你说,增加一个变量RAM也不会变,这是不可能的。

[ 本帖最后由 辛昕 于 2011-8-12 23:59 编辑 ]
此帖出自51单片机论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表