原创 发现Keil软件的一个小bug,已经核实无误!

2009-3-11 22:16 2745 7 18 分类: MCU/ 嵌入式
Keil软件模拟运行时,其中ATMEL公司的AT89C51SND1这款芯片的两个内部寄存器地址定义错误,将BRL、BDRCON寄存器地址错误的定义成了0x9A、0x9B,正确地址应该是0x91、0x92.

导致在软件模拟仿真时凡是涉及这两个寄存器的操作都将无效,并且由于错误可能还会出现误操作。

现在还没找到可行的解决办法,仔细看了Keil的系统文件,似乎并没有开放更改此地址的接口,但应该可以通过更改系统的二进制文件实现,不过我还没找到究竟应该改哪里!

现在的一个解决方法是将错就错,将这两个寄存器的地址定义改为错误的0x9A、0x9B即可,待实际下载运行时再更正过来!

如果有可以直接更正的方法,望一定赐教!

配置文件可以这样写,方便开发工作的进行:
#ifndef keil_debug
Sfr (BRL     , 0x91);  // 正确的定义
Sfr (BDRCON  , 0x92);
#else
Sfr (BRL     , 0x9A);  // 这是错误的地址定义,仅调试时用,Keil的仿真文件错了
Sfr (BDRCON  , 0x9B);
#endif

在电脑上模拟运行时,增加一行:
#define  keil_debug
实际下载前再次编译,并取消此定义即可。

本人不才,这个问题我差不多花了一整天的时间才给找出来,实在太难找了,尤其当你使用内部专用的波特率发生器并且使用printf函数时,仿真时将必死无疑!就死在这个printf函数里!而且最让你郁闷的事情是,模拟运行不行,但实际运行却正确无误!如果你对自己的代码不确信,总相信电脑,一直想让它能仿真通过的话,那不知要浪费多少时间了!所以,千万别迷信电脑,也不能迷信大名鼎鼎的Keil!

我所知道的受影响版本至少是8.02和8.16A版,其它版本我没试了!

我也搜索到有人因为此问题发帖,希望对你有用,有用留个言啊^_^
PARTNER CONTENT

文章评论11条评论)

登录后参与讨论

用户145263 2009-4-4 10:51

细心啊。顶

cnchip_906380433 2009-3-24 11:21

汇编的东西很久没用了,你再仔细检查一下! 一般来说汇编是天马行空随便搞,呵呵,仔细检查下!

用户194809 2009-3-18 18:58

能帮忙解决一下这个问题吗?我在汇编的时候遇到的,还不知道怎么办,希望能不吝赐教,感激不尽。 http://bbs.ednchina.com/adi/showtopic.aspx?id=103456

用户1034027 2009-3-16 14:36

谢谢提醒了,下回要留个心眼了

用户1285123 2009-3-15 00:51

对啊,是不斯不是头文件的,寄存器定义都可以改的嘛

cnchip_906380433 2009-3-14 18:59

楼上几位不是今天都加班吧?今天可是周六啊,辛苦啦! LS,不是头文件,是keil仿真的软件错误,就是软件模拟芯片内部的寄存器地址搞错了,或者说是keil关于这款芯片的数据库出现了错误,影响其实也没啥,就是万一让你碰到了可能会非常郁闷!因为这是反其道行之的,通常都是模拟运行没问题实际却有问题,而这个是实际运行没有问题软件模拟运行有问题,晕吧^_^

用户1442376 2009-3-14 16:35

楼主的意思是头文件错了吗? 直接把安装目录相应的头文件txt改一下行不?

用户527013 2009-3-14 11:02

支持一下!向您学习!

用户137602 2009-3-14 10:50

细心哦

tengjingshu_112148725 2009-3-14 10:17

这样居然被你发现了:)好有耐性啊:)
相关推荐阅读
planckreg 2012-02-07 21:59
这是垂死前的挣扎吗?
这是垂死前的挣扎吗? 88M的更新,强制你安装,除了可恶至极我真不知道该如何形容! ...
planckreg 2011-09-28 15:22
整车厢的空位,竟然买不到票?why?
2011年9月26日,下午17:30多吧,肯定不到18点,合肥火车站自动售票机上,查询当天合肥到上海的动车,结果直接返回提示:无符合条件的结果!但我很确认肯定有车的,于是买了张到南京的先上车再说,进大...
planckreg 2011-09-14 10:53
Nokia竟也干这种事...
强制用户升级,否则软件无法运行。天哪,我得马上备份电话簿,否则你要是哪天真倒闭了我的通讯录怎么办?!...
planckreg 2011-03-04 15:18
斯坦福学生打破“常规”,利用一个频道同时实现信息收发
美国斯坦福大学(Stanford University)宣布,该大学研究生院的学生开发出了利用一个频道进行全双工通信、即同时进行数据收发的无线通信技术(英文发布资料)。使用该技术,频率利用效率将提高1...
planckreg 2010-11-30 16:03
ADF7021配置文件
在sourceforge注册了一个项目,目前上传了ADF7021的配置文件这个芯片的寄存器实在多,这个配置文件可以非常直观的进行设置,敬请更正并探讨;项目WEB页:http://adf7021.sou...
planckreg 2010-08-13 10:11
只要是Protel的图纸,10份有9份乱七八糟!!!
以下是Protel版图纸的常见问题,阁下敬请对照,没有以下问题简直不可能:1、器件封装不统一,同一个板子同一个器件封装不一致;2、同一个板子、同一种插件,引脚定义不一致;3、原理图中,name、num...
EE直播间
更多
我要评论
11
7
关闭 站长推荐上一条 /3 下一条