搜索
bottom↓
回复: 408

题目:多功能按键设计。利用一个I/O口,接一个按键,实现3功能操作:单击 + 双击 + 长按。

  [复制链接]

出0入0汤圆

发表于 2011-8-28 14:15:17 | 显示全部楼层
简单处理的时候我也这样做,但老实说,用按键中断 + 定时器 可靠性才高也更容易将功耗降下去
另外,与或逻辑处理来识别长按或短按会更清晰一点,就像论坛中“三步按键识别”什么的,这样扩展性要好很多

PS:楼上很兄弟都拿“层”说事。清晰的软件设计哲学中最重要的名言是:Do one thing,and do it well!  
一个程序只做一件事,并且把它做好!
它的目标就是设计出高内聚、低耦合的源码。
其实一个函数就是一个抽象层。
不管有没有刻意去做,我们总将复杂的任务抽象出许多功能单一的不同的层。除非你的工程只有一个函数。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2011-8-28 14:51:43 | 显示全部楼层
回复【80楼】packer  
回复【78楼】ifree64
-----------------------------------------------------------------------
再次表达对资源不受限的同志羡慕嫉妒恨。还引入消息队列,我经常1个字节ram掰成2个nibble用(还有人知道什么是nibble吗)
回复【75楼】igoal
这也就是我想讲的,下面一层的代码不要帮助上层的代码做本来属于上层代码的工作,否则就破坏了代码的分层机制。
-----------------------------------------------------------------------
设计思想是这样的。但要因地制宜,灵活应用,不要太教条

-----------------------------------------------------------------------
你这说法就不对了,我上面说了,“一个函数就是一个抽象层”。“层”大家都在用,只是不同的人有不同的抽象方式,而已。
“高内聚、低耦合”的设计方式前人的经验总结。
软件设计中,可维护性和或扩展性应该是放在第一位的,第二位才是性能。分层设计,将复杂的任务分成功能单一的不同的层
是有利于可维护性的,并且也提高了扩展性。

PS:最近开始流行进来的 函数式编程 将“高内聚、低耦合”提高到了新高度:函数的输出只由其输入条件来决定。
所以不会有隐式的输入条件更不会有全局变量这此间接影响输出的东西存在。
为什么要这样做?

出0入0汤圆

发表于 2011-8-29 02:06:00 | 显示全部楼层
回复【84楼】packer  
回复【81楼】ufbycd
软件设计中,可维护性和或扩展性应该是放在第一位的,第二位才是性能。
-----------------------------------------------------------------------
sorry,在我的现实生活中,完成项目(很多时候是在用户限定资源内)拿到设计费才是第一位的。第二位是可靠性。你说的都要往后排。
回复【82楼】ifree64
主要在家电领域,成本极其敏感,而且经常甲方非常强势,做不到就不用你的。

-----------------------------------------------------------------------
无论有没有OS,当你做了稍大点的项目,你就会发现我说的没错。
在稍大点的项目中,可维护性和可扩展性直接影响到项目的成功与否及以后的维护成本的大小,
并且在设计过程中,如果需求不断变化没有好的可维护性和可扩展性你往往都是在重头开始,不断推翻之前的代码。
还有如果有多人参加同一项目……
好了,困了,不说了,睡觉……

出0入0汤圆

发表于 2011-8-29 09:14:17 | 显示全部楼层
回复【96楼】packer  
回复【95楼】ufbycd
-----------------------------------------------------------------------
这么打个比方,有个项目招标,为了可维护性和可扩展性,我需要用16krom的芯片,价格20元。而放弃可维护性和可扩展性可以用8k芯片,价格10元。(仅仅是个比方)
这时候你说我应该把谁放第一位?
而在项目资源足够的情况下,我不考虑可维护性和可扩展性,只能说我RZ。
所以在我看来,一切前提是完成项目。可能是在严酷的市场竞争中拼打多年,变的太现实了。
再回顾 81楼
-----------------------------------------------------------------------
igoal:这也就是我想讲的,下面一层的代码不要帮助上层的代码做本来属于上层代码的工作,否则就破坏了代码的分层机制
......
-----------------------------------------------------------------------
你选8K芯片并不代表没有任何维护性和扩展性。
只要你稍微考虑一下函数如何拆分、什么函数应该实现什么功能就会提高维护性和扩展性。
代码承载了两部分作用:实现功能和被人维护,也就是代码的功能和代码的质量。
不应过分追求代码的功能也不应过分地追求代码的质量,而应取折中,两手都要抓、两手都要硬,不偏废彼此。
Do one thing, and do it well!是最重要的思想,但实现起来一点都不难,也不会耗费过多的资源,只要多考虑下函数是什么层就行了

用过 MVC 设计模式的人就会知道,前期为了实现MVC进度会比不用设计模式的要慢点,但它的扩展性非常强,以后添加什么或需求有什么
变化都是非常容易实现的。
就如同《笑傲江湖》里所说的,“剑宗与气宗的区别”:
“剑宗功夫易於速成,见效极快。大家都练十年,定是剑宗占上风;各练二十年,那是各擅胜场,难分上下;要到二十年之后,练气宗功夫的才渐渐的越来越强;到得三十年时,练剑宗功夫的便再也不能望气宗之项背了。”
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 16:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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