当前位置:首页 > > 充电吧
[导读]近来发现坛子里的不少哥们对BASCOM-AVR比较感兴趣

  近来发现坛子里的不少哥们对BASCOM-AVR比较感兴趣,连双龙也开始关注了,作为一个老用户,觉得有义务给大家作个简单的评价,给打算学习BASCOM的朋友一个比较客观的意见,仅供参考,如有说得不对,欢迎指教。

    首先,它的优点是有目共睹的,我想选择它的哥们也一定是看上了它的这个优点:易用上手快,容易出成果!BASCOM确实很容易上手,2002年初我刚开始接触AVR的时候,就是完全靠它的HELP系统加老龙的SL系列实验开发器自己摸索的,就是现在,我也还经常在HELP系统中CTRL+C和CTRL+V例子代码,代码很简单易懂,对格式要求也不很严格,不用做芯片的初始化工作,有时就是连简单的CONFIG语句都省了,编译一样成功,但是C语言就要在写程序之前先写大量初始化芯片的语句,比较烦人。同时,它支持部分汇编语句也是值得高级用户称道的,如DDR=XXX语句就可以配置IO口的寄存器等,比CONFIG语句更灵活更好用,结合使用更是能随心所欲,方便极了。对于部分比较常用的模块化功能如读取RC5遥控编码,读写LCD等都简单到了一句搞定的地步,很适合业余开发者和学生兴趣班使用。

    但是它的某些方面确实有些问题!比较严重的是:

    1、程序结构化能力差。常用的功能想做成函数或模块调用以节省空间,但是最终往往达不到效果,而编译器却没有提示出错,给人摸不着头脑的感觉。例如,想把AD转换作为一个自定义函数,供主程序反复调用,但是最终转换结果却出现很多严重的错误,远远偏离正确值,如果直接把该段代码写在主程序模块中就一切OK,很是伤脑筋,这点对于程序规模比较大的,或是初学者是很不利的,解决办法只有将公用代码放在某个程序段中不断的GOSUB和RETURN,要想跟C语言的优秀的结构化风格比是不可能的。

    2、部分语句有兼容性问题。如RC5SEND语句,在90S系列芯片中完全通过,而在MEGA系列芯片中完全失效,没有任何动静,编译过程中又没有任何提示,这意味着MEGA系列无法使用这种简单的办法来扩展键盘了。

    3、用户很少,网上例子代码贫乏,无法跟其他用户交流,这点对于初学者比较惨。

    4、现成的算法少,很多需要自己重头研究编写,比较辛苦。

    5、程序代码空间的利用率低,完成同样功能的程序,编译的结果往往比C编译器的大的多,比如一个写LCD语句就会编译出几百的字节来,无法根据源程序大小来估计最终FLASH的使用率,而且一旦超出FLASH大小范围只有干瞪眼的份,无法根据自己程序的实际情况来优化空间,毕竟是调用现成的模块嘛。

    6、对硬件的操作很模糊,似乎隔离了用户跟硬件打交道的权利,这当然是为了给用户简单易用着想的,但当用户用了很多年BASCOM以后再想换换其他的编译器,却发现自己天天在用的芯片自己却一点也不知道它的硬件结构和使用方法,没法放弃BASCOM了,贪图方便的结果,惨啊!

    以上是我这些年研究BASCOM的“成果”,供大家参考。总体上来说,这款软件是可以给80分的,还算是不错的编译器,适合简单的作些端口控制的小程序,不适合包含大量算法和运算量比较密集的项目;适合像我这样的业余玩家(不过今年我已经逐步放弃BASCOM而转向ICC了)和作为非该专业学校的学生使用,不适合靠单片机混饭吃和将来打算深入研究的用户。

    另外,还想对坛子里某些哥们的一些观点提出异议:

    1、BASCOM语言的AVR开发工具编译出来的程序执行效率低。我认为,这恐怕是受了计算机GW-BASIC或是TURBO-BASIC时代的影像,想当然的把这顶帽子扣在BASCOM-AVR身上了,以前计算机的BASIC语言包括VB确实效率低,原因是他们生成的代码不是最终目标机器的代码,而是经过一个RUNTIME的程序在内存解释后运行的。而单片机的BASIC编译器是直接将代码编译成AVR相应芯片的机器码的,不需要在单片机的内存驻留RUNTIME程序,执行效率不会很低(垃圾代码多则另当别论),排除垃圾代码的影像,执行效率是跟其他编译器编译出来的一样的。

    2、BASIC语言结构化能力差。我认为这也是受了早期计算机教科书的误导而以讹传讹,BASIC发展到了QuickBASIC以后,结构化能力已经很强,具备很多结构化的思想和编程方式,已经具有函数、模块、局部变量、全局变量、数据传递等,已经摆脱了早期BASIC语言GOTO和程序行号的阴影,而上面我提到的BASIC-AVR结构化差的问题则是这个软件开发的个别问题了,毕竟它只能尽量兼容QUICKBASIC,这点在HELP里也说得很清楚了。

    乱七八糟谈了一大堆,有什么不对的还请各位大侠不吝赐教,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭