控制/MCU
C语言简介
C语言是1972 年在美国AT&T公司的贝尔实验室的丹尼斯·里奇为了移植与开发 UNIX 操作系统,而设计开发的语言,其代码的可读性和移植性远远超过汇编语言。C语言也是一种高级语言,我们知道高级语言在效率和代码空间上都不敌汇编,但一方面C语言具有指针,该功能使其能对硬件地址进行直接操作,另外C语言通过编译器的优化,很大程度提高了执行效率,降低了程序空间,在对实时性要求较高的场合,还可通过对C语言可嵌入汇编代码来实现功能。而对于较大的程序,无论从开发的速度、结构的清晰等方面来比较,C语言比汇编具有更多的优势。
C 语言标准是于 1988 年由美国国家标准协会(ANSI,全称 American National Standard Institute)制定的。
至 1973 年起,UNIX 操作系统完全使用 C 语言编写。
目前,C 语言是最广泛使用的系统程序设计语言之一。
大多数先进的软件都是使用 C 语言实现的。
当今最流行的 Linux 操作系统和 RDBMS(Relational Database Management System:关系数据库管理系统) MySQL 等都是使用 C 语言编写的。
C语言能运用于大多数软件开发场景。
甚至后续很多其他高级语言都是使用C语言开发的。
以上都是C语言的一些常规优势,下面我们再来看看使用C语言进行单片机编程的一些优势:
●作为高级语言,可读性强,不依赖于机器,移植性好。
●可直接访问物理地址,程序执行效率高。
●可进行位操作,可提升寄存器访问效率。
●拥有复杂的数据类型可增强对程序处理的能力。
●即使不懂得单片机指令集,也能编写单片机程序。
●具有常用的标准函数库。
●具有专门针对MCS-51单片机的code、data、idata、pdata、xdata等存储类型,满足不同需求,并能自动为变量合理分配地址。
●具有small、compact、large等编译模式,可适应不同大小的片上存储器。
总之一句,可读行强,功能先进,效率高,可移植性好。
看明白看吧,这里还是在说为何选择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语言中也有关系运算符只是他们的写法你不一定认识,比如>,<,<=,>=,==,!=,它们的具体使用说明如下:
C语言中还有逻辑运算符比如&&,||,!,
因为计算机是使用二进制,所以C语言中还有位运算符,使用说明如下:
以上很多运算符你之前可能都只见过符号不认识含义,在C语言中未来编程方便还有许多赋值运算符。你可能想到=,但还有+=,-=,*=,/=等等,更多你没讲过的,一起来看看:
还有一些用的多的,又是初学者很容易搞混的运算符,如下:
因为内容比较多,我们在这一节就先简单了解,后面编程具体使用时再详细介绍。
和数学中的运算符具有优先顺序一样C语言中的运算符也有优先顺序,他和数学中的运算符优先级差不多,但因为多了很多,我们平时编程时需要记住它们的优先顺序,否则结果可能不如你意,当然我们在不清楚的情况下使用括号来限定运算范围是很好的习惯,现在我们看一下C语言中的运算符优先级:
全部0条评论
快来发表一下你的评论吧 !