单片机为什么一直用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通信的能力,那么语言和系统的选择就是找到最优开发路径的重要因素。
引用:单片机开发可以用哪些语言?-深圳宇凡微
相关问答
单片机 三大编程 语言 ?单片机主流编程语言包括:汇编语言、C51、Python语言。早期使用汇编语言比较多,现在最流行的C51,近几年开始出现使用Python语言。每种语言各有各的优点。单片...
st 单片机 用 什么语言 ?ST单片机、51单片机用汇编或者C语言,现在基本都用C语言编程,Arduino有自己的编程环境,用户也是用C语言编程。51单片机的编程:51单片机进入中国比较早,在早...
C 语言 与 单片机 C 语言 的区别急求?单片机c语言比起普通C语言增加了一些基本的指令,变量的赋值是16进制,当然单片机c语言只牵涉到普通c语言的基础部分。具体体现在:1、单片机中C的语法一般...
单片机 除了可以用汇编和c 语言 编程,还有其他什么编程 语言 吗?除了C和汇编,超子还接触过使用Arduino、Labview、Python以及Lua对单片机进行程序开发。不过这些相对比较小众,没有普适性。一、ArduinoArduino应该算是一种对...
三大编程 语言 ?JavaScript、Java和Python三大编程语言该报告基于对全球近15,000名开发人员和人力资源专业人员的调查。报告显示,每10个招聘者中就有6个(60%)认为科...
单片机 汇编 语言 中 CY AC OV 分别 是什么 意思?单片机汇编语言中CY(PSW.7)是进位或借位,来源于最近一次算术指令或逻辑指令执行结果。AC(PSW.6)是辅助进位或辅助借位,用于BCD码的十进制调整运算。OV(PSW.2...
51 单片机 和c 语言 关系?单片机和C语言的关系,可以比如你手中的电脑和你使用的高级编程语言的关系,当然,你用你的电脑加汇编语言也能编出你要的东西。它们的语法、运算符和变量规则都...
51 单片机 能识别和执行的 语言是 ?C语音是最最最常用的,也是最简单的C语音是最最最常用的,也是最简单的
go 语言 可以搞 单片机 吗?是的,Go语言可以用于单片机开发。Go语言是一种静态类型、编译型的语言,具有简洁、高效的特点。虽然Go语言的标准库对硬件支持较少,但通过使用第三方库和底层接...
JAVA、C、C++、Python同样是高级 语言 ,为什么只有C和C++可以编写 单片机 程序?菜农从1981年开始就涉足与嵌入式领域的编程,开始是汇编语言和宏汇编语言,后来是C语言及C++语言,其他语言可能有,但很少且无大出路。因为嵌入式领域的编程与...