找回密码
 注册
关于网站域名变更的通知
查看: 743|回复: 8
打印 上一主题 下一主题

单片机为什么要使用C语言

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-12-25 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 行者~ABC 于 2020-12-25 13:06 编辑 7 q& X/ ^6 W/ j) h1 d
6 V2 \) l$ j3 \# s$ d) c$ @0 Z* e
C向mcu(俗称单片机)8051上的移植始于80年代的中后期。客观上讲,C向8051 MCU移植的难点不少。如:
5 U) Y0 H( u/ `" x! V: E
·8051的非冯·诺依慢结构(程序与数据存储器空间分立),再加上片上又多了位寻址存储空间;
  
·片上的数据和程序存储器空间过小和同时存在着向片外扩展它们的可能;
  
·片上集成外围设备的被寄存器化(即SFR),而并不采用惯用的I/O地址空间;
  
·8051芯片的派生门类特别多(达到了上百种之多),而C语言对于它们的每一个硬件资源又无一例外地要能进行操作。
  
这些都是过去以MPU为基础的C语言所没有的。经过Keil/Franklin、Archmeades、IAR、BSO/Tasking等公司艰若不懈的努力,终于于90年代开始而趋成熟,成为专业化的MCU高级语言了。过去长期困扰人们的所谓“高级语言产生代码太长,运行速度太慢,因此不适合单片机使用”的致使缺点已被大幅度地克服。目前,8051上的C语言的代码长度,已经做到了汇编水平的1.2~1.5倍。4K字节以上的程度,C语言的优势更能得到发挥。至于执行速度的问题,只要有好的仿真器的帮助,找出关键代码,进一步用人工优化,就可很简单地达到十分美满的程度。如果谈到开发速度、软件质量、结构严谨、程序坚固等方面的话,则C语言的完美绝非汇编语言编程所可比拟的。今天,确实已经到MCU开发人员拿起C语言利器的时候了。
  
下面结合8051介绍单片机C语言的优越性:
  
·不懂得单片机的指令集,也能够编写完美的单片机程序;
  
·无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序;
  
·不同函数的数据实行覆盖,有效利用片上有限的RAM空间;
  
·程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。C语言对数据进行了许多专业性的处理,避免了运行中间非异步的破坏;
  
·C语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性;
  
·提供auto、static、const等存储类型和专门针对8051单片机的data、idata、pdata、xdata、code等存储类型,自动为变量合理地分配地址;
  
·提供small、compact、large等编译模式,以适应片上存储器的大小;
  
·中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办;
  
·提供常用的标准函数库,以供用户直接使用;
  
·头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;
  
·有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉;
  
·可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性等等。# V' Y5 S9 X+ C5 J9 O' c' S$ f
/ Y9 L9 G  B+ P

! W, Y7 m8 S0 G+ A0 d8 v
( n/ b& m9 I" q& U1 q

该用户从未签到

2#
发表于 2020-12-25 13:07 | 只看该作者
C语言方便呀,好学呀6 p4 M- [# C+ N1 |, w

点评

C语言方便移植  详情 回复 发表于 2020-12-25 14:14
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2020-12-25 14:14 | 只看该作者
    行者~ABC 发表于 2020-12-25 13:07: j& F8 F& r6 |
    C语言方便呀,好学呀
    # n' U; ^, Z  w% @% I2 A4 {8 x
    C语言方便移植
    + A: R& {! p7 B4 s% u+ \5 o. l6 G

    该用户从未签到

    5#
    发表于 2021-1-8 09:48 | 只看该作者
    51单片机资源有限, 一般使用汇编直接操作寄存的编程方法有利于充分利用其资源,灵活操控; C 亦能很好操作及控制,与汇编相当, 但比汇编编程简捷易用.

    该用户从未签到

    8#
    发表于 2021-2-25 11:56 | 只看该作者
    搞实时控制应该懂汇编,才知道如何在关键处优化代码。最近将一个仪器原来的汇编改为C。编译后C的机器码几乎翻倍了。

    该用户从未签到

    9#
    发表于 2021-2-26 23:07 | 只看该作者
    目前支持8051的编程语言就只有C51和汇编,你总不能选汇编吧
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-22 15:09 , Processed in 0.093750 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表