新手开发过程遇到的问题-小计

  • 1、STC15单片机程序的内置晶振频率如何设置?
  • 2、Keil5生成的程序文件大小如何查看?
  • 3、如果程序的变量过多,超过单片机的SRAM大小会怎么办?
  • 4、Keil中Memory Model和Code Rom Size说明
  • 5、定时器 中断服务程序运行时间过长会怎么样?(单片机中断服务程序动作的处理时间大于定时器定时时间会怎样?)
  • 6、stc15单片机下载相同程序,但是运行程序出现异常的可能原因

1、STC15单片机程序的内置晶振频率如何设置?

答:只需要下载时,如下图设置STC-ISP,需要多高的频率就设置多高的参数。

2、Keil5生成的程序文件大小如何查看?

答:如下图,在编译完成后,data表示单片机内部RAM所使用的空间大小,为17字节,xdata表示单片机片外RAM所使用的空间大小,为65字节,RAM用于存放变量;code表示程序文件的大小,为1230字节,差不多1Kb,占用的是单片机flash的空间。

3、如果程序的变量过多,超过单片机的SRAM大小会怎么办?

答:变量过多,超过idata和xdata的大小,那么编译时,不会报错,但是程序运行会崩溃,可能只有部分代码在运行,即不会完整运行全部程序。
例如: STC15W408AS片内集成512字节的SRAM,包括常规的256字节RAM (idata) 和内部扩展的256字节 XRAM (xdata),有8K的FLASH。如果data或者xdata的编译结果大于256,那么程序就会崩溃,不能完整运行,但此时,如果其中一个RAM没有用满,那么可以在变量声明前添加idata或者xdata,将变量移至另外一个RAM,使得RAM都没有用满,则程序会正常运行。实际上,应该避免用满RAM,应该留出20~30字节的部分空间,避免在运行复杂程序时崩溃,而简单程序运行时可能正常。

4、Keil中Memory Model和Code Rom Size说明

C51中定义变量时如果省略存储器类型,Keil C51编译系统则会按编译模式SMALL、COMPACT和LARGE所规定的默认存储器类型去指定变量的存储区域,无论什么存储模式都可以声明变量在任何的8051存储区范围i,但是把最常用的命令如循环计数器和队列索引放在内部数据区可以显著地提高系统性能。以下介绍一下Keil编译选项Target中的Memory Model和Code Rom Size的设置。

1、Memory Model(存储器模式)

SMALL模式   在本模式中所有的变量在缺省的情况下位于8051系统的内部数据区(这和用data存储类型标识符明确声明的一样,因此对这种变量的访问数据最快),在本模式中,变量访问非常有效,然而所有的东西包括堆栈必须放在内部RAM中,堆栈大小是不确定的,它取决于函数嵌套的深度。典型的,如果连接/定位器配置为内部数据区变量可覆盖,SMALL模式是最好的模式,但是SMALL模式的地址空间受限,在写小型的应用程序时,变量和数据放在Data内部数据存储器中是很好的,因为访问速度快,但在较大的程序中Data区最好只存放小的变量、数据或常用的变量(如循环计数、数据索引),而大的数据则放在别的存储区域,否则Data区就容易溢出。

2、COMPACT模式

COMPACT模式把变量都定位在MCS-51系统的外部数据存储器中,外部数据存储段可有最多256字节(一页 ),这是对变量的访问是通过寄存器间接寻址(MOVX @Ri)进行的。采用这种编译模式时,变量的高8位地址由P2口确定,因此,在采用这种模式的同时,必须适当改变启动程序STARTUP.A51中的参数PDATASTART和PDATALEN,用L51进行连接时还必须采用连接控制命令PDATA来对P2口地址进行定位,这样才能确保P2口为所需的高8位地址。

3、LARGE模式

LARGE模式中,所有函数和过程的变量以及局部变量数据段都被定义在51系统的外部数据存储器中,外部数据存储器最多可有64K,这要求用DPTR数据指针来间接地访问数据,因此,这种访问效率并不高,尤其是对2个或多个字节的变量,用这种模式访问数据程序的代码将会很大。

Code Rom Size(设置ROM空间的使用)

1、SMALL模式:只用低于2K的程序空间

2、COMPACT模式:单个函数的代码量不能超过2K,整个程序可以使用64K的程序空间

3、LARGE模式:可用全部64K空间

5、定时器 中断服务程序运行时间过长会怎么样?(单片机中断服务程序动作的处理时间大于定时器定时时间会怎样?)

答:单片机中断处理时间大于定时器定时时间,在下次中断时间到时,因为中断是同一类型、同一优先级,所以不会马上进入新的中断处理。而是在本次中断处理结束后,单片机又马上进入新的定时器中断函数,主函数中的语句可能会没有机会运行到,会影响后面中断的实时性。所以答案为:等待中断处理完再进入新的中断处理。

最安全的处理方式:中断服务程序里边的动作处理时间越短越好,有什么事放外面处理。中断的初衷是为了提高系统实时性,中断处理太长,会影响同级的中断响应,其它中断谈何实时。

附:解决高速大量数据的中断处理难题

1.在中断中,只接收。或只作一些简单的语句。2、在主程序中处理。

例如:在上图定时器中断服务程序中,count为1s和2s的标志位计数,中断时间是10us,整个服务程序运行时间小于10us(?)所以正常使用。2个PWM计数变量为控制呼吸灯的计数位,当注释掉1s和2s的标志位判断程序时,呼吸灯运行周期正常,当保留时,呼吸灯运行周期随着中断服务程序的运行时间的增大而增大。

6、stc15单片机下载相同程序,但是运行程序出现异常的可能原因

如果程序出现异常,建议给单片机重启,在连接usb转ttl的情况下,重启应该是断开负极,而不是断开正极,因为tx、rx接口同样会给单片机功能。如果只断开正极(tx、rx没断开),那么程序仍然有可能会运行异常。

【STC15】新手开发过程遇到的问题-小计相关推荐

  1. 小计合计总计表格_总计总计重复的Excel小计

    小计合计总计表格 Do you use Excel's Subtotal command to automatically create subtotals in a list? I prefer p ...

  2. jqgrid如何渲染表格数据_jqgrid,jquery_jqGrid pivot 增加分项小计,jqgrid,jquery,jquery插件,javascript,表格 - phpStudy...

    jqGrid pivot 增加分项小计 1.表格用的插件是jqGrid pivot. 想在每一个单数 下面的分项后面加一个小计.看了插件demo 没找到每个分项都可以有小计的. 总的横向和纵向总计都是 ...

  3. oralce rollup 小计合计_总计与小计–WITH ROLLUP

    rollup:汇总 在GROUP后加WITH ROLLUP来实现总计与小计,它会对每次分组的结果进行ROLLUP操作,产生汇总的结果,显示在行下. 在显示的时候可用GROUPING来判断当天是数据行还 ...

  4. ALV标准的分类小计功能

    添加字段的时候如下就可以实现了: CLEAR LIT_FCAT. LIT_FCAT-FIELDNAME = 'MENGE'. "需要汇总的字段 LIT_FCAT-REF_TABNAME = ...

  5. jQuery 内容文本值|| 案例:购物车案例模块-增减商品数量 || 案例:购物车案例模块-修改商品小计

    jQuery 内容文本值 <!DOCTYPE html> <html lang="en"><head><meta charset=&quo ...

  6. 【计算机本科补全计划】Mysql 学习小计(2)

    正文之前 昨天下午写了篇 Mysql学习小计,结果出乎意料的受欢迎?变相刺激了我多写点 Mysql?好吧,如尔所愿.我晚上反正还不知道学点啥,就把今天看的那个菜鸟教程学完吧,到时候估计一点了,就可以睡 ...

  7. ElementUI中el-table添加小计行之后调整在滚动条上方

    场景 找到要添加汇总行小计行的el-table <el-table v-loading="loading" :data="kqtjList" show-s ...

  8. ElementUI中el-table在表格最下方添加一列汇总小计行

    场景 el-table中的每列显示的是数字,需要在表格的最下面一行添加汇总行,计算每列的总和. el-table自带是否显示汇总行这个属性. 注: 博客: https://blog.csdn.net/ ...

  9. python pandas 数据透视表_python – Pandas数据透视表:列顺序和小计

    小计和 MultiIndex.from_arrays的解决方案.最后 concat和所有数据帧, sort_index并添加所有总和: #replace km/h and convert to int ...

最新文章

  1. 数据与分析领域的十大技术趋势
  2. hadoop 2.2 本地库编译
  3. linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)
  4. 清华大学 张春良 计算机系,南京张春良老师小学生信息学辅导
  5. 辽宁交通高等专科学校计算机专业宿舍,辽宁省交通高等专科学校宿舍条件怎么样 有独立卫生间和空调吗...
  6. js $.inArray
  7. 离散数学复习笔记(已完结)
  8. 网页设计基础知识汇总——超链接
  9. 【优化求解】基于天牛须算法PID控制器优化设计matlab代码
  10. SPARC架构下的反汇编(一)——SPARC简介
  11. 图像处理:推导Canny边缘检测算法
  12. 超实用的几个编程学习公众号
  13. 简一论币:8.15 ETH多头大放异彩 BTC上行蠢蠢欲动
  14. C# 程序创建word文件与表格
  15. 教务管理系统(免费源码获取)
  16. 大咖丨昆仑数据陈晨:工业大数据真正要做的是智能分析和智能决策
  17. ESP32 (WIFI)-AP、STA模式(14)
  18. 圆环显示数据html,圆环图怎么默认显示数据?
  19. 景观雕塑商城搭建应该注意些什么
  20. 51单片机控制ds1307驱动程序

热门文章

  1. TCP 协议中的 Window Size与吞吐量
  2. kafka-eagle工具安装部署
  3. 2022质量员-土建方向-岗位技能(质量员)操作证考试题库及答案
  4. 一种输电线路视频图像在线监测装置
  5. 哔哩哔哩2019秋招技术岗(前端、运维、后端、移动端)第三套笔试题
  6. 【读书笔记】壹百度--十年千倍的29条法则
  7. 转:壹百度-百度十年千倍的29条法则
  8. 高等几何——射影变换6
  9. 分众江南春:十年心智之争复盘,品牌如何占领用户心智
  10. react+ts导入图片,找不到模块“......logo.png”或其相应的类型声明。