单片机为什么还在用C语言编程?答案是:C语言是最适合单片机编程的高级语言。

这个问题的意思应该是:现在有很多很好用的高级语言,如java,python,VC等等,为什么这些语言不能用来编写单片机程序呢?那么这个问题的答案就是:不能不能,而是不合适。

一、单片机编程的特点

对单片机编程来说,首先要考虑的是单片机的程序空间和数据空间都是有限的,所以要让程序尽量短小精悍,以节省程序占用的存储空间。

第二、单片机编程的一个主要对象是对单片机的端口和内部寄存器的操作和配置,这个需要比较精确的时序控制。

第三、单片机算法运算中,尽量使用加法、减法、移位运算,因为乘法和除法运算会非常费时间,尤其是除法,会耗费很多时间,这对于速度本身就有限制的单片机来说,是一个很大的负担。

二、高级语言编写单片机程序的缺陷

高级语言可以实现更为优化的算法,更为方便的执行方案,但是,高级语言对程序存储空间的占用要比汇编和C语言多很多。这是最致命的一点,单片机有限的存储空间需要靠精打细算来设计程序,根本经不起高级语言臃肿的代码体积。

高级语言无法实现精确的时序控制。

三、C语言是一个折中选择

其实用C语言开发单片机也是一个折中方案,因为最适合单片机开发的编程语言实在太过晦涩难懂,并且每一种单片机的汇编指令有很大区别,所以想把一个程序从这种单片机移植到另一种单片机简直是痴心妄想,还不如重新写一遍程序。

而C语言代码执行效率高,也比较精简,更便于移植......所以在现今的单片机编程语言中,C语言才会占据绝对主导地位

作者丨悟空问答:老马识途单片机

学习C/C++编程欢迎关注笔者的学习专栏:C/C++学习笔记​zhuanlan.zhihu.com

单片机用python还是c语言_单片机为什么一直用C语言,不用其他编程语言?相关推荐

  1. 51单片机支持python么_macOS搭建51单片机开发环境

    1.概述 鉴于好多朋友平常工作电脑为苹果,再配一台 Windows 机器来开发 51 单片机,略显多余.为此,本文详细讲解在 macOS 搭建 51 单片机开发环境. 软硬件需求:macOS 笔记本或 ...

  2. 单片机双字节数乘法运算实验_单片机语音芯片既有flash又有EEPROM

    为什么单片机语音芯片既有flash又有EEPROM 单片机语音芯片运行时的数据存在于RAM (随机存储器)中,停电后无法保留RAM的数据时,如何在停电后不丢失数据呢?这需要使用EEPROM和FLASH ...

  3. 单片机led灯闪烁实验总结_单片机很好玩3,花三分钟,使用普通LED小灯,制作手机“呼吸灯”...

    上一节为了解决单片机 IO 电流驱动能力不足,导致 LED 小灯亮度不高的问题,借助了三极管.单片机的 IO 通过三极管开关 LED 小灯的电流,最后的确明显让小灯的亮度更高了. 使用电路模拟软件 还 ...

  4. python嵌入式系统开发_图解嵌入式系统开发之语言篇:初识Python

    一直忙于工作,似乎忘记了抽时间学习新知识,最近难得空闲,花了两天时间看了一下Python语法.作为工作中经常使用C/C++的人,学习Python的过程中最大的感受就是"似曾相识". ...

  5. 怎么烧录c语言_单的入门1 -- C语言 : 一门和芯片对话的外语

    正如标题所说,c语言是我们和各种芯片对话的语言(其他吹牛逼的话请去多找找专业书籍,我就不赘述了).我在本张只会讲解一些常用和简单的用法,便于大家入门和熟悉单片机的程序的设计原理. 第一招,开门见山. ...

  6. char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...

    21ic综合自网络信息 指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识.所以本文尽可能的通过一篇文章完全讲解指针. 为什么 ...

  7. java获取语言_如何在java中获取语言环境对象?

    我在框架Spring和Liferay中使用Java. 使用liferay我知道如何获得一个语言环境(对象有一些信息:语言,国家......),但现在我在一个没有与liferay连接的java类,我不知 ...

  8. 判断数组相同数c语言_单片机常用的14个C语言算法,看过的都成了大神!

    算法(Algorithm):计算机解题的基本思想方法和步骤. C语言入门视频教程_9天精通Linux C语言 - 创客学院​www.makeru.com.cn 算法的描述:是对要解决一个问题或要完成一 ...

  9. 唯一可译码判断c语言_单片机基础实验数码管原理与C语言

    数码管的原理 数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符.使用时,共阴极数码管公共端(com端)接地,共阳极数码管公共端接电源.每段发光二极管需5-10mA的驱 ...

最新文章

  1. [转]html5: postMessage解决跨域和跨页面通信的问题
  2. 字节跳动客户开发_实习|字节跳动 客户端实习生 1-5面 面经
  3. shell date 格式化
  4. 阿里云助力重庆打造“亚洲最智能大型城市”
  5. 第7章:Kubernetes存储
  6. 学习 lodash 源码整体架构,打造属于自己的函数式编程类库
  7. 超全局变量数组get post requerst resver的使用规则
  8. 如何把html转换cad,Tab2Xls插件(捷克版)将AutoCAD表格转换为XLS、CSV或HTML。
  9. 怎样在log4j.xml配置文件中引入变量:小公司经验较多的我和阿里UC等大公司经验较多的Boss,一些技术交流和探讨...
  10. XSD详解三 - 复合元素+总结篇
  11. 对文件夹添加共享属性!
  12. matlab getdata 仿照一个曲线 提取图像中的曲线数据
  13. 电动牙刷无线充电解决方案
  14. java 定时任务的实现_Java定时任务实现的几种方式
  15. python if简洁写法_Python - if-else 的多种简洁写法
  16. 大一下学期第十一周及以前学习总结
  17. 图灵C/C++图书阅读路线图
  18. 数仓4.0(三)------数据仓库系统(续)
  19. unity3d 音频无缝循环
  20. 2021 年最新的个人录制的前后端真正的免费编程学习视频

热门文章

  1. 交叉编译和交叉调试环境的搭建及使用
  2. 一种提高单片机i/o口驱动能力的方法
  3. linux 模块化编译,手把手教Linux驱动1-模块化编程 module
  4. The 2018 ACM-ICPC Chinese Collegiate Programming Contest B. Rolling The Polygon
  5. 启明云端分享| sigmastar SSD201/ SSD202D _OTA升级使用参考
  6. 启明云端分享|PX30核心板 怎么烧录
  7. 启明云端分享|ESP32 AT 相关资源从哪里获得?以及经常会遇到的AT相关问题
  8. android点击改变背景色的动画,Lottie-android 修改动画颜色
  9. python标准词匹配_用 Python 自动化办公能做到哪些有趣或有用的事情?
  10. 全志 强制隐藏导航栏状态栏 Patch