什么是嵌入式C程序及其结构为初学者

在早期,许多嵌入式应用程序是使用汇编级编程开发的。然而,它们没有提供可移植性。这个缺点被各种高级语言(如C、Pascal和COBOL)的出现所克服。然而,正是C语言在嵌入式系统中得到了广泛的接受,而且它还在继续这样做。编写的C代码更可靠,可扩展,可移植;事实上,更容易理解。嵌入式C编程是处理器的灵魂,在每一个嵌入式系统我们在日常生活中遇到过,比如手机、洗衣机和数码相机。每个处理器都与嵌入式软件相关联。首先也是最重要的是决定嵌入式系统功能的嵌入式软件。嵌入式C语言是最常用的程序的单片机

什么是C语言?

C语言是Dennis Ritchie在1969年开发的。它是一个或多个函数的集合,每个函数都是执行特定任务的语句的集合。
C语言是一种支持高级应用程序和低级应用程序的中级语言。在深入了解嵌入式C编程的细节之前,我们应该了解RAM内存的组织。


C语言的主要特性包括以下几点。

  • C语言是用不同的关键字、数据类型、变量、常量等设计的软件。
  • 嵌入式C是用C编写的编程语言的通用术语,它与特定的硬件体系结构有关。
  • 嵌入式C是C语言的扩展,带有一些额外的头文件。这些头文件可能会在不同的控制器之间改变。
  • 单片机8051# include < reg51.h >is used.

什么是嵌入式C程序设计

在每一个基于嵌入式系统的项目中,嵌入式C编程都扮演着关键的角色,使微控制器运行和执行首选的动作。目前,我们通常使用多种电子设备,如手机、洗衣机、安防系统、冰箱、数码相机等。这些嵌入式设备的控制可以通过嵌入式C程序来实现。例如,在数码相机中,如果我们按下相机按钮来捕捉一张照片,那么微控制器将执行所需的功能来点击图像并存储它。

嵌入式C编程
嵌入式C编程

嵌入式C编程构建了一组函数,其中每个函数都是一组语句,用于执行某些特定任务。嵌入式C语言和C语言是相同的,都是通过一些基本元素实现的,比如变量、字符集、关键字、数据类型、变量声明、表达式、语句。在编写嵌入式C程序时,所有这些元素都扮演着关键角色。

嵌入式系统设计者必须了解硬件架构来编写程序。这些程序在监控和控制外部设备方面起着突出的作用。它们还直接操作和使用微控制器的内部架构,如中断处理、定时器、串行通信和其他可用特性。


嵌入式系统编程

正如我们前面讨论的,嵌入式系统的设计可以使用硬件和软件。例如,在一个简单的嵌入式系统中,处理器是主要模块,就像系统的心脏一样工作。这里的处理器是一个微处理器,DSP,单片机,CPLD和FPGA。所有这些处理器都是可编程的,因此它定义了设备的工作方式。

嵌入式系统程序允许硬件检查输入和相应的控制输出。在这个过程中,嵌入式程序可能必须直接控制处理器的内部结构,如定时器、中断处理、I/O端口、串行通信接口等。

因此,嵌入式系统编程对处理器的设计至关重要。有不同的编程语言可用于嵌入式系统,如C, c++,汇编语言,JAVA, JAVA script, visual basic等。因此,该编程语言在构建嵌入式系统的过程中起着至关重要的作用,而语言的选择则是至关重要的。

构建嵌入式C程序的步骤

设计一个嵌入式c程序涉及到以下不同的步骤。

  • 评论
  • 指令的处理器
  • 配置端口
  • 全局变量
  • 核心功能/主要功能
  • 声明的变量
  • 程序的逻辑

评论

在编程语言中,注释对于描述程序的功能是非常重要的。注释的代码是不可执行的,但用于提供程序文档。要了解程序的功能,下面就做一个简单的方法来了解程序的功能。在嵌入式C语言中,注释有两种类型,即单行注释和主线注释。

在嵌入式C编程语言中,我们可以在代码中放置注释,这有助于读者容易地理解代码。

C = a + b;/*添加两个变量,它们的值存储在另一个变量C中

单行注释

一般来说,对于编程语言来说,单行注释对于澄清程序的一小部分非常有用。这些注释以双斜杠(//)开头,可以位于编程语言中的任何位置。通过使用这个函数,可以在程序中忽略整行代码。

多行注释

在编程语言中,多行注释以单个斜杠(/)和星号(/*)开始,用来解释一段代码。这些类型的注释可以安排在编程语言的任何地方,主要用于忽略程序中的整个代码块。

指令的处理器

程序代码中包含的行称为预处理器指令,可以用散列符号(#)跟在后面。这些行是预处理指令,而不是编程语句。
在真正的代码编译开始之前,可以通过预处理程序检查代码,并在通过常规语句生成代码之前解析这些指令。虽然有两个指令在编程语言中非常有用,但是有几种特殊的预处理指令是可用的

像下面。

# include
# include < reg51.h >
Sbit LED = P2^3;
Main ();
{
领导= 0 x0ff
延迟();
领导= 0 x00;
}
#定义
# include < reg51.h >
#定义领导P0
Main ();
{
领导= 0 x0ff
延迟();
领导= 0 x00;
}

在上面的程序中,#include指令通常用于组成像study和。h用于允许使用' C '库的I/O函数。#define指令通常用于描述一系列变量,并通过在特定指令(如宏指令)中执行进程来分配值。

配置端口

微控制器包括几个端口,每个端口都有不同的引脚。这些引脚可以用来控制接口设备。这些引脚的声明可以在关键字的帮助下在程序中完成。嵌入式c程序中的关键字是标准的,也像预定义的一样,像bit, sbit, SFR,它们被用来声明一个程序中的位和单个引脚。

有些特定的词是专门用来做特定任务的。这些词被称为关键词。关键字在c语言中是标准的和预定义的。这些关键字必须在编写主程序之前定义。关键词的主要功能包括以下几个方面。

# include < >
Sbit a = P 2^2;
SFR 0x00 = PoRT0;
一些C;
main ()
{
.................
.................
}

sbit

这是一种数据类型,用于访问SFR寄存器中的单个位。

该数据类型的语法是:sbit变量名= SFR bit;

例如:sbit = P2 ^ 1;

如果我们将p2.1赋值为“a”变量,那么我们可以在程序的任何地方使用“a”来代替p2.1,这降低了程序的复杂性。

这种数据类型主要用于允许随机访问存储器的位可寻址存储器,如20h到2fh。

这种数据类型的语法是:位变量的名称;

例如:一些c;

它是在一个小数据区域内设置的一个位序列,主要是在程序的帮助下用来记忆一些东西。

SFR

这种数据类型是通过一个附加的名称来获得SFR寄存器的外围端口。因此,所有SFR登记册的声明都可以用大写字母填写。

这种数据类型的语法是:SFR变量名= SFR寄存器的SFR地址;

例:SFR port0 = 0×80;

如果我们像“port0”一样分配0×80,那么我们就可以在任何编程语言中使用0×80来代替port0,以降低程序的难度。

SFR注册

SFR代表特殊函数寄存器。在8051单片机中,它包括256字节的RAM存储器,它分为两个主要元素:第一个128字节的元素主要用于存储数据,而另一个128字节的元素主要用于SFR寄存器。所有的外围设备,如定时器,计数器和I/O端口都存储在SFR寄存器内&每个元素包括一个单独的地址。

全局变量

当变量在键函数之前声明时,键函数被称为全局变量。这个变量可以在程序中的任何函数上使用。全局变量的生命周期主要取决于编程,直到它到达终点。

# include < reg51.h >
Unsigned int a, c =10;
Main ()
{
...............
……………
}

核心功能/主要功能

主函数是执行任何程序时的中心部分,它简单地从主函数开始。每个程序只使用一个主要函数,因为如果程序包含上面的一个主要函数,那么编译器在开始执行程序时就会感到困惑。

# include < reg51.h >
Main ()
{
...............
……………
}

声明的变量

与变量类似的名称用于存储值,但在程序中使用该变量之前,应该首先声明该变量。变量声明声明了它的名称和数据类型。在这里,数据类型只是存储数据的表示。在嵌入式C编程中,它使用四种基本数据类型,如整数、浮点数、字符在内存中存储数据。数据类型大小和范围可以根据编译器定义。

数据类型指的是用于声明不同类型变量(如整数、字符、浮点数等)的广泛系统。嵌入式C软件使用四种数据类型来存储数据在内存中。

' char '用于存储任何单个字符;' int '用于存储整数值,' float '用于存储任何精度浮点值。下表给出了32位机器上不同数据类型的大小和范围。大小和范围可能因机器不同的字大小而不同。

  • char/signed char数据类型大小为1字节,范围为-128到+128
  • unsigned char数据类型的大小是1字节,范围是0到255
  • 数据类型大小为2字节,范围从-32768到32767
  • Unsigned int数据类型大小为2字节,取值范围为0 ~ 65535

Main ();
{
无符号整数a, b, c;
}

嵌入式C程序的结构如下所示。

  • 评论
  • 预处理器指令
  • 全局变量
  • main()函数

{

  • 局部变量
  • 语句
  • ……………
  • ……………

}

  • 娱乐(1)

{

  • 局部变量
  • 语句
  • ……………
  • ……………

}

程序的逻辑

程序的逻辑是出现在理论背后的车道计划&程序动作的可预测输出。它解释了关于嵌入式程序为什么会工作的其他理论的陈述,并显示了行动或资源的公认效果。

主要
{
领导= 0 x0f;
延迟(100);
领导= 0 x00;
延迟(100);
}

嵌入式C程序的主要因素

在选择开发嵌入式系统的编程语言时要考虑的主要因素包括以下几点。

项目大小

每一种编程语言都占用一些内存,而嵌入式处理器(如微控制器)所包含的随机访问内存数量非常少。

程序速度

编程语言应该非常快,所以应该尽可能快地运行。嵌入式硬件的速度不应该因为软件运行缓慢而降低。

可移植性

对于不同的嵌入式处理器,可以编译类似的程序。

  • 简单的实现
  • 简单的维护
  • 可读性

C程序与嵌入式C程序的区别

除了操作环境和一些扩展之外,嵌入式C和C编程之间实际上没有什么区别。这些编程语言都是ISO标准,也有类似的语法、函数、数据类型等。C编程和嵌入式C编程之间的主要区别包括以下几点。

C语言

嵌入式C语言

通常,这种语言用于开发基于桌面的应用程序

采用嵌入式C语言开发基于单片机的应用程序。
C语言不是任何编程语言的扩展,而是一种通用编程语言 嵌入式C语言是对C编程语言的扩展,包括不同的特性,如寻址I/O,定点算法,多内存寻址等。

它处理自然的自然发展 它本质上处理交叉开发
它是独立于硬件架构的 这取决于单片机和其他设备的硬件架构
C语言的编译器依赖于操作系统 嵌入式C编译器是独立于操作系统的
在C语言中,标准编译器是用来执行程序的 在嵌入式C语言中,使用特定的编译器。
该语言常用的编译器有GCC、Borland turbo C、Intel c++等 这种语言中常用的编译器有Keil、BiPOM Electronics和green hill
C语言的格式是自由格式 它的格式主要取决于所使用的微处理器类型。
该语言的优化是正常的 该语言的优化是一个高层次的
它是非常容易修改和阅读 它不容易修改和阅读
Bug修复很容易 这种语言的错误修复是复杂的

嵌入式C程序示例

下面是一些简单的嵌入式C程序microcontroller-based项目

示例1
示例1
示例2
示例2
示例3
示例3
示例4
示例4

优势

嵌入式c程序的优点g包括以下内容。

  • 这很容易理解。
  • 它不断地执行类似的任务,因此不需要改变硬件,如额外的内存或存储空间。
  • 它一次只执行一个任务
  • 嵌入式c语言中使用的硬件成本通常非常低。
  • 嵌入式的应用非常适合于工业领域。
  • 开发应用程序所需的时间更少。
  • 它减少了程序的复杂性。
  • 很容易验证和理解。
  • 它可以从一个控制器移植到另一个控制器。

缺点

嵌入式c编程的缺点包括以下。

  • 一次只能执行一个任务,不能同时执行多个任务
  • 如果我们改变程序,那么也需要改变硬件
  • 仅支持硬件系统。
  • 它有一个可伸缩性问题
  • 它有一个限制,比如有限的内存,否则计算机的兼容性。

嵌入式C程序的应用

嵌入式c程序设计的应用包括以下。

  • 嵌入式C编程在工业中有不同的用途
  • 应用程序使用的编程语言有高速公路测速、交通灯控制、路灯控制、车辆跟踪、人工智能、家庭自动化、自动强度控制等。

我们希望我们已经成功地为初学者提供了一种简单而平易近人的方法嵌入式C编程。了解嵌入式C编程是设计嵌入式项目最重要的前提。除此之外,更好地理解和正确地了解嵌入式C编程对于学生选择一个有价值的职业非常有帮助。

我们鼓励并欢迎来自我们的读者的查询、建议和评论。因此,您可以在下面的评论部分发表您对这篇文章的疑问和反馈。请点击下面的链接无焊料的项目

32个评论

  1. saiguptha 说:

    haiiii

    我们知道在嵌入式c程序中sbit a=0x80;
    请问80是什么意思,我们可以解释一下80的意思吗

    1. 塔伦阿加瓦尔 说:

      嗨Saigupta
      存储在i中的值为0x80,一个十六进制常数,等于128

  2. 伊凡 说:

    嗨,谢谢你提供这些有用的信息,但是我对你显示的数据类型大小有些疑问。我想它们更适合16位的文字机器,如果我错了请告诉我。还有关键字,它们是特定于8051处理器的吗?祝你愉快,提前谢谢你。

  3. 曾经 说:

    对于那些对嵌入式工作感兴趣的初学者来说,这是一个很好的解释。

  4. Leeladhar Muchhal 说:

    你好,先生,0x00是什么意思

    1. 塔伦阿加瓦尔 说:

      Haxadecimal

  5. Anurag辛格 说:

    感谢这个很好的和有用的例子。

  6. swetha 说:

    非常好的和清楚的解释

  7. 阿卡什瓦夫 说:

    我认为这是理解嵌入式编程的最佳文章之一.............

    谢谢

  8. amit jangid 说:

    这是一篇很好的文章,可以帮助您轻松地理解嵌入式编程.............
    比你先生!

  9. Happy.Arava 说:

    你好,我是快乐的。
    我想用c语言学习嵌入式系统编程。
    所以,请指导我去做……

  10. kiran 说:

    很好的解释,你能解释一下计时器和延迟的概念吗

  11. jatin沙玛 说:

    您是否有8051电子称量机的项目,带有测压元件和7段输出。如果你有……请告诉我。

    1. 塔伦阿加瓦尔 说:

      嗨Jatin沙玛
      很抱歉,我们没有你所要求的确切项目。
      如需任何技术咨询或项目定制,请发送电子邮件给我们team@elprocus.com

  12. norh目的 说:

    谢谢. .兄弟,它真的帮助我.....

  13. Syed Naseer 说:

    你好先生,
    这对嵌入式C编程的初学者来说是非常有用的信息。

  14. Lavanya 说:

    好解释……每一个程序也很清楚的理解…做程序的步骤也很好的解释

  15. 毗瑟挐jadhav 说:

    非常感谢,先生,
    这就是我一直在找的教程!!

  16. Mayukh 说:

    如何附加一个集成电路到计算机实现程序到芯片?

  17. chandu 说:

    你好先生,
    你能建议我嵌入式c代码的lpc2148微处理器。

  18. chandu 说:

    你好,先生,你可以建议嵌入式c代码的lpc2148微处理器

  19. Joby公司k穆 说:

    好兄弟. .

    1. 塔伦阿加瓦尔 说:

      嗨Joby公司,
      谢谢您宝贵的欣赏。
      同时,请将您的要求发送到我们的官方邮箱:team@elprocus.com

  20. 需要代码在c&c++ 1位置传感器触发霍尔效应X_position 70动作发生
    2种子传感器y_rpm计算频率
    3-pwm
    4-mass传感器meassurement
    5-temperature传感器
    以上都要准备好刻录源文件

    1. 塔伦阿加瓦尔 说:

      你好阿

      后悔
      我们很抱歉的通知你,我们无法提供电路图,文档,编码程序部分,但是一旦你购买这个项目,我们可以提供。
      如需任何其他技术查询或定制项目,请发送电子邮件给我们team@elprocus.com

  21. 阿施施帕蒂尔 说:

    很好的解释。它明确了基本的东西。真正的经验……

    1. 塔伦阿加瓦尔 说:

      你好阿施施帕蒂尔,
      谢谢你的欣赏。

    2. bharathi 说:

      超级解释,我很容易就能理解

  22. 阿曼pandey 说:

    你能告诉我密码吗

    1. 塔伦阿加瓦尔 说:

      嗨,阿曼Pandey,
      我们很抱歉地说,我们不能提供代码和文件,除非你从我们购买一个项目。
      如需定制项目,请发送电子邮件给我们team@elprocus.com

  23. konkyo 说:

    很好的解释……我真的很感激你,因为你做这些事不是为了钱…

    1. 团队Elprocus 说:

      嗨Konkyo,

      谢谢你的欣赏。

添加评论