前几天,帮朋友写了一个防丢器的程序,程序不太大,主要涉及到单片机编、解码和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
|