查看: 403|回复: 0

查看天问的51单片机程序编译报表和内存报表

[复制链接]

4

主题

38

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2022-1-12 14:25:40 | 显示全部楼层 |阅读模式
本帖最后由 libai500 于 2022-1-12 14:51 编辑

[url=为什么说天问Block并非玩具 https://haohaodada.com/new/bbs/f ... d=475&fromuid=66537]为什么说天问Block并非玩具 https://haohaodada.com/new/bbs/f ... d=475&fromuid=66537[/url]
接自上一篇

本篇介绍一下天问Block中编写51单片机程序,如何查看编译器结果详细数据,包括内存使用情况和编译详情。
虽然教学视频中详述了各种知识,但我们依然从学习角度上,再次描述一些操作手法。
第一步,我们先写一个小程序。一如既往,先选择设备
如下图,我们选择STC8

第1步_选择STC8设备.jpg
第二步,选择一个普通简单案例作为示范
我们选择P4_1输出电平,最简单的GPIO操作
第2步_选择一个简单案例.jpg
选择案例后,程序被自动加载到页面上,如下图,非常简单的一个程序
第3步_简单案例图样.jpg
因为天问初始化指令是针对外部晶振的,我们用的是内部晶振,还是习惯的禁用初始化
如下图
第4步_禁用天问初始化.jpg
并改用直接的自动以晶振指令
第5步_添加晶振设置指令.jpg
选择好一个频率,这个频率要和最终单片机频率一致。
第6步_选择11.0592频率.jpg
选择字符程序查看,程序也很简单,

第8步_查看代码.jpg
程序设置了一个时钟变量,端口模式设定,还有端口置位为1的操作,如下图:
(题外话:晶振频率作为变量sys_clk出现时,专业人员肯定认为会引发由程序来计算一些时间基准数据,而并非编译器负责计算,这会让程序负担加重,实际上天问Block有一些底层服务脚本,来负责计算一些数据,并不一定在用户代码中,真正启用这个变量来增加MCU运算负担。有兴趣的朋友,可以仔细测试观察。专业人员也自然会知道如何取舍)
第11步_字符代码.jpg
第3步 编译这个程序,如下图
我们发现除了显示编译成功,并没有其他的信息,包括内存使用情况都没有
如下图
第7步_编译.jpg
第四步,直接从天问文件夹内找到报表文件
报表实际上就在天问安装目录里,路径是
天问Block\twen\out\
这个路径下有如下文件,main.lst和main.mem,见下图
第9步_编译结果文档.jpg
我们先用记事本打开main.men,如下图
第10步_记事本查看内存报表.jpg
上图中,R寄存器占用了8个字节,另有4个字节被程序占用(这四个字节应该就是那个32位的sys_clk变量占用了)具体情况下面汇编报表里也有明确报告,时间因素,我就不截图了)。因为程序很小,其余从0x0C开始,全部data归属于栈使用
ROM使用情况同样,因程序很小,仅使用了135字节,其中大部分是一些初始化代码
那么这程序代码详情在哪,我们看下一个文件main.lst。如下图
第11步_记事本查看编译结果.jpg
上面仅为主要任务部分的代码的截图,STC8端口模式设置,以及端口置位操作,一目了然。
机器码,汇编,C语言对照,都有据可查。即时行业顶级高手,也无非是需要最终获得这些资讯来判断编译器优劣并分析如何优化与改善C代码。
上面文章相关阐述,接近专业性,本人才疏学浅,也仅仅是向还不了解或初次使用天问Block的玩家说明这些信息如何直接获得,至于信息内容具体说明什么,各路高手自有分说,我就不班门弄斧了。

待续


回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|好好搭搭在线 ( © 好好搭搭在线 浙ICP备19030393号-1 )

GMT+8, 2023-2-8 19:10 , Processed in 0.312072 second(s), 34 queries .

Powered by Discuz!

© 2001-2023 Comsenz Inc.

快速回复 返回顶部 返回列表