近日接到客户项目,要求编写一个使用51串口设置时间的闹钟项目,本来是轻轻松松半天搞定的事情,最后却是费了我整整一晚上,遇到的主要问题就是联调现象不对的问题,如图:

自已的上一个项目也是同样现象,仿真总是不出现象,无奈只好找出以前的例子来进行对比,或者准备“旧瓶换新酒”,其中无奈真是难受,发现同一个程序的情况下,在本编译环境下就是出问题,排除了程序的原因,那一定是Keil配置出现了问题,对比发现,在选择芯片的 Memory Model时,以前的程序都是选择的Small: Variables in DATA,而这个程序配置的是Large:variables in XDATA,会不会是这个原因呢:

将本程序设置改为Small后,果然现象正确:

为什么会出现这种现象呢?

对比两种编译的结果如下

可见,在选择Large:variables in XDATA时,大部分的data存储到了XDATA中,即外部RAM,而在硬件环境中,并没有对80C52进行RAM扩展,仅仅使用了片内的128B的RAM:

,  这样一来,也可能是程序在运行时将寻址不到存储于外部RAM中的数据,从而使程序出现异常。

除了选择内存模型外,在变量名前面添加存储区类型应该也是可能的解决方法:data char i=0;    以显式说明将该变量在内部RAM 中分配内存。不过,在程序所需要的数据区非常大时,扩展RAM还是比较通用的做法。

第一次比较真切的感受到在嵌入式编程中,内存空间的宝贵性,在编写程序时,一定要注意程序结构,减少不必要的内存开销,对于系统性能的提高与降低成本是非常必要的。

对Proteus与Keil联调过程中遇到的怪异现象解决方法相关推荐

  1. hadoop过程中遇到的错误与解决方法

    hadoop过程中遇到的错误与解决方法 参考文章: (1)hadoop过程中遇到的错误与解决方法 (2)https://www.cnblogs.com/zhjh256/p/10669881.html ...

  2. 计算机组装时遇到的问题,计算机组装及正常维修过程中遇到的问题和解决方法.doc...

    <计算机组装及正常维护过程中遇到的问题和解决方法> 指导老师:XXX 班级:XXX 姓名:XXX 学号:XXXX 计算机组装遇到的问题和解决方法 在安装之前要特别注意下面这些事项:第一.防 ...

  3. 使用遇到的问题_聚氯化铝在使用过程中遇到的问题及解决方法

    聚氯化铝在使用过程中遇到的问题及解决方法 随着现在工业的发展改良,现在的工业废水水质的变化幅度大,导致处理方面也有新的问题出现,常见的有聚氯化铝投入水中产生泡沫,药剂堵塞泵等问题. 聚氯化铝投入水中产 ...

  4. 将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法

    将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法 参考文章: (1)将html代码部署到阿里云服务器,并进行域名解析,以及在部署过程中遇到的问题和解决方法 (2) ...

  5. 记flume部署过程中遇到的问题以及解决方法(持续更新)

    项目需求是将线上服务器生成的日志信息实时导入kafka,采用agent和collector分层传输,app的数据通过thrift传给agent,agent通过avro sink将数据发给collect ...

  6. crossover的使用过程中出现的问题和解决方法

    crossover的使用过程中出现的问题和解决方法: 原因分析: 出现X11丢失的主要是因为缺少的X11软件包,这一错误在Mac OS 10.6系统上发生的频率比较高,在Mac OS 10.8及更高版 ...

  7. 硒鼓加粉过程中常见缺陷对照表及解决方法!

    硒鼓加粉过程中常见缺陷对照表及解决方法! 1.问题:底灰 原因:低湿高温;PCR(充电辊)缺陷;磁辊护套及涂层缺陷;PCR或电晕电接触点缺陷;OPC(感光鼓)缺陷;不良碳粉;高压电源不良. 解决方法: ...

  8. Tomcat启动过程中找不到JAVA_HOME解决方法

    在XP上明明已经安装了JDK1.5并设置好了JAVA_HOME,可偏偏Tomcat在启动过程中找不到. 报错信息如下:Neither the JAVA_HOME nor the JRE_HOME en ...

  9. 使用javamail发信过程中的一些问题及解决方法

    今天在研究javamail发信的过程中,出现了一些小问题,现总结如下,以免后来者走些不必要的弯路,先把完整的能够正常运行的代码示例粘贴如下:  发邮件源代码:  package com.hyq.tes ...

  10. JAVA项目中找不到tomcat_Tomcat启动过程中找不到JAVA_HOME解决方法

    在XP上明明已经安装了JDK1.5并设置好了JAVA_HOME,可偏偏Tomcat在启动过程中找不到. 报错信息如下:Neither the JAVA_HOME nor the JRE_HOME en ...

最新文章

  1. DCNv2 windows编译 2021ok
  2. POJ9384 迷宫(基金会BFS)
  3. python如何将生成的随机数存入文件中_用python在excel中读取与生成随机数写入excel中...
  4. jquery+ajax+ashx
  5. mysql5.1编译安装centos7_02: mysql 5.7 编译安装 (centos7)
  6. 暗黑破坏神java魔法护身,发个实用的贴!!暗黑+1+2技能护身符合成,望大家顶下,能加精...
  7. C++之保护和私有构造函数与析构函数
  8. ArcGIS操作小技巧(三)之License service不能启动的解决方法
  9. bug管理工具之禅道的测试模块的使用
  10. 防火墙 虚拟服务器,防火墙应用指南(二)——虚拟服务器的搭建-20210526012702.pdf-原创力文档...
  11. 微信打飞机--Java版
  12. Windows蓝屏的解决办法(如:UNEXPECTED_STORE_EXCEPTION蓝屏)
  13. 机械师笔记本电脑使用小常识
  14. 小米路由器 内核 linux,小米路由器配置ssh登入方法教程
  15. ciscoVLAN配置典型案例,很实用。
  16. python字符串的内部函数_「Python」字符串操作内置函数
  17. Java部分集合以及部分常用类
  18. windows下查看硬盘序列号、设备序列号、操作系统版本和安装时间、系统启用时间等命令
  19. C#不四舍五入保留两位小数
  20. POSIX Timer

热门文章

  1. 最新常用会计科目表及详细解释
  2. Python爬虫实战之爬取饿了么信息
  3. 欧姆龙PLC的FINS协议解释(实测通过)
  4. 计算机路径共享,如何访问共享文件夹路径
  5. itext设置字体间距_Java使用iText生成pdf
  6. RPM常用命令及RPM中文手册
  7. 2020美赛成绩什么时候出?
  8. mysql mpm_部署zabbix监控mysql (三) MPM插件介绍和部署
  9. 集合和数组区别_了解您的编码基础:集合和数组之间的主要区别
  10. AR/VR研究框架——迎接AR元年