当前位置:网站首页>【深圳IO】精确食品称(汇编语言的一些理解)
【深圳IO】精确食品称(汇编语言的一些理解)
2022-07-01 07:01:00 【使者大牙】
Steam游戏:深圳IO
近期,接触到深圳IO这个游戏,在学习深度学习网络的主线任务中开启了汇编语言的支线任务,发现学习下汇编语言还是挺有趣的,而且还挺锻炼编程思维。
身为一个完全没学过嵌入式系统或者汇编语言的小白,目前已经“玩”了 38h,玩到了精确食品称这一关,记录一些理解。
讽刺的是,这个“Shenzhen IO”游戏并不能在国服玩,要注册海外账号才行。
精确食品称功能需求

和我们日常使用的电子秤别无二致,这个秤有“开机”,“关机”,“净重”(去皮)这三个功能。
代码实现

这个设计实现的思路很简单,左边的芯片用来判断目前电子秤的状态,在按下“按钮”后,应该开机(dat置1),还是关机(dat置0),还是纪录皮重,并把目前重量清零(dat置3)。
这个设计确实可以满足需求,但是看下结果,在全球玩家中属于吊车尾的段位。
而看到产品成本最佳是¥5,那毫无疑问:
这个电子秤是可以用一个MC6000实现的!
代码的优化思路
在学习高级语言的时候,往往会应用把多条简单的逻辑组合起来,做很复杂的功能的逻辑,也就是说,有的时候打代码,都可以“不带脑子”,只要按条件,简单粗暴地全部敲完就完事了。
但是这种做法,在汇编这种“低级”语言,往往行不通,主要因为:芯片限制了代码行数,而且汇编语言在嵌套逻辑中的能力,比较高级语言确实非常难用。
起码在深圳IO这个游戏中是这样的,涉及到嵌套逻辑,真的是非常头疼,而高级语言直接多写几层if就行了
所以在用汇编的时候,必须要“带脑子”,在写程序之前就要想好代码如何能做的精简且聪明。而我个人总结的最重要的方法就是:进行条件合并,找到关键条件。
代码优化方法
信号规划
如果只使用一块MC6000芯片,那可以操作的acc必须用来做净重,dat用为记录皮重(输入为毛重)
条件整理
本设计任务的核心重点&难点就在于如何区分“开机”,“关机”,“置零(去皮)”这三个功能。
①开机条件
- 按钮=100
- 重量(毛重)=0
- 皮重=999(开机前的状态必定时关机,关机状态定义为净重=-999)
②关机条件
- 按钮=100
- 重量(毛重)=0
- 皮重=0
③置零条件
- 按钮=100
- 重量(毛重)>0
- 皮重=0(目前皮重还是0,在下一个状态,皮重会等于此时的毛重)
下面开始整理合并,首先,三个功能可以合并成两个,开机和置零本质上是一个状态(开机皮重为0)
接下来,只要从以上条件中,找到最简洁的能区分关机和置零状态的充分条件就行了。
那就是:
①置零条件
- 重量≠皮重
②关机条件
- 重量=皮重
找到这个条件,就可以构建新的设计了。
设计优化

运行结果,world best design!
边栏推荐
- Is it safe to buy funds on Alipay? Where can I buy funds
- 关于“2022年度网络安全教育线上培训”相关问题的复盘和说明
- Pourquoi tant de gens sont - ils devenus des gestionnaires de produits? Quelles sont les perspectives de développement des gestionnaires de produits?
- (I) apple has open source, but so what?
- 盘点华为云GaussDB(for Redis)六大秒级能力
- 树莓派4的WiFi设置
- 【计网】(一) 集线器、网桥、交换机、路由器等概念
- SQL learning notes 2
- rclone 访问web界面
- MySQL constraint learning notes
猜你喜欢

Why are so many people turning to product managers? What is the development prospect of product manager?

How to use SCI hub
![[Electrical dielectric number] electrical dielectric number and calculation considering HVDC and facts components](/img/7c/2b1d4797f367cced51f36e8a1bb199.png)
[Electrical dielectric number] electrical dielectric number and calculation considering HVDC and facts components

ctfshow-web354(SSRF)

DC-4靶机

如何通过cdn方式使用阿里巴巴矢量图字体文件

How to draw a product architecture diagram?

JSP - 分页

Inventory the six second level capabilities of Huawei cloud gaussdb (for redis)

女生适合学产品经理吗?有什么优势?
随机推荐
On whether variables are thread safe
Esp32 - ULP coprocessor reading Hall sensor in low power mode
[lingo] find the minimum connection diagram of seven cities to minimize the price of natural gas pipelines
ESP32 ESP-IDF GPIO按键中断响应
How the esp32 deep sleep current is lower than 10uA
node中引入模块的原理
记一次线上接口慢查询问题排查
Summary of wechat official account embedded program to jump to wechat
【系统分析师之路】第五章 复盘软件工程(逆向净室与模型驱动开发)
北漂程序员深夜emo发帖求助:女朋友走了我很孤独 ......
為什麼這麼多人轉行產品經理?產品經理發展前景如何?
8 figures | analyze Eureka's first synchronization registry
Programming examples of stm32f1 and stm32subeide infrared receiving and decoding of NEC protocol
K8S搭建Redis集群
[lingo] find the shortest path problem of undirected graph
1286_FreeRTOS的任务优先级设置实现分析
自动化测试平台(十三):接口自动化框架与平台对比及应用场景分析及设计思路分享
[image processing] image histogram equalization system with GUI interface
Router 6/ 以及和Router5 的区别
The code generator has eliminated the styling of xxxx js as it exceeds the max of 500kb