C语言是1972年由美国AT&T贝尔实验室的Dennis Ritchie为了移植和开发UNIX操作系统而设计开发的。 它的代码比汇编语言更具可读性和可移植性。 C语言也是一种高级语言。 我们知道,高级语言在效率和代码空间上都不如汇编。 但一方面,C语言有指针。 该函数允许它直接对硬件地址进行操作。 另外,C语言利用编译器的优化大大提高了执行效率并减少了程序空间。 在实时性要求较高的场合,还可以通过C语言嵌入汇编代码来实现该功能。 对于较大的程序,C语言在开发速度和结构清晰方面比汇编更有优势。
C语言标准是由美国国家标准协会(ANSI,全称:美国国家标准协会)于1988年制定的。
截至 1973 年,UNIX 操作系统完全用 C 语言编写。
目前,C语言是应用最广泛的系统编程语言之一。
大多数先进的软件都是使用C语言实现的。
当今最流行的Linux操作系统和RDBMS(Relational Database Management System:关系数据库管理系统)MySQL都是用C语言编写的。
C语言可以用于大多数软件开发场景。
甚至其他很多高级语言都是用C语言开发的。
以上是C语言的一些一般优点。 我们来看看使用C语言进行单片机编程的一些优点:
●作为高级语言,可读性强,不依赖于机器,可移植性好。
●可直接访问物理地址,程序执行效率高。
●可进行位运算,提高寄存器访问效率。
●拥有复杂的数据类型可以增强程序的处理能力。
●即使不懂单片机指令集,仍然可以编写单片机程序。
●具有常用的标准函数库。
●具有专门针对MCS-51单片机的code、data、idata、pdata、xdata等多种存储类型,满足不同的需求,并能自动为变量分配合理的地址。
●具有小型、紧凑、大型等多种编译模式,可适应不同大小的片上存储器。
总之,可读性强、功能先进、效率高、可移植性好。
读清楚。 这里还是说说为什么选择C语言进行开发。 上一节太长了。 如果您不想阅读它,请阅读本节。 如果你想练习这个技能…
C51编译器
51单片机的开发和编译器有很多。 现在比较有名的是IAR for 8051编译器和KEIL for C51编译器。 不过,这两个软件都不是免费的。 官网提供的免费版本有使用限制。 另外,还有一些编译器是免费的,但需要一定的基础。 不建议初学者使用它们。 等你强大了之后就可以自己配置编译环境了。
我简单介绍一下两个免费的编译器:可以跨平台使用的开源编译器sdcc。 有时间的话可以查一下资料,自己搭建一下。 以后有时间的话我会做一个教程。 另外,微软提供的免费且功能强大的代码编辑器Visual Studio Code也可以配合一些第三方插件工具实现各种单片机编译功能,效果也不错。 我们稍后会讨论这个。 IAR for 8051编译器和KEIL for C51编译器都可以从官网免费下载。 您可以自行下载并安装。 下面的内容以KEIL for C51编译器为例。
C语言变量类型和数据范围
有C语言基础的朋友可能不会看或者简单看一下。
什么是变量? 变量自然是相对于常量而言的。 常量是确定的数据或字符(字符串)如1、2、3、4.5、10.6等,而变量则与中小学方程中的a、b、c…x、y、z相同。 它们可以是1,也可以是2,或者任何其他数字。
过去,数学中的正数、负数、整数和小数都可以是无限的。 然而,由于计算机系统内部空间的限制,在C语言中,除了名称与数学中学到的不同外,数据范围也有一定的限制。 C语言中,基本数据类型分为字符型、整型、长整型和浮点型,它们的数值范围不同。 而且,C51中的数据范围与传统计算机平台略有不同,并且将来在其他微控制器中也可能有所不同。 这都是由单片机的硬件属性决定的。 这一点不需要背,但是以后编程的时候可以多理解一点。 只要关注并具体问题具体分析即可。 我们平时编程的时候,也应该考虑数据类型的合理使用。 正确地为变量分配数据类型可以避免数据溢出并节省内存空间。 优化程序时还应考虑数据类型的合理符合。
C51数据类型和范围见下图:
C语言基本运算符介绍
就像小学学习数学时的加、减、乘、除等运算符号一样,这些运算也包含在C语言中,只是有些表达方式不同,还有其他额外的运算符号。 在C语言编程中,加减乘除余数的符号有:+、-、*、/、%。 另外,C语言中还多了两个运算符++和–。 它们的用法是一样的。 一种是加1,一种是减1。以上运算符称为算术运算符。 具体功能如下:
和数学中的关系运算符一样,C语言中也有关系运算符,只不过你可能不认识它们的写法,比如>、