单片机产品的成本是非常敏感的。
想用python和ruby和java又没内存处理器又太慢,想用.net又嫌贵(M¥有wince或micro framework),所以只能用C/C++了,无奈面对单片机的C++编译器又没有一个靠谱的,所以就只能用C语言了。
基于成本原因,对于单片机开发来说,最重要的是在极其有限的ROM和RAM中实现最多产品的功能。或者反过来说,实现相同的产品功能,所需要的ROM和RAM越小越好,因为一般来说ROM/RAM越小单片机越便宜。C++的高级特性引起的代码体积膨胀比C大得多,这一缺陷是致命的。以前有过Embedded C++,去掉了一些标准C++的复杂特性,但是用的人不多,因为单片机产品的业务逻辑一般没那么复杂,用C就绰绰有余。
学习C语言对学单片机还是有一定作用的,因为单片机的应用阶段,也就是熟练掌握单片机原理和基础知识后,一般原意用C来编程,可以减轻很多工作量,毕竟汇编语言对于大多数人而言是比较深奥点。
应该有关系。以前使用单片机用汇编语言,但是编程比较麻烦,如果掌握C语言可以在计算机上编好程序,然后再下载到单片机中。总之,应该好好掌握C语言。
对于单片机来说,汇编,C都可实现编程,编译器会根据写的程序翻译成单片机的机器码,不存在哪个芯片专用C或汇编; 只是汇编和C有各自的优缺点。
一般来说汇编的程序更接近于机器码,小程序执行效率高,但是单片机种类不同,汇编语言也相差很大,比如51,pic,AVR,ARM;
C语言编属于高级语言,具有可移植性,能够结构化编程。使用标准C语言的程序,几乎都可以不作改变移植到不同的微机平台上,对于嵌入式等的微控制芯片,属于标准C语言的部分也很少需要修改,而且程序很容易读懂。
C语言编写程序结构清晰,移植性好,容易维护和修改。
为什么说学单片机用C语言比较好?为什么说C语言的可移植性好?
汇编语言,需要你了解该单片机的各个寄存器,端口。这些和单片机的硬件关系很大,所以你需要知道这个单片机的硬件结构,而移植到另一款单片机时,由于硬件结构不同,可能就不能用了
而C语言,不需要知道硬件方面是怎么运算的,将数据放在哪个数据区。而且C语言是高级语言较易理解和掌握。
所以说,C语言比较好,可移植性好