打印

又是GOTO惹的事

[复制链接]
1661|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zwz7219|  楼主 | 2013-6-13 18:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前几天,帮朋友写了一个防丢器的程序,程序不太大,主要涉及到单片机编、解码和315MHz收发方面,硬件都已经搞定,绝对没有问题。

以前也写过同类的产品(指的是315MHz接收、解码方面),不过,那次是用 C 语言写的,这次就是要把它移植到汇编上。

原以为问题不大,一天可以搞定,但实际上,只是调试接收部分的程序就用了差不多4个小时,最后才发现,是少了一个 GOTO 语句。在处理完(接收信号)高电平后的程序没有加 GOTO 语句,因此就“直通”到处理低电平语句中去了。

这部分调试通过后,心情即高兴又郁闷,高兴的是终于调通了,郁闷的是明明写过的程序,还花了这么长的时间在上面。

写这篇小短文只是想勉励下自己,以后做事一定要认真、认真、认真、再认真,否则,定将付出“惨痛”的代价。

接下来,我想就 C 和汇编说一些自己的看法,行家就只当看笑话了。

其实,网上每年或每过一段时间总会有一些这方面的讨论(或争论)。两种语言的优缼点,我也不再多说,只是想说,C 和汇编各有长处和短处,在较大或大的应用方面,用 C 是所当然的,前几年我写程序大多数是用 C 写的,包括练手的程序也没有从汇编开始。

最近 1 年,在一家公司(在深圳,做收音机方案,现已辞职)写程序,用的单片机是台湾产的,C 语言不支持,只能用汇编,通过几十个程序的磨练,发现汇编也不是我原先想象的那么可怕,并且,切实感受到了汇编语言的精炼和写程序的随心所欲。

但说句实话,写程序的时候,真的想把那几句(或几十句)“废话”变成一句,那多爽啊!如下面这段:

if (Frequency >1080 || Frequency < 875)
{
    Frequency = 875;
}

在中国,收音机的 FM 波段接收范围是 87.5MHz-108MHz,从 EEPROM 中读取到保存的频率点后,要验证频点值是否在可接受的范围内,上面这段程序就是用于这个验证,用 C 很清爽,但用汇编写出就是邋邋遢遢的二、三十句了。

总之,我不贬低任何一种编程语言,它们谁也代替不了谁,小的应用,用汇编语言,可以在 C 语言办不到的情况下依然可以完成任务(我曾经写过一个温度显示的小程序,用 C 语言,无论怎么精简,也要少两个字节的数据空间,但用汇编后,还多了一个);在中型或大型应用方面,还是用 C 吧,否则,你会老的太快,并且,有的时候你会抓狂,如在前两年,AVR 单片机大涨价,直接导致我原先所在的那家公司里百十个项目要移植,如果程序是用汇编写的,你觉得后果会如何……

不管哪种语言,当你用到了,就学习它、使用它、精通它,让它变成你手中的利器。

最后,如果诸位有单片机项目需要外包、或者有老产品需要升级换代、或者想降低产品的成本,请联系我,详情请参看:

https://bbs.21ic.com/icview-564919-1-2.html

相关下载

相关帖子

沙发
highgear| | 2013-6-13 22:17 | 只看该作者
顶顶你吧。
实施与维护几个大型程序,就会明白 "写程序的随心所欲" 以后会付出什么样的代价。

使用特权

评论回复
板凳
原野之狼| | 2013-6-14 08:51 | 只看该作者
参与一个100人月的项目后  你就会有更深刻的体会

使用特权

评论回复
地板
zwp0822| | 2013-6-14 09:00 | 只看该作者
100人月

使用特权

评论回复
5
dirtwillfly| | 2013-6-14 09:04 | 只看该作者
原来是100人月,我还以为是100人的项目。
没参加过大项目的都不敢回复了

使用特权

评论回复
6
SunFans| | 2013-6-16 10:01 | 只看该作者
写代码随心所欲在我以前的部门那是铁定挨批的……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

95

帖子

1

粉丝