单片机为什么一直用C语言,不用其他编程语言?只有学过的知道
单片机为什么还在用C语言编程?答案是:C语言是最适合单片机编程的高级语言。
这个问题的意思应该是:现在有很多很好用的高级语言,如java,python,VC等等,为什么这些语言不能用来编写单片机程序呢?那么这个问题的答案就是:不能不能,而是不合适。
一、单片机编程的特点
对单片机编程来说,首先要考虑的是单片机的程序空间和数据空间都是有限的,所以要让程序尽量短小精悍,以节省程序占用的存储空间。
第二、单片机编程的一个主要对象是对单片机的端口和内部寄存器的操作和配置,这个需要比较精确的时序控制。
第三、单片机算法运算中,尽量使用加法、减法、移位运算,因为乘法和除法运算会非常费时间,尤其是除法,会耗费很多时间,这对于速度本身就有限制的单片机来说,是一个很大的负担。
二、高级语言编写单片机程序的缺陷
高级语言可以实现更为优化的算法,更为方便的执行方案,但是,高级语言对程序存储空间的占用要比汇编和C语言多很多。这是最致命的一点,单片机有限的存储空间需要靠精打细算来设计程序,根本经不起高级语言臃肿的代码体积。
高级语言无法实现精确的时序控制。
三、C语言是一个折中选择
其实用C语言开发单片机也是一个折中方案,因为最适合单片机开发的编程语言实在太过晦涩难懂,并且每一种单片机的汇编指令有很大区别,所以想把一个程序从这种单片机移植到另一种单片机简直是痴心妄想,还不如重新写一遍程序。
而C语言代码执行效率高,也比较精简,更便于移植......所以在现今的单片机编程语言中,C语言才会占据绝对主导地位
作者丨悟空问答:老马识途单片机
想要在程序员生涯内有更高的成就的话,C/C++就是一个既可以强化思维能力,又可以打好编程基础的编程语言,你想要做软件开发,成为核心程序员的话,学习C/C++的话笔者有一个C/C++的编程俩千人羣(Q艘索:C/C++编程学习13群 )你如果感觉自学C语言/C++语言有困难的话,有兴趣学习或者了解一下C/C++编程的小伙伴就可以进来交流。
单片机开发可以用哪些语言?
从单片机诞生开始发展到现在,单片机的规格并没有多大的变化,但是语言和支持软件的扩展为应用程序开发开辟了许多途径。多年来,单片机进行编程涉及两种语言的选择:C语言和汇编语言。但是随着现在可用于单片机的新语言出现,用户在应用程序设计中面临更多选择。
单片机开发语言
宇凡微单片机开发工程师表示,单片机开发用哪种语言取决于你正在处理的应用程序。当前主要有以下几种语言可以用于单片机开发:
(1)C语言与汇编语言
在单片机可以使用新语言之前,两个可用的选择是C和Assembly。在深入探索新语言之前,让我们简单看一下。C语是在20世纪70年代初开发的,也是一种流行的单片机语言。C可以和单片机一起使用,因为C有处理内存分配的能力,也可以执行if语句、循环、数学表达等复杂功能;汇编是 C语言的另一种选择。codec是一种比较古老的语言,通常使用特定于设备的代码,并且使用汇编工具来转换它。通过该语言,用户可以直接访问 CPU,在 CPU中精心调节程序,从而实现精确的计时应用。Composition提供了更好的 CPU使用量,以及 C不支持的其他指令,比如用特定的 BIT指令执行位操作。
(2)MicroPython语言
Python是一种功能丰富的解释性语言,具有简单、清晰、通用的特点。对于微处理器而言,这些功能也使得语言过于庞大。但物理学家 DamienGeorge在2013年“Kickstarter”活动的帮助下,能够把 Python修改为一个适合单片机的更小版本 MicroPython。MicroPython代码是根据 MIT许可开放源码的。这种语言使用了一小部分标准 Python库在微处理器的裸机上运行。该软件仅能运行256 k的空间和16 k的 RAM,但它被设计成与普通 Python完全兼容。
起初,它被设计为可以在基于 ARM的系统上运行,其中包括 BBC micro: bit, Adafruit Circuit Playground Express和 MicroPython PyBoard,现在还可以用于其他处理器,包括ESP8266和ESP32。MicroPython非常擅长于复杂项目的原型设计。举例来说,在ESP8266上, IoT项目可以创建一个 IoT项目,只需一些简单的函数调用,将 MicroPython项目连接到本地Wi-Fi点,然后开始向 MQTT代理传输信息。
(3)Blockly语言
Blockly是一个受 Google支持的开源编程库,它的目的是通过拖放块使代码更有逻辑。使用者不需要依赖于普通会话中不能用的单词和短语,而是把这些词组放入环境中,从而确定程序如何运行。举例来说,不需要编写 IF语句,用户就可以把 IF块拖拽到工作空间中,而且还可以把结果操作拖拽到 IF语句块中。
建立了模块之后,用户就可以用很多种语言(包括 JavaScript, Python, PHP, Lua和 Dart)导出它的 Blockly代码。由于 Blockly系统需要一个特殊的连接,并且不允许不兼容的块连接,所以 Blockly系统的一个优势就是几乎不可能出现错误(不是 bug或错误,只是老的错误)。虽然这种编程方法可以在许多平台上使用,包括 Micro Bit和 Adafruit Circuit Playground Express,但并非为最终的商用产品而设计。然而,它在原型设计阶段很有用,特别是当需要概念验证、了解设备细节时(如寄存器、配置位和 IDE配置)将会很有用。
(4)Arduino C++语言
虽然 Arduino编程语言被称为“Arduino编程语言”,但是实际上 Arduino是用很好的 C++编程的,并且使用了 Arduino特定库的子集。Arduino C++与传统 C++的不同之处是:一般的单片机例程,因为标准库 C++函数不能在它的功能和内存上运行。利用 C++这个小型版本使得该语言更易访问,因为很多设计者已经熟悉了常规 C++。事实上,通过使用编译器,可以用 C++编写代码,然后将其解释为 Arduino可用的代码。
采用 Arduino C++的优点是,它可以在商业环境中工作,比大型语言如 Python要快,而且可以高度移植。应用通用函数自动处理初始时在 ARM内核中为 Uno编译代码。
(5)BASIC语言
BASIC语言最早出现于60年代,随着个人电脑在80年代的兴起进入了它的鼎盛时期。BASIC (初学者的通用符号指令代码的首字母缩写)到今天仍在使用,这使得设计者能够把更多的精力集中于硬件,而更注重于软件。单片机上使用的BASIC的两个例子是PICAXE生产的,Microch使用PICASICSAMP(由Arallax生产)和PICAXE。BASIC是原型甚至硬件开发的好语言,但由于其速度慢、能耗低,BASIC应避免在商业产品中使用。
应用于单片机时, BASIC的解译将导致性能的降低。然而,这种语言的优点是高度可移植性。任何用 BASIC编写的代码都可用于任何带有 BASIC解释器的设备上。以往使用单片机时,设计者要选择自己喜欢的平台,再学习它所用的语言。现在,随着语言和软件的发展,语言可能会决定设计者使用哪种平台。假如设计者想要寻找一个特定的功能,如 GPIO支持、网络、通过 SSH通信的能力,那么语言和系统的选择就是找到最优开发路径的重要因素。
引用:单片机开发可以用哪些语言?-深圳宇凡微
相关问答
单片机 的 语言是什么 ?单片机的语言有C语言、汇编语言、BASIC语言等多种。其中,C语言是单片机开发中最常用的高级语言,因为其语法简单易学,代码可读性好,适合快速开发,并且可以直...
计算机或 单片机 能直接识别的 语言是 ?能直接识别的只有机器语言,机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的...
单片机 编程用的 是什么语言 ?单片机既可以使用汇编语言也可使用C语言来编写程序。这与选择的编译环境和下载方法有关。不过,对于初学者来说,最好使用C语言来完成。根据选定的单片机型号,来...
单片机 编程 语言 ?单片机编程用c语言开发,因为单片机需要非常底层开发语言,用c语言开发效率非常高,而且c语言可以非常灵活,对于控制硬件非常合适。c语言最大的好处是可以利用...
编写 单片机 程序用 什么语言 ?单片机一般用C语言或者汇编语言来编写程序。建议先学C语言,汇编语言要算地址,汇编语言比较难,所以建议先学C语言。汇编语言要算地址,大多数情况下,单片机运行...
单片机 编程一般用 什么语言 ?单片机编程用c语言开发,因为单片机需要非常底层开发语言,用c语言开发效率非常高,而且c语言可以非常灵活,对于控制硬件非常合适。c语言最大的好处是可以利用...
c 语言单片机是什么 ?c语言单片机指支持使用c语言开发的单片机,比如msc-51c语言单片机指支持使用c语言开发的单片机,比如msc-51
单片机 C 语言 中char究竟 是什么 意思啊?char有符号型型变量全称为signedchar一般缩写为char范围是-128~127uchar在C语言中不存在,会出现语法错误。unsignedchar是无符号型变量范围是0~2...
单片机 开发中,为什么经常选用C 语言 和 汇编语言 ? 申请方单片机开发经常使用汇编语言和C语言,是因为这两个语言有相对于其他语言的优势的。先说C语言吧。1、编译器容易实现。c能轻易地翻译成汇编,尤其是简...
单片机 为什么还在用C 语言 编程-牌子网C语言是最适合单片机编程的高级语言。对单片机编程来说,首先要考虑的是单片机的程序空间和数据空间都是有限的,所以要让程序尽量短小精悍,以节省程...