注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! 打开购物车 查看留言付款方式联系我们
初中电子 单片机教材一 单片机教材二
搜索上次看见的商品或文章:
商品名、介绍 文章名、内容
首页 电子入门 学单片机 免费资源 下载中心 商品列表 象棋在线 在线绘图 加盟五一 加入收藏 设为首页
本站推荐:
程序怎样写才能称得上短小、高效?谈写程序方法
文章长度[2833] 加入时间[2006/7/1] 更新时间[2024/3/23 21:52:45] 级别[3] [评论] [收藏]

短小、高效是两个很好理解的词语,对于写程序来说,就是要求代码短,体积小,程序功能正确,没有或者很少BUG(缺点或者漏动),执行时间短,占用内存少。

五一电子网站的全站ASP动态网页代码都是我一人用记事本写的,仅管在美工方面的确是不堪入目,但是,在“短小、高效”方面,我自己还是很满意的。

我没有上过大学,为什么我自学单片机汇编语言的进度还有这么快的速度?说我聪明,那只是我在自以为聪明,事实上,我估计,我最多也只不过能算得上中等偏下的智商。我要告诉大家的是,大家的智慧都差不多,只不过环境对人的影响不同罢了。

我拥有电子基础、有应用经验、有电脑基础的环境决定了我自学单片机最终能够获得成功,特别是在最后有了非常高速的进步,并且提出了《三十分钟学会单片机》这一超前的观念,当然,30分钟学会是有前提的,这只适合刚刚好在这个“会与不会”的十字路口徘徊的学员。

我现在将我写程序的一点方法或者想法写出来,希望对正在程序入门的朋友有点帮助。

我认为,写程序,首先要确定功能,再围绕功能去编写代码,因此,功能是第一重要的,如果程序写出来的主要功能达不到要求,这个程序就是卖不出去的废品;如果主要功能正常,但有一些严重的缺点,这就是不值钱的次品;如果主要功能正常,没有严重缺点,这只能是合格品,卖不出高价钱;如果全部功能正确,没有任何缺点,这就是优等品,可以卖高价钱。

第一步:确定功能。在这一步上,大家一定要符合实际情况,将全部的功能列出来,主要的功能,次要的功能,可有可无的功能都根据实际情况写下来。要想程序写得短小高效,这就很重要,对于单片机程序来说,这更重要,因单片机程序还受到有限的硬件资源限制。

第二步:功能理论验证。人心比天高,确定功能时总是会想得很好很好,有时可能会制定出不合实际的功能,或者功能最终能否实现,还需要验证。这是因为单片机的资源是限制,速度也是有限的。常见的情况是硬件资源不够用,再就是速度不够快,或者精度不够高。例如,如果硬要用89C51的芯片做LED点阵显示板,那么能存储的字符图形就非常少(这里不讨论外接存储器),如果硬要用89C51做点阵驱动还要做实时接收数据并计算,这样肯定也是做不来的。这时,我们就只好更换其它的单片机,例如89C52 ,89C58等等,必要时甚至可以更换16位、32位的单片机。
对于功能理论验证,这其实也就是在做一个大个框架。当然,一般的产品开发,如果不涉及到多媒体的图象、声音内容,用8位的51单片机基本上都是够用的,这也就是为什么计算机已经发展到64位了,而8位的单片机仍然占据市场主导,我们完全有理由相信,不论技术如何发展,8位单片机会永远存在,这就好象上世纪70年代,商场里没有今天这么丰富的千百种含高科技的食物,但是,现在人们依然在买卖着最常用的大米白菜,如果说大米白菜是基本食物,那么8位单片机就是基本单片机,会永远存在并实用。

第三步:做好原理方框图。这实际上是第二步的延伸,在第一步中,功能往往是客户的要求,或者自己的制作目的,但是,现在就是要把这种要求和目的让单片机实现。空白的单片机是什么都不会的,跟婴儿一样,会的只是本能的哭和吃,而这些本能就相当于单片机的指令,你输入任何一条指令,它都会执行,但这没有用,这不能帮你做任何事,离你的结果有10万8千里远。

这时,我们就必须分解我们的功能,分解成一个一个的小框框,一个小框框完成一个基本的功能。这些小框框对于最终的功能来说,可能是风牛马不相及的,但这是必须的。并且特别要注意的是,你现在还要为每个小框框分配物品和权利,让这些小框框最终能为需要的功能努力服务。第三步中,相当于画好了的工作原理以及方框图,并明确了各部分的功能和责任。

第四步:将小框框的功能用代码来实现。每个小框框的功能,都已经是很简单的了,所以是完全可以用代码来快速实现的。这里要说明的,小框框,相当于小小的子程序,我们不能将小框框分得太多太多,太多了会难以管理,所以,我们要尽量分成少少的框框,但又要求每个子程序的复杂程序我们能用代码方便的实现。到了现在这个时候,就相当于婴儿已经长大,已经会走跑了,会说笑了,但是,现在能帮你做出事吗?还不行,还需要组织协调各种动作,还需要一些技能培训练习。

 

第五步:调试验证修改程序。先要保证每个子程序的功能是能够实现的,再才能进行协调工作。这时,需要编程者全心全意专心致致的用严谨的发展的正确思维来调试程序。这里你相当于是在跟程序同步运行,程序运行到哪里了,哪些功能实现了,哪些功能不行了。实际上情况是,有时这里好了,那里又不行了,那里好,这里又不行了,有时甚至好象全部都好了,但有时又好象全部都不行了,完全不知道错在哪里。

第五步是最花时间最花精力的一步,能做到这一步的人,一定是会单片机的,仅管,到最后,他可能仍做出不来,最后也无法将程序调通,但是大家是会单片机了,剩下的差别就是经验的积累和灵感的发挥了。

第六步自然就是成功了。不过会有很多人卡在第五步,仍然到不了第六步。这里,我没有什么话好说,仅管,我自己认为,没有什么功能是用汇编语言写不出来的,我觉得我的51单片机汇编语言已经很好了,但我要告诉大家的事,吃亏时往往是在很简单的事上吃的。这里我只能讲讲第五步会用到的一些经验了。(也不用硬件仿真器解决问题的方法)

a、用软件仿真找死循环。
只要是程序死机那就是一定是进入了死循环,我们可以按全速,然后再按停止,这时光标所在的行或者子程序就是故障相关的地方。最多,我们可以多按几下,程序一定会停在有故障相关的代码部分,仔细检查分折这几句。

b、但是,上步有不灵的时候,因为程序运行正确与否还跟相关的数据有关系,这就要检查,是什么原历导致程序在这里失败?这就要一一排除其它子程序是否非法修改了相关的数据。

c、如果什么问题都找不到,那只好自己再加入简单代码来调试程序了。
一般,可以用多余的IO口(如果没有强行的借来用吧)对他进行取反操作,这样我们就可以在外部接个发光管或者用表示波器去测量了。例如,在串行中断程序加一条cpl p1.0,就可以通过观查或者测量p10的状态来知道程序运行的状态了。

如果P10从头到尾都是高,那就说中断从来没有调用来,如果只变低了,那说明只中断过一次,当然,长期中断就是产生方波了,测量方波就知道程序运行情况了。

再就是将数据用串口送出,电脑可以收到数据分析故障出在哪里

可以检查,

1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。
2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉! 以上可能是本站收集或者转载的文章,本站可能没有文章中的元件或产品,如果您需要类似的商品请 点这里查看商品列表!
本站协议 | 版权信息 |  关于我们 |  本站地图 |  营业执照 |  发票说明 |  付款方式 |  联系方式
深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102
E-mail:51dz$163.com($改为@);Tel:(0755)27947428
工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389