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

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

什么是C语言?

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


C语言的主要功能包括以下内容。

  • C语言是用不同的关键字、数据类型、变量、常量等设计的软件。
  • 嵌入式C是给出以C编写的编程语言的通用术语,其与特定的硬件架构相关联。
  • 嵌入式C语言是C语言的扩展,带有一些额外的头文件。这些头文件可能在不同的控制器之间发生变化。
  • 单片机8051使用#include

什么是嵌入式C编程

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

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

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

嵌入式系统设计人员必须知道有关写入程序的硬件架构。这些程序在监控和控制外部设备方面发挥着突出的作用。它们还直接操作和使用微控制器的内部架构,例如中断处理,定时器,串行通信和其他可用功能。bob的是什么网站

嵌入式系统编程

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

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

因此嵌入式系统的编程对于处理器来说是非常重要的。有不同的编程语言可用于嵌入式系统,如C, c++,汇编语言,JAVA, JAVA脚本,visual basic等。因此,在构建嵌入式系统时,编程语言起着至关重要的作用,而语言的选择则至关重要。

构建嵌入式C程序的步骤

设计嵌入式C程序如下所涉及的不同步骤。

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

评论

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

在嵌入的C编程语言中,我们可以在我们的代码中发表评论,帮助读者轻松理解代码。

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

单行评论

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

多行注释

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

处理器指令

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

喜欢下面。

#包括
# include < reg51.h >
SBIT LED = P2 ^ 3;
Main ();
{
LED = 0x0FF
延迟();
领导= 0 x00;
}
#定义
# include < reg51.h >
#define LED P0.
Main ();
{
LED = 0x0FF
延迟();
领导= 0 x00;
}

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

港口配置

微控制器包括多个端口,每个端口都有不同的引脚。这些引脚可用于控制接口设备。这些引脚的声明可以在节目中在关键字的帮助下完成。嵌入式C程序中的关键字是标准的,以及比特,SBER,SFR的预定义,用于在程序中调出位和单引脚。

有一些特定的词是用来做特定的任务的。这些词被称为关键字。在嵌入式c中,它们是标准的和预定义的。关键字总是用小写字母写。在编写主程序之前必须定义这些关键字。关键字的主要功能包括:

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

sbit

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

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

示例:SBIT A = P2 ^ 1;

如果我们将P2.1分配为“A”变量,那么我们可以在程序中的任何位置使用“A”而不是P2.1,这会降低程序的复杂性。

少量

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

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

示例:位c;

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

SFR.

这种数据类型用于通过附加名称获取SFR寄存器的外围端口。因此,所有SFR寄存器的申报都可以用大写字母来完成。

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

例如:SFR port0 = 0×80;

如果我们分配0×80,如“port0”,我们可以在编程语言中使用0×80代替Port0,以减少程序的难度。

SFR注册

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

全局变量

当变量在键函数之前声明时,称为全局变量。这个变量可以在程序中的任何函数上使用。全局变量的生命周期主要取决于其结束前的编程过程。

# include < reg51.h >
unsigned int a,c = 10;
主要的()
{
...............
..............
}

核心功能/主要功能

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

# include < reg51.h >
主要的()
{
...............
..............
}

声明的变量

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

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

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

  • CHAR /签名的CHAR数据类型大小为1字节,其范围为-128至+128
  • unsigned char数据类型大小为1字节,其范围从0到255
  • Int/signed Int数据类型大小为2字节,其范围从-32768到32767
  • unsigned int数据类型大小为2字节,其范围为0到65535

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

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

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

{

  • 局部变量
  • 语句
  • ..............
  • ..............

}

  • 娱乐(1)

{

  • 局部变量
  • 语句
  • ..............
  • ..............

}

程序的逻辑

该计划的逻辑是一个出现在程序后面和可预测的行动输出的理论中的车道的计划。它解释了对嵌入式程序将工作的原因和显示行动的确认效果,否则解释说明的陈述。

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

嵌入式C程序的主要因素

选择用于开发嵌入式系统的编程语言时要考虑的主要因素包括以下内容。

项目大小

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

程序速度

编程语言应该非常快,所以应该尽快运行。由于速度慢速软件,不应减少嵌入式硬件的速度。

可移植性

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

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

C程序与嵌入式C程序之间的差异

嵌入式C和C编程之间的差异与操作环境和一些扩展相比,实际上并不多。这些编程语言是ISO标准,也具有大致相似的语法,功能,数据类型等。C编程和嵌入式C编程之间的主要差异包括以下内容。

C语言

嵌入式C语言

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

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

它在自然界中处理本土发展 它在本质上处理交叉开发
它是独立的硬件架构 这取决于微控制器和其他设备的硬件结构
C语言的编译器取决于操作系统 嵌入式C编译器是独立于OS的
在C语言中,标准编译器用于执行程序 在嵌入式C语言中,使用特定编译器。
这种语言中使用的流行编译器是GCC,Borland Turbo C,Intel C ++等 这种语言中使用的流行编译器是Keil,Bipom Electronics&Green Hillbob足球体育app
C语言的格式是自由格式 它的格式主要取决于所使用的微处理器的种类。
这种语言的优化是正常的 这种语言的优化是一个高水平
很容易修改和阅读 修改和读取并不容易
错误修复很容易 这种语言的错误修复很复杂

嵌入式C程序示例

以下是一些简单的嵌入式C程序基于微控制器的项目

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

优点

嵌入式C Programmin的优点包括以下内容。

  • 这很容易理解。
  • 它不断执行类似的任务,因此不需要更改附加内存等硬件,否则还能存储空间。
  • 它只是一次执行单一任务
  • 嵌入式c语言中使用的硬件成本通常非常低。
  • 嵌入式的应用非常适合工业应用。
  • 开发应用程序所需的时间更少。
  • 它降低了程序的复杂性。
  • 很容易验证和理解。
  • 它从一个控制器移植到另一个控制器。

缺点

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

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

嵌入式C程序的应用

嵌入式C编程的应用包括以下。

  • 嵌入式C编程用于不同的行业目的
  • 在应用程序中使用的编程语言是高速公路上的速度检查、交通灯控制、路灯控制、跟踪车辆、人工智能、家庭自动化和自动强度控制。

我们希望我们能够为初学者提供一种简单可靠的方式嵌入式C编程.了解嵌入式C程序设计是设计基于嵌入式的项目最重要的先决条件。除此之外,对嵌入式C编程更好的理解和正确的知识,在选择一个有回报的职业方面极大地帮助学生。

我们鼓励并欢迎读者提出疑问、建议和意见。因此,您可以在下面的评论部分发布您对本文的查询和反馈。点击下面的链接无焊料的项目

32个评论

  1. Saiguptha. 说:

    haiiii.

    我们在SBit A = 0x80中嵌入C程序中的Wittity;
    80所请我们可以为这个'80'表示解释

    1. tarun agarwal. 说:

      嗨saigupta.
      存储在i中的值是0x80,等于128的十六进制常数

  2. 伊凡 说:

    嗨,感谢您的这种有用信息,但我对您所显示的数据类型大小有一些疑问。我猜他们用16位字的机器更好地适合,告诉我我是否错了。还有关键字,它们是否特定于8051处理器?祝你有个美好的一天,提前感谢你。

  3. 曾经 说:

    这对对嵌入式好工作感兴趣的初学者来说真是个好解释。

  4. Leeladhar Muchal. 说:

    先生,0x00是什么意思

    1. tarun agarwal. 说:

      Haxadecimal

  5. Anurag辛格 说:

    谢谢你这个漂亮而有用的例子。

  6. swetha. 说:

    非常好的和清晰的解释

  7. Akshay Wagh. 说:

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

    谢谢

  8. amit jangid 说:

    这是一篇很好的文章,便于理解嵌入式编程.............
    比你先生!

  9. 快乐。Arava 说:

    嗨,这很开心。
    我想学习用C语言的嵌入式系统编程。
    所以,请指导我这样做......

  10. 基兰 说:

    不错的解释,你可以解释定时器和延迟概念

  11. jatin沙玛 说:

    你们在8051上有电子称量机的项目吗,它带有称重传感器和7段输出。如果有的话,请告诉我。

    1. tarun agarwal. 说:

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

  12. norh目的 说:

    谢谢. .兄弟,这对我很有帮助.....

  13. Syed Naseer 说:

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

  14. Lavanya. 说:

    不错的解释......,每年的程序也很清楚了解...做计划的步骤也很好的解释

  15. Vishnu Jadhav. 说:

    非常感谢你,先生,
    这就是我正在寻找的教程!!

  16. 梅鲁克 说:

    如何将IC附加到计算机中以将程序实现到芯片中?

  17. 泥库 说:

    你好,先生,
    你能给我建议一下lpc2148微处理器的嵌入式c代码吗?

  18. 泥库 说:

    嗨SIR可以为LPC2148 Micro处理器建议嵌入C代码

  19. Joby公司k穆 说:

    好兄弟..

    1. tarun agarwal. 说:

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

  20. adile. 说:

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

    1. tarun agarwal. 说:

      嗨Adil.

      后悔
      非常抱歉,我们不能提供电路图,文件,编码程序部分,但一旦你购买项目,我们可以提供。
      对于任何其他技术问题或定制项目,请发电子邮件给我们team@elprocus.com.

  21. 阿施施帕蒂尔 说:

    很好的解释。它清除了基本的东西。真的很有帮助......

    1. tarun agarwal. 说:

      嗨,ashish patil,
      谢谢你的赞赏。

    2. bharathi 说:

      这个解释我很容易就能理解

  22. 阿曼pandey 说:

    你可以给出代码吗?

    1. tarun agarwal. 说:

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

  23. 康科省 说:

    真的很好的解释......。我对Begginer ......我真的非常批准你,因为你不是因为这个东西的资金而受到动力..

    1. 团队Elprocus 说:

      嗨Konkyo,

      谢谢你的赞赏。

添加评论